So you want to be a software engineer, part iv: permanent staff - 'other'
The fourth article in this series, where we discuss the different types of roles and companies within software engineering
In last week's post we discussed permanent staff working in software companies. I hope that you found the post to be useful.
I have defined the different types of companies as:
Design Agencies
Software Companies
Other
FAANG
Other
I couldn't think of a general enough name (in software - naming is hard!) that would cover these companies because they exist in many different industries. Essentially this is a regular company that sells a product or service, or both, and to make their jobs easier in some way they have determined that they should use some type of software. Some companies use off-the-shelf products, some commission the building of bespoke software to meet their exact needs, and some create an in-house team to build their own product.
There are pros and cons for each of these for the company, and that would make an interesting post itself, but I will focus on the pros and cons of working for a company who has decided to bring the software development in-house.
Pros:
Green-field - a green-field project is one from scratch. You might join later in the process, so this might not always be the case, but if you're lucky enough to join right at the beginning, or even before the project starts, this is a great opportunity. You will have the chance to get involved in all stages of the Software Development Life Cycle (SDLC) which is great experience, great for your resume, and also lets you figure out which aspect(s) of software engineering you might want to specialize in.
Ownership - Working on an in-house system, much like in the previous post on software companies, allows you to take real ownership of the product or parts of the product. In a place like this where there are likely to be fewer engineers than in the software company, you will most likely 'own' large parts of the system and the more senior you are the more likely you will drive the architecture and design of the system, from a code perspective not from a UI/UX perspective. Again, this is great experience and great for your resume.
Quality - Since your client will be the same person as your boss, you will have the luxury of focusing on quality as your top priority, with time being your second priority. Remember the time-cost-quality triangle from the other posts; the company have chosen cost, which allows you to work on delivering a high quality product in a reasonable time-frame. If you are interested in quality, cleanliness, and precision, then you will flourish in an environment like this.
Cons:
Micro-management - this won't be true of every one of these companies, but it will be true of most of them. It actually makes sense that this would happen when you view it from the perspective of the manager(s). One of more people in the company made the case to people who own the company and/or manage the budget, that hiring a team of engineers and designers would be better value for money than outsourcing, and that they would have more control over the product. Well, since they won that argument, and it may have been contentious, they will most likely have to prove that they were correct, and also they will have a great deal of personal investment in the product and project. If you find yourself in this scenario it can be extremely stressful, particularly because it's highly likely that the person/people doing the micro-managing aren't technical, and therefore will have unreasonable expectations.
I.T - I once worked at a company where the product was in-house, and the software team manager was the brother of the company owner. He had in the past had some minor success as a database developer and found his way into his sister's company later in life. He knew almost nothing about software engineering but felt that he knew a lot more than he did. Aside from micro-managing, he created a culture in the company where our team was referred to as 'I.T'. On one occasion a person from another team came and handed me a broken keyboard and expected me to do something with it. I advised them to go to Amazon.com and buy a new one. This might sound unlikely but it is more common than you think. In many cases, the type of companies who want to save money by bringing development in-house, have next to no software knowledge, and that can really create a very stifling atmosphere.
Politics - all companies have company politics going on, but in these types of companies I think it's worse because unlike the software company where the software is the centerpiece and the business is built around it, here it's the opposite; the company and their product/service is the main component and the software is secondary. This means that when the office politics happen, you can expect your department to be impacted. I worked at a large energy company (as a contractor) who supplied power and generators to remote locations. They had a large number of software teams working on various systems to support this business. I was working on an asset management system, and one day when an upstream project hit a big problem, the business went into discussions and eventually various downstream projects including mine we scrapped and all contractors were let go. Of course this is slightly different because I was a contractor which meant short term work was baked in, but this can just as easily happen in a permanent role because the software is there only to support the business rather than the software being what the business is for.
Summary
This isn't my favorite type of company to work for. There are definitely some good aspects, and you can gain a lot of experience, but for me the best kind of company is one where the software and the product/company are equally as important and give each other an equal amount of respect.
My advice for anyone interviewing at these types of companies is to ask questions that would give you some insight into the managerial style. Interviews are two-way and you can keep the questions generic enough to not give away your reason for asking. If you get a sense that there is a lot of micro-managing and/or politics, I'd walk away. If the interviewer asks why you're asking such questions, I'd also take that as a red flag.
Next week I will discuss the 'FAANG' category, before moving on in the following weeks to discuss the different types of roles.
Stay classy!