What are the Different “Worlds” of Programming?



Different people have their own takes on the different “worlds” of software. Joel Spolsky, of popular blog Joel on Software, defines them a bit differently than I, but the general idea is the same. Here is how I define the six worlds of software:

Products 

This includes working for a big company like Microsoft on Word or Excel, for a company like Google on Google Maps or Gmail, or for a smaller company like Salesforce.com on their namesake web application.
Product development is extremely challenging, often with tight deadlines and a lot of overtime before a launch. I would venture to say that the most gifted developers move towards product development, since it poses the most difficult problems and allows you to build higher quality software than you can justify in corporate development.

Corporate Development 

This typically looks like working for a bank, insurance company, or other big corporation developing software for their accounting department, call center, shipping department, etc...
In this scenario you will work with enterprise technologies like .NET or Java, and will build web applications, desktop applications (typically .NET Windows Applications), or mobile applications. I was a corporate developer for several years of my career.
This is where the majority of software jobs are, and the pay is high compared to the amount of experience you need.

Embedded Software 

Embedded software is burned onto a custom chip and includes software that runs in your car, elevator controllers, and handheld GPS devices.
 I don’t know much about this area, other than that it’s more like building hardware than software, since you get one shot to get things right (there are no re-releases once it does out the door). The release and testing cycles are long because there are no second takes.
I see embedded job openings from time to time, but in my (very limited) experience, it’s a niche arena. Writing embedded software can be very challenging and you can make great money, but your job options are more limited than with corporate development.

Game Development 

If you’re into games, building them is a blast. It’s also a huge amount of work.
The first-hand accounts I’ve heard from game developers indicate they love the job, but hate the long weeks (60-80 hours).
The pay also tends to be lower than corporate development, which makes sense? If you were building an invoicing application wouldn’t you take a pay cut to work on Halo 3?
 Game development requires a mathematical mind, and is the one area of development where I say that college-level math is a necessity.

Consulting 

You can consult for a big company like EDS, BearingPoint, or Accenture, or for a small consulting firm (which I did for several years).
Consulting is a lot of fun, and you tend to work with cutting edge technologies and new coding techniques. But working for big consulting companies requires a lot of travel, and small ones will probably not have full-time work for you.
The pay tends to be comparable or higher than corporate development.
This was my area of choice after being a corporate developer and before I started my own consulting firm.

Freelance 

Once you have experience and contacts you may start doing projects on the side, and may eventually transition into a freelance developer. The money is great, but the hard part is maintaining a steady stream of work.
You get to work for yourself and have all the freedom of being your own boss, but you have to buy your own health insurance, don’t get paid when you take a day off, and you have to handle your own marketing, sales, invoicing, retirement savings, etc…
But this is an attractive and attainable goal for many entrepreneurial-minded developers, myself included.

Comments

Popular Posts