I obviously favor being a contractor over a permanent position at a company. That's
not to say that if the right offer came along I wouldn't entertain it, but generally
speaking I really enjoy the contractor lifestyle. For any of you who may be interested
in jumping in but are a little nervous about the temperature of the water I have
written a
few guidelines
that might help to make the transition a little easier.
This is a difficult market to be looking for a job, but that comes with the territory
of a technology marketplace. I feel sorry for all those big company employees who
have lost their jobs, because many of them have lost the skills of finding new employment.
It makes me glad however that I'm a contractor, because I believe we are
better suited to weather a difficult job market.
Since I started programming in C# in 2002 it has quickly become the language I use
for almost every project. It's really quite amazing to note the speed at which this
technology has taken hold of the industry.
I only have one sample from the many projects I have done so far simply due to scheduling
constraints, but more are coming in the future.
If you've used Response.Redirect(url) in your ASP.NET applications you've no doubt come across the sparsely
explained ThreadAbortException. Here you'll find an explanation and two simple solutions.
I've rarely been to a job interview for which I was qualified and not been
offered the position. This certainly doesn't mean that I was necessarily more qualified
than the other applicants, but it does mean that the hiring manager thought I was
a better fit for the position. There are a few things you can do in an interview
to
tip the scales in your favor.
Since I began contracting the longest I've been out of work, unwillingly, is a week.
That's a pretty good record considering I was steadily employed through the .COM
bust. I attribute a good portion of this to having a good résumé, without which
I would have never been granted the interview.
Many of my business colleagues who were looking for work asked me to review their
résumés and provide feedback, and I found that I had quite a bit to say on the topic
and was repeating myself to a different person every couple of weeks. So instead
of fielding more requests on this topic I've compiled the thoughts in one location:
Designing a Contractor Résumé.
At almost every contract I've held I've been offered a permanent position by my
manager or the manager of another group, but I have yet to take any of them up on
their kind offers. Each of those companies had a lot to offer a prospective employee,
and a few of them expressed surprise that I wouldn't jump at the chance to sign
on, but there are some very
compelling reasons to remain a contractor.
When I set out to start my own company I didn't have much of a plan. I expected
it to fall into the category of "Just hang your shingle out and fend off the wave
of business requests." It didn't exactly go that way...
What I realize in retrospect is that I didn't have a plan for my company. I didn't
really know where I wanted to take it and my uncertainty kept me floundering. It
took me a while to realize that in the absence of luck you need to
have a goal for your company if you want to be successful.
There are a lot of these multiple-reader single writer locks available. There is
an excellent one written by Jeffrey Richter that you can find in his book Programming
Applications for Microsoft Windows, but it lacked something I needed for a specific
job I was working on. I needed a class that allowed for multiple reentry into the
lock from the same thread or arbitrary object. Thus my MRSWSync class was born.
This script allows you to launch any Windows Scripting Host file on another
computer. You may need to have the latest Windows Scripting Host installed.
This script file will allow you to set the Microsoft Exchange 2000 mailbox manager
schedule with a simple script. Use it with the RunRemote script below and set all
your mailbox servers at once from a central location.
This is a simple class for cryptographically manipulating strings.
Do you work with VARIANT dates? Or DBTIMESTAMPs? Or maybe you prefer time_t, tm or FILETIME?
Well, I got so fed up with converting one type of time to another that I finally wrote a
class that did it all for me. I don't know if this class can be used in commercial software
since I shamelessly "reused" code from Microsoft's olevar.cpp in MFC for two of the functions,
but it sure is nice for internal applications!