<= Home
Software and Companies
(Warning: long non-technical post – I have some technical ones on the way)
Today I started with ThoughtWorks and also began another different career path in software development, leaving contracting to be a consultant. As I see it, there are four primary different ways companies utilize developers. (Enlighten me if I missed any others.) I have had the chance to work in each aspect and have seen the pros and cons.
In-house support (Line of Business Support) – Developing software to support a company’s different lines of business and when software is NOT the company’s primary product. For example, I worked for a large “US Bank” writing application for the HR department to financial audit type systems to custom project management systems. Working in this capacity at a company, provides the opportunity to solve a broad range problems but at the same time in general the scope of the problems are not as large and as a whole you (developer and a development team) are neglected when it comes to resources, compensation, and are disposable when money gets tight as you only support the company and do not drive the company’s future. But on the other side, working for a large stable company as support is the MOST stable secure position for a developer – but the company needs to have income in hundreds of millions for this to be true.
Product Development – When a company’s primary product is a software product then as a developer you are part of the company’s future. In my experience, you tend to have better access to resource, good equipment, and compensation is fair if not good. The project’s scope is usually larger and longer but at the same time often it is extending an existing product’s codebase or working on projects that support the primary software product. And I have seen many developers at product development companies only providing software maintenance. Also, the company’s future is only as good as the software they create which means that if the product goes south then so does your employment.
Contracting – I enjoy contracting for three main reasons: One, studies have shown that a contractor makes 1.5 to 3 times as much as employees that perform the same tasks, Two, its always new development and when the project is done you don’t have to provide on-going maintenance. Third you have some freedom of choosing projects that interest
you. So there are strong incentives…but there are also negatives. First, you have to always work hard to stay competitive, having the latest skill sets (which I don’t bother me – but can be hard on others), but with that also you are hired to provide that skill set and that skill set only. It is hard to influence change as often you were not hired for your opinion. This proves to be deficit for me since I can be rather vocal about problems I see that could benefit from a change in process, approach, or technology.
Consulting – I am new to consulting but there are some good posts already on the topic comparing against contracting. From what I know and have seen, the pay is better then if I worked to support a company’s line of business or for a product development company but the pay is not as good as contracting ( nothing is J ). Unfortunately, you lose a lot of the control to choosing what projects you are on because the end goal is to keep you billing. Travel is sometimes necessary which can be a good/bad thing as there are some benefits of when you are on the road. Also, you are consulting so your opinion matters more to the client – so start resolving all those problems….But more to come on consulting as I experience it.
As for my first day with ThoughtWorks, a consulting company, I am extremely impressed by how open the company is. ThoughtWorks pretty much shares you ANY information, they are completely transparent minus two things. 1) Other employee salaries and 2) other employee’s interview test results. But they do share with you the notes the interviewers wrote on you as constructive criticism…when have you seen that?