There are a lot of differences between companies that hire programmers. Even though they offer similar job titles, there are some fundamental differences that will impact your possibilities and leverage at work. Let’s try to systematize the difference between the companies that you can find on the job market.
The key factor to be considered is how the company is making money and how it’s related to the IT operations. That has a big impact on the position of the programming department within the company and, by extension, on your position as well.
This is a big category that covers all the companies that are making money in a way not related to IT. Those places see programming as an expensive, necessary cost—the same as utility bills and equipment maintenance. What companies are those? Everything outside the tech bubble:
- pharma companies
- banks and financial services
- basically, most of the global economy
For smaller companies in that category, IT work can take the form of maintaining a few off-the-shelf solutions and customized websites. Bigger companies can have a whole range of internally used, inhouse-built applications to automate some workflows. But there's one thing these two types of companies have in common: they both see IT as a cost. In other words, it means that the priority is on finding the cheapest solutions that are just good enough for their needs.
Working in a non-IT company can be a good career decision, especially if you are interested in getting a quiet job away from the spotlight. Those jobs will probably not pay the highest salaries, or offer the most existing challenges, but they will definitely pay the bills.
These are companies that provide programming services for external clients. Usually, it works like this:
- company charges per time spent on their projects, or
- company charges for delivering some agreed upon project.
This means that, at least internally, you are not only a cost. Your time or projects that you deliver are what bring money to the company. Unfortunately, the cost-centric dynamic is still there. This time, the client looks at the whole project as an expense and probably doesn’t consider the project important enough to do it in-house.
As a programmer here, you can expect a bit of rotation of different projects, with a limited focus on quality. The client is probably interested in getting a good price, whereas your company wants to deliver and close the project as soon as possible. Those two factors take the focus away from the quality and long-term health of the project.
Examples of such companies:
- software houses
- digital marketing agencies
- contracting middle-men
Those jobs can be interesting if you like working on new projects regularly or experimenting with different technologies. Money-wise, the upper limit of what you can earn with these companies depends on what rates they charge their clients. In many cases, this can be a rate way above the local market—a popular business model is companies finding clients in expensive markets and building teams in lower-income countries.
A product company is, naturally, one that owns an IT product and makes money from it. It completely changes the position of the programming department: it’s not only cost anymore—now it’s a key component of how the company makes money.
You can expect the focus to be on quality, on many levels:
- technology choice—picking the wrong technology stack can create a major issue for the company when some key element is deprecated
- not breaking production—the business is based on having the application up and running and bug-free
- good performance—so getting more customers doesn’t inflate the cloud invoice too much
Product companies have a long-term perspective: it is safe to assume that all code they own will be around for as long as they exist. They will appreciate it when developers keep this perspective in mind.
What companies are those? Business-to-business (B2B) and/or business-to-customer (B2C)—for example:
- any software as a service (SaaS)
- companies selling software
Depending on your personality, you’ll either like or dislike the fact that the product is never finished and always growing. On the one hand, you can really become an expert in the company’s technology stack, but you can expect fewer possibilities to experiment with new technologies.
A big advantage of working for a product company is that you have a direct impact on the thing that brings money to the company. It can give you a lot of leverage—for contributing to the company, and for negotiating your work rates or conditions. While hiring, those companies will try to pay you market rate. If you stay long enough and contribute enough to the company, you can become a key employee that keeps the production afloat. In that case, your negotiation power will be much stronger—which could help you get your compensation way above the market rates.
Another important aspect is the size of the IT operation inside the company.
A small tech team is a team where everybody knows everybody and the work is organized not by roles but by individual people. Let’s say up to approximately 15–20 technical people.
From small organizations, you can expect more flexibility. You will not have to deal with company policies, the security department, or too much internal politics. Any change you can think about will require only convincing your boss and a few colleagues. So you can have a big impact on:
- picking a new technology to try
- migrating to another project management tool
- switching to another methodology
There are many more small companies than big companies. If you are new to the industry, you need to convince only one of them to hire you. You can hope that at least some of them will be less rigid about having the right degree or well-documented qualifications.
A big IT company will have 50 or more technical people organized in various teams. You can expect well defined roles, managers, and well-defined processes.
Working for bigger organizations can have interesting advantages. With bigger teams, there should be some people from whom you can learn. Bigger companies are more likely to be recognized by others, and that can help you to have a well-established name on your CV instead of No Name & Sons.
At big companies, you can expect things to take more time. In my career, I once waited a whole month to get a computer on which I could do any useful work—in the meantime, I was supposed to read some (or rather any) documentation. When something nonstandard happens, it can take a lot of time to even figure out who is responsible for what, and how to make a decision.
As with humans, there is a relationship between age and maturity—older companies can be expected to be more mature, but the expectations can go in both directions. The key question is, if the basics are figured out well—if the company has a business model that works, the capacity to operate and deliver results, and happy, paying customers—then all is good.
Thanks to all the investments that flow into IT, some companies are hiring, growing, and spending a lot of money even before they start thinking about how they can make their business profitable. This is something that you will not find in many other industries—at least not at this scale.
In these companies, you can expect:
- fast pace of work—i.e., a lot of pressure to deliver something that can attract users or be shown to investors
- pivots sudden and unplanned changes to the idea for the project
- a lot of changes—there should be some opportunities to try new technologies, improve your job title, and grow with the company
- runway measures in months—which refers to how long the company can operate before it will go bankrupt
- grandiose vision of the future
Start-ups are definitely not workplaces that fit me well, but there are people who like them. Be careful, and don't put too much hope in any equity they may promise you—most start-ups collapse before there’s a chance to change the equity into money.
This is any company that has their revenue and cost on the same order of magnitude—if there is any loss, it’s only a few percent of total revenue.
We all find different things interesting, but here are some industries that in general generate less excitement, such as:
- insurance companies
And then there are some industries that generate much more excitement:
- video games
- companies with well-recognized brands
The downside of exciting companies is that they usually get more people willing to work for them, which can translate to worse pay and worse working conditions. In my career, I always worked on the more business side of IT, and I was always surprised to hear about rates paid in game development or never-ending crunches.
The main downside of boring jobs is that you will not have an interesting job story to tell when you are introduced to new people—or it will take more creativity to make your job sound exciting. When I want to sound fancy, I say I work in the fashion industry, which sounds better than working at an SaaS company for clothing shops.
Everybody is different and has different priorities, but it's a good idea to think about how much you want to sacrifice to work for an exciting company. Some good food for thought on that topic is this video: Here's Why You Want A Really Boring Job – How Money Works.
There isn’t a career path that will be perfect for everybody, and it depends mostly on the lifestyle you want to pursue and your priorities. I hope this article gave you some ideas on what to think about while you compare different job opportunities. What is another aspect you find important when picking a job that is right for you? Let's discuss in the comments!