Recently, I’ve talked to several people about “white collar” vs “blue collar” development jobs. It’s an important distinction that I don’t think many people know about. But first, let’s establish what these two terms mean.
Blue Collar Development: Development that is done on a system, application, or platform that is not the primary product being sold (e.g., an internal website used by an insurance agency for use by its agents).
White Collar Development: Development that is done on a system, application, or platform that is the primary product being sold (e.g., Facebook).
Why is this an important distinction, you ask? Well, whether a business has white or blue collar development seems to affect it in two ways:
1. It Affects How the Company Handles Technical Debt
Technical debt is the amount of work that needs to be done before another feature / project can be started or considered complete. For example, if a module needs to be completely rewritten (due to poor code quality) before a new feature can be added, the amount of time it takes to rewrite that module is considered technical debt.
In a blue collar shop, technical debt is rarely considered until it starts impacting the bottom line (in a way that can be made clear to the executive team). I call this the “if it ain’t broke, don’t fix it” mindset. If a feature or module that needs to be rewritten is working as expected, the development team is usually expected to just press on as best they can and hack together whatever solutions need to be added with minimal consideration for any technical debt they may be adding by doing so.
In contrast, a white collar development shop is usually more aware of technical debt. There’s also a greater understanding and acknowledgement by the executive team regarding how the design and implementation of a new feature will affect how easy the system is to maintain over time and it’s easier to convince them about performing non-revenue generating maintenance now (unit testing, refactoring, integration tests) in order to improve profitability later.
2. It Affects How Quickly New Features are Added (i.e., “Innovation”)
I believe that competition drives innovation. When two companies are selling a competing product or service, they are more likely to add new features and fix problems versus a company with little or no competition.
In blue collar development companies, the product being developed is secondary to the product being sold. Because of this, it often takes longer for new features to get implemented and bugs to get fixed. When these things do occur, it’s usually because of customer complaints as opposed to a threat from a competing product.
On the other hand, white collar development companies tend to ship new features and bug fixes more often due outside pressure from a competing company.
How Do You Choose?
Given the differences between white and blue collar development, how do you choose which one is best for you? Here’s a quick breakdown of when you would choose each one:
- You’re just getting started in development and you’d like a slower-paced environment to get your feet wet in.
- You’re interested in learning more about the industry that you’re developing for than just the development itself.
- You’re contracting / freelancing.
- You’re looking for long-term maintenance as opposed to launching new projects.
- You want to work in a fast-paced environment.
- You’re interested in development as an industry and career path.
- You’re looking to launch new projects and features based on pressure from competition and customers.
I’d like to hear your thoughts on the type of development you do and what part of the country or world you’re doing it in. What do you like most about it? What would you like to see changed?