I recently was on a panel at the Hudson Ohio coworking space Tech Hub Hudson organized by the Akron Women in Technology group. There were four other panelists (I was a last minute addition) and the topic of the evening centered around advice for junior developers. There was a lot of great experience shared both by the panel and by audience members, and I’ll probably draw on some of it again in future articles. One piece of advice I offered had to do with the kind of company you as a software developer might want as your employer. There are many obvious factors, like how big it is or what kind of practices they follow or where they’re located, but one that I learned about a long time ago is how you as a software developer fit into the company’s business model. That is, are you a profit center or a cost center?
If you work for a company where you’re a consultant, trainer, author, speaker or some similar role in which the services you provide are directly purchased by the company’s customers, then you’re viewed as a profit center for the company. As long as sales are going well, the company will want to hire as many developers like you as they can find, and to retain you and improve your skills. Of course, if times are tough, you’re certainly not immune from being laid off, but if you’re directly tied to the company’s revenues, the company will probably look elsewhere first before cutting the thing that actually makes them money when things pick up again.
If you work for a product company, and you’re working directly on building and improving the company’s product(s), you’re in a similar, though not quite as strong, position. The connection between your efforts and the company’s profitability isn’t as direct, since presumably they could keep selling the product and renewing customer subscriptions for some time if all of their developers disappeared. Eventually, not having developers would kill the product, but it could take a while, so it’s less of a direct relationship. Compare this to a consulting company where if you lose a consultant who was billing at a client, you immediately lose that revenue if you don’t have a replacement available immediately.
Companies whose main business is not development services or software products tend to view software developers as expenses. They employ software developers because they have to, not because they want to or because they are the business’s core domain. Government agencies, hospitals, construction companies, retail stores, utility companies, etc. are all examples of companies where software development is a necessary evil, not the point of the business. If these organizations could just buy an off-the-shelf software package that would do everything they need, how they want it done, then of course they would do that rather than hiring programmers to build custom software. When times are tough, software developers viewed as cost centers may be easier to let go than those responsible for delivering the company’s primary services or products.
Aside from the above-mentioned “what happens when times are tough” consideration, the culture differs between these kinds of companies, for software developers. The company’s owners and senior management view profit centers and cost centers differently, and this colors perceptions at lower levels where the distinction might not be as explicit. If you’ve worked at several different companies, some where you were at the center of the company’s value proposition and some where your job was to help make the company more efficient at its (non-software-related) value proposition, you probably experienced this change in how you were perceived. This dynamic also impacts your relationship with the company in terms of your ability to negotiate with them. If you’re directly responsible for the company’s revenues and success, you’re in a much stronger negotiating position than if you’re responsible for helping the company save money. Both are valuable, but one has a much greater immediate impact than the other, in most cases.
Does it matter?
Obviously this is just one factor, and a relatively minor one, to consider when evaluating career choices. Location, salary, and the kind of work you’ll be doing are probably all higher on your list of priorities. That said, most software developers haven’t necessarily considered how they fit into the company they’ll be working for from this perspective. Doing so can offer some insight into why things work the way they do at a given company, or could help make the difference for someone on the fence weighing two opportunities. If you have experience with this that you think others would appreciate, please share in the comments below. Having read this, does it make you think any differently about where you work today?