The traps from small companies are very common and a lot of newbies are falling. Is very hard in the beginning of your career to understand that sometimes a small company offers you a job, but that position comes with a lot of responsibilities. This is in equal terms good and bad, because you need responsibilities to grow, but there need to be an equity for your experience.
I worked for a small company for 3 years and this came in my beginning as a developer. The good thing here was that I learned a lot, in a lot of sectors: web development, mobile development, web services, voice development, DevOps and others. For me this was a very nice experience and the environment was so cool, but not everything is amazing.
This probably doesn’t fit to any small company in the world, but I identified in many of my friend’s companies a list of problems.
The high volume of work maybe sounds interesting in the beginning for you, but after some time you can find this very stressful and it can hurt your healthy. When a company is small, the tasks are spread throw the employees, but not necessary they are the right person to do it. Sometimes you have to do some tasks which are urgent, but you don’t know exactly how to do it because that task is over your level of experience. In the same time you need to finish your mainly tasks so you don’t need only one job. This is very common through traps from small companies.
Work with multiple projects once maybe looks cool at first, but after some times, the projects are counting and you can be overwhelmed. I’m not that kind of person who likes to work years for the same project, but working on 2-3 projects or more, per day it’s a big problem.
Work on multiple projects once is bad for you as a future developer because your attention is spread in multiple places. Instead of trying to find the best implementation your focus will be on finishing as soon as possible, because you know that other projects are waiting you. This doesn’t help to improve your skills and you can go easily in someone who makes code to work instead of building a scalable and maintainable project.
Having multiple projects and a small team means shared resources. If there’s no one who can handle all the requests from clients and the tasks are passed directly to developers, that can be translated to bad management.
Maybe you are saying now: and where’s the problem, I can do everything in the priority order. That’s true and is exactly what will happen, but you’ll tend to be too focused on finish the task, because you are pressed by time and the manager which is asking you when can inform the client about that task.
A bad management can affect your learning curve, because you are not able to settle down the information achieved and always need to move forward faster and faster.
Everyone is friendly, but this is not a cons. Actually the problem is much deeper than that. When you have a friend you don’t want to make him feel bad and you try to help him. The problem here is that everyone is your friend and you can easily go from being nice to overload yourself with many tasks coming from different people.
Everything becomes much personal in a small company and that can be a good thing. But what happens when people eventually forgot about someone else feeling and tend to be aggressive with a lot of tasks. In that situation no one wants to say nothing, and they are trying to solve their needs even if the situation is not fine
A real evaluation in the market is very hard when you don’t have many co-workers on the same position as you. In the best scenario you’ll have in your team at least one colleague which do the same thing as you. In my case I had a position as full stack developer and I had only one person on the web team, but not with the same stack as me. It was very hard for me to know where am I in the market, if my code is good or I code in guerrilla style.
Usually if you’re trying to escape from here is good to evaluate your knowledge based on your skills, try to check open source code and see how other are solving the same problems as you and how are is that solution against yours. Don’t be too critic with you, but try to understand your real value in the market.
One of the biggest problem that occurs in small companies are related to your self development. Because the company is small that offers you the possibility to grow very fast in many fields, because of experts lack. But trying to solve by yourself a task doesn’t mean necessary you implement a good solution. You can grow fast and you tend to think how big are your knowledge, but better think about how correct are them.
Is Sometimes better to have another person to consult with and preferably much experienced than you. But if that is not available you still can join slack, discord, GitHub, Stack Exchange forums or other communities and ask information about that topic.
This is a sensitive topic because it’s true that overtime is not mandatory. But when you have a lot of tasks to do is unavoidable to finish them between 9 and 5. No one will encourage you to stay after work and you are not forced to do that, but if this case is true you’ll do it.
In the end you probably think how bad is in a small company, but that is not true in my opinion. I only summarized few problems that I faced in my time. It’s obviously that not all the companies are the same and each one has its own identity. Before to take a decision to go or leave try to make a simple list with pro a cons then drop the lines which are not necessary so important. Keep there only the most important ideas and then combat. Soon I’ll release a new article with advantages of small companies of outsourcing.