First we start by taking a look at companies. From web developer's perspective we can consider them being the biggest organisational entity in software development. We'll look at the key things that affect what software developers work on and the general approach to development.
What is a company, anyway?
It's a group of people doing coordinated work to achieve a common goal. And in the business context a common goal is most likely making profit. Be it by creating and selling a product or some kind of service. There can be many other things companies might want to achieve, like changing the world, disrupting industries and similar. But in the end, profit is almost always a primary goal, followed by the other nice-to-have goals which will often fail if the company can't generate profit to fuel it's own ideas. It's important to keep this in mind as you start your web developer career. This is the point where you, like myself could face a harsh reality of theory and best practice vs. practicality and real world, in other words the economic reality behind the things you do at your job. It's all about finding the best compromise of what needs to be done, how good, in what time and with how many people and resources.
Companies can be categorised in numerous ways and this won't be an exhaustive coverage of all the differentiating factors and company features. We'll look at companies from 3 angles that have the most impact on software developer's work:
- agencies/outsourcing companies vs. in-house product builders
- startups vs established businesses
- B2B vs B2C vs B2X focused companies
Agencies and outsourcing companies vs in-house product builders
This is categorisation by product ownership. At agencies single or multiple employees might work on a product owned by an external company. You might join an external team to help them build a new product or to improve/maintain/rebuild the existing one. On the other hand, when your company creates products in-house that means they are owners of the product being built and that they're committed to use their own team to handle planning, management and development of their project, your company has full control of trajectory and what is being built.
Startups vs established businesses
This categorisation is about the profitability phase and predicted type of growth, it's also about the risk and future potential gain. There are many variations of size, number of people, size of project and other parameters that can be true for both startup and established business. We'll go into details about this in the following chapters.
B2B vs B2C vs B2X focused companies
The last categorisation that we'll cover is around targeted market and audience of the product. Markets can be placed in many categories but creating a product for other businesses or a bunch of consumers are two very different scenarios that affect every single position in the software development company.
Our main focus through section 1 are categories that affect the type of work and products you'll work on. In the following chapters we'll go through the details of the 3 major categories we've mentioned. There are other things things that may be a deciding factors about the product development that we won't cover:
- distribution channels — is it a web app, desktop app built with web technologies, script, browser extension, backend service...
- product, service or infrastructure
- productivity vs. entertainment vs. ...
- compatibility and level of integration with other systems
- age, technical skill, profession of target users
- internet access speed
- ... and many many other things
Let's begin to break down main company types...