I have been a Web Application Development Contractor since 1999, first working on site for Sprint and then Hallmark. I was then contacted by a client in California to develop a website in a 100% telecommuting capacity. I have worked a total of 17+ years telecommuting for clients throughout the United States. Of course, contracting doesn't mean you will work at home. Most contractors work on site. Today, I'm going to discuss some of the benefits versus challenges of being a contractor.
1) You always risk the potential loss of income between contracts: Unless you subcontract through an agency, most contract positions last 6-12 months and then you're out of work unless you or your agency can immediately find you another job. Some agencies will pay you a "bench" fee while they find you another job; that is if they deem you are valuable enough to keep around.
After leaving Hallmark in 1999, I have worked as an independent contractor and when my contracts end, I am responsible for finding another client. Fortunately, God has blessed and I typically have someone contact me via email the last week of my contract, asking if I'm available for a new position.
Two years ago I was on the bench for 3 months when a six month contract turned into two months and another company kept stringing me along saying, "In two more weeks..." every two weeks! LOL. But even that was in God's plan, because I was then hired to contract for the GSA, which pays well and has lasted nearly two years, and I telecommute!
2) Typically there are No Benefits: Unless you work as a sub-contractor, you can count on no benefits, such as no health insurance and no vacations. Health insurance isn't a concern if you have insurance through your spouse's employer.
Our family hasn't had a vacation since I was pregnant with our 17 year old. We have had a few 2-day vacations, but no real vacations. The problem with planning for a vacation is that when you are contracting, your company does NOT want you taking off for a week or more to go on vacation. They didn't hire you for six months just to have you leave. Then when you are between jobs, you don't want to spend your money on a vacation and risk needing it for food and groceries. So count on no vacations unless you can put away six month's salary in savings and feel confident that when you get back, you'll find another job soon.
Optionally, you can ask the future employer if they can wait a few weeks before you start. Typically, they want you now. And typically, to plan a really nice vacation and get bargain deals on flights and hotels, you have to plan well in advance.
3) You are typically responsible for your own training: Most employers expect you to know what they've hired you to do and don't offer on-the-job training as they do with their full-time employees. Therefore, after your 8 hour day, plan to spend some evenings and weekends keeping up with newer technologies so that when your contract ends, you will be able to apply to jobs that require the latest technologies. Permanent employees can get by with just knowing what their employer requires of them to get the job done. But as a contractor, you are expected to know everything, and if you don't, you won't be getting many jobs, if any.
I spend evenings and weekends learning the latest .NET technologies. I typically use the job boards to find out what types of skills employers are requiring for contractors. Then I get the latest books through interlibrary loan (they'll find you a book from all over the United States, so you don't have to read out-dated material), and I'll read it in the evening or on Sundays. Then I'll create a working project utilizing that technology so that I can hit the ground running on any new potential contracts. If I can work it into my existing contract position, I utilize the technology on the job as well.
4) You must pay self-employment taxes and quarterly taxes: Depending on if you subcontract and what your recruiting firm provides, you may be responsible for your own self-employment taxes and will need to plan on paying taxes quarterly and setting aside money for those taxes. If you are receiving a W-2, taxes are taken out by the employer, but if you are on 1099, you are responsible for making your own tax payments.
5) You risk having deadbeat clients: Fortunately, most of my clients have paid me and paid me on time. One client was always very slow at paying and I had to constantly ask. Another paid me slowly for several months, and then one month kept saying the check was in the mail while I continued to work. The check was never in the mail and I never did get paid for the last month of work for him. So it can be a risk. Since that experience, I require all new clients pay a $5000 retainer fee up front, unless they are a major corporation.
So why would someone want to become a self-employed contractor?
1) The boss is great. :)
2) Working full-time on the same job with the same technology for years can seem stagnating. If you want to be challenged and always work on and learn the newest technologies, then contracting can provide you that opportunity.
3) If you get stuck on a job where there is a co-worker or boss who is making your life miserable, you can rest assured that the contract will end in a few months and you can move on. So it's easier putting up with the politics.
4) Even with self-employment taxes, no benefits, etc., contracting can typically pay better than being a permanent full-time employee. There are many risks, but if you're good at socking away your excess money into savings, if you are a hard-worker and self-motivated, contracting can be very rewarding.
5) You can make long-term friendships with many clients. Nearly all of my clients have come back to me for contract renewals, additional contracts, or small tasks for weekend work. So once you build up a client base, you can have repeat business.
If you have further questions or comments to share about ASP.NET Contracting, please add your comments below.
May your dreams be in ASP.NET!
In my quest for the perfect Object Relational Mapper (ORM) for a major upcoming project utilizing SQL Server 2008, I was torn between using LINQ to SQL versus nHibernate.
Microsoft has burned us in the past with their data access strategies and then dropping them to support their newest ideas. A few years back, Microsoft developed Data Set Table Adapters. I was one of the first on board, writing projects and blog posts utilizing this new technology. But I attended a Heroes Happen Here event and the MS speaker told everyone all about LINQ to SQL. I asked him after the meeting, what about the Table Adapters? I was told to stop using them immediately and start using LINQ to SQL. So I got on board with LINQ to SQL, but it was not ready for prime time at all and very limited. There was no way a developer could even think to release production code using LINQ to SQL. LINQ to Entities then came out, but was bloated and again not ready.
I decided to check out CodeSmith's Generator tools. I worked on a project a few years ago that used CodeSmith to generate the ORM and I was very impressed.
The CodeSmith Frameworks include PLINQO, a LINQ to SQL generator tool, as well as an nHibernate generator for your nHibernate XML mapping files, business objects, manager objects, etc.
What really impressed me about PLINQO is that it handles the short-comings of LINQ to SQL. What really frustrated me about the LINQ to SQL designer in Visual Studio was that it loses your updates when you have to refactor database changes. But PLINQO preserves your manual changes when resyncing the database.
Another feature that looks very impressive is the Enum Generation. I use enums quite frequently and even keep a table to store my enumerations. With PLINQO, I can generate enums easily from my table data.
LINQ to SQL doesn't support many to many relationships, but PLINQO supports many to many relationships.
PLINQO allows multiple updates and deletes based on a filter, something not offered in LINQ to SQL.
The PLINQO team has implemented many features that provide optimization and improve performance.
Be sure to look at the PLINQO feature tour for additional features such as Caching, Auditing, Rules Engine, Futures, Query Extensions, Enum Generation, Customization & Refactoring, Many to Many Relationships, Data Services & WCF, Performance Improvements to LINQ to SQL, and the LINQ to SQL Profiler.
Classes are generated in your choice of C# or VB.NET. The CodeSmith team has been around for a long time and I'm sure will continue to make improvements. What appeals to me about the CodeSmith product is that PLINQO is just one piece of it; and if I need to map to an Oracle database, I can use the nHibernate code generator.
CodeSmith's website even says that when the "Entity Framework stops sucking," they will support it as well. So, with the release of Visual Studo 2010, the 4.0 Framework and Entity Framework, I asked CodeSmith about their promised plans to support the Entity Framework. I was informed that they are currently working on a set of Entity Framework 4.0 templates and will release version 1.0 of these new templates in the next month or two. They are considering making these EF4 templates part of their PLINQO templates.
May your dreams be in ASP.NET!
This morning I attended the Telerik webinar, "What's New in Q3 2010." It included new features in the ASP.NET AJAX, MVC, and OpenAccess ORM components.
I have been waiting for this one for a long time: an ASP.NET Ajax Coverflow option on the Image Rotator. Telerik has had a Coverflow for their Silverlight controls, but now you can use this feature without using Silverlight.
To enable the coverflow mode, simply set the RotatorType as CoverFlow in your code in front or codebehind:
RadRotator1.RotatorType = RotatorType.CoverFlow;
May your dreams be in ASP.NET!