August 09, 2006
Last Saturday, I had a chat/interview with Joey Gurango, Microsoft Solutions Architect MVP, CEO of Gurango Software, and also CEO of WEBWORKS OS, where I worked as a software developer intern for two months last year. I was interested in what's been happening at WWOS since I left the company, but more importantly, I was interested in an entry-level position.
It turns out that after my stint, WWOS had transitioned from being a consulting/outsourcing firm to one that focused on product development (and they massively cut down on the number of their employees in the process). I was wondering what the difference was when Joey mentioned that there were essentially three kinds of software development jobs:
I'm sure that there are people out there who are looking for a first job in software development but don't know what options are available for them. This blog entry is for you guys and gals who "just want a programming job". I'm not an expert on the subject by any means (anyone know of a Type-4?). But I hope I was still able to help out. Good luck (to us)!
It turns out that after my stint, WWOS had transitioned from being a consulting/outsourcing firm to one that focused on product development (and they massively cut down on the number of their employees in the process). I was wondering what the difference was when Joey mentioned that there were essentially three kinds of software development jobs:
- In-house software development. You'll be working to develop software for your employer, just for internal use or for providing services to their customers. If you work for an "I.T. department/group", then this is probably the kind of software development job you have. Basically, the company isn't really a software company and instead of having some consulting firm address their needs, they decide to do things on their own. One obvious disadvantage of this kind of job is that the software development process will most likely be very informal; the software might not even be subjected to any QA work at all! Because of this, project lifecycles tend to be short. Of course, this depends on the project; if the system will be used by customers, it will have to undergo rigorous testing before it goes into production. But chances are that you will probably not learn much about processes and methodologies even after a year.
If you are serious about learning the craft of software engineering, you really have to think about the experience you will gain from working for a Type-1 company. Examples of Type-1 companies in the Philippines: Smart, Globe, any bank, any organization that's not a software company. - Consulting/outsourcing. Your company addresses the I.T. needs of other companies. Therefore, the quality of the software you produce determines your company's reputation, and hence the number of future projects will you get from your clients and from referrals. Quality is given more emphasis than in a Type-1 company so the processes and methodologies used are well-documented and strictly followed. QA work is a must and the painful steps of requirements gathering and system analysis are given much thought. The source code is usually turned over along with the finished product. As opposed to Type-3 companies (see below), Type-2 companies tend to become bigger and bigger over time in order to be able to handle more projects. Because they need to get as many minds as possible, their hiring standards are relatively low (but this is definitely not a rule).
You'll gain experience with software development, but the amount of experience points you'll get depends on the reputation of the company and the potential for growth within the company. It's possible that you'll just be a coder for years without getting an opportunity to participate in design and planning. Examples of Type-2 companies in the Philippines: Accenture, HP (does consulting for P&G), Soluziona, Orange&Bronze, tons of companies out there with "Solutions" or "Consulting" in their name. - Product development. The experience with a Type-3 job is very similar to the one you'll get with a Type-2, but Type-3 companies develop software (usually proprietary) that is ready for customers to use. As a rule, the software is of the highest quality because one small bug will cause headaches for all your customers and for your tech support team. Much of your work will revolve around a few product lines, and depending on the maturity of the product, you'll either be working on the initial release, fixing bugs, or upgrading the product. Very few Type-3 companies in the Philippines develop software that is sold off-the-shelf; they are usually sold directly to customers.
Type-3 jobs are great opportunities to pick up experience. However, there are very few Type-3 jobs available here in the Philippines. Examples of Type-3 companies in the Philippines: Navitaire, WEBWORKS OS, Lakeside Technologies, can anyone name others?
I'm sure that there are people out there who are looking for a first job in software development but don't know what options are available for them. This blog entry is for you guys and gals who "just want a programming job". I'm not an expert on the subject by any means (anyone know of a Type-4?). But I hope I was still able to help out. Good luck (to us)!
Labels: employment, programming, tips, work
You've covered them all pretty well. I have had jobs in all three of those rolls. My favorite is type 3. There is something about knowing that your code is going to be used by a lot of different people. My second favorite is type 1 though. In that case you are working hard to make your company a better more profitable company. To some extent that is what you do in all three types but in a type 1 job it always seems more personal and more direct of a contribution.
I hated consulting work. The stress there is the worst because there is a lot of presure to work hard and fast so the customer can save money. In the long run I think too many corners are often cut.
While we're mainly a consulting company (type 2), we're using the cashflow that consulting brings in order to work on a product-development company (type 3). By the way, your link points to our sort-of-sister company, Orange & Bronze Consulting. The URL of Orange & Bronze Software Labs is http://software.orangeandbronze.com.
By the way, a lot of so-called "consulting" companies are probably more aptly called "contracting" companies. They dish out work as the lowest bidder, not give out advice.
Orange & Bronze Software Labs mainly gives advice and training to other software organizations. We are currently training many other software development outsourcing companies in Java Best Practices and Agile Software Engineering practices. We are also invovled in creating the architectural design for other software companies, for their teams to implement.
When we do take on end-to-end software projects, we do so not as the lowest bidder. We do so as the provider that the client can trust to do things right.
Here's hoping you'll be interested in joining our team.
Good Stuff buddy
I thought the information above has given me great topics to think about. Thank you!
Best wishes,
Sofstware Development