Small or Large Software Company - Who Should I Work For?
There are several key differences in working for a large vs small software company. I have had experience in working for both and to be honest did not really consider these beforehand. I am going to run you through my experiences that you could expect if you were to make the switch. Many of these differences really change the approach to software development dramatically and do require some adjustment and familiarity.
Before we dive in I just want to clarify something, I class a small company to be < 10 employees and a large company being > many hundreds of employees. These ranges are certainly not set in stone but are based on my personal experiences and so seemed a good place to start. You could also think of this small software company as a startup. So let's get started.
Wide Range of Work Areas
When I worked for this small company we only had a handful of developers, three in total working on the core application. Based on this we all worked in a very wide range of areas in the software development lifecycle. We would cover everything from the planning stage right through to testing and code releases. We had no concept of specific roles that would focus on a single aspect, front-end developer for example, this approach would have required many more developers which was something we did not actually require based on the workload and clients at that moment in time. I was relatively inexperienced at this point in my career and so working in so many different areas really pleased me as I got exposure to so many different aspects, this ultimately had guided me down a couple of paths that I would like to focus on going forward in my career.
On the flipside, working for a large company there are far more defined roles and teams that make up the development department. There are teams that specialise in application development, database development, web development, testing etc. These specialist teams have in depth knowledge in their subject matter and I would class them as experts in their field. The level of knowledge across the department is very impressive and collectively the work produced is of a high standard, not just the functionality but also the reliability and maintainability.
My work would be focused in a given area, which would lead to greater knowledge in this subject. Both experiences provide an excellent platform to learn just by different means, the small company providing a wide range and the larger company a more targeted approach.
Permissions and Restrictions
Working for a smaller software company and being one of only a handful of developers required access to many different areas of the systems. I had full admin permission on pretty much everything, I could change whatever I like and was never held up by something like a permission needing to be granted.
The larger company of course has more restrictions. As I mentioned before, there are specialist teams that look after a given aspect of the system and they do not want everyone and anyone being able to come along and make changes to their setup. This could cause major headaches for the company and so is completely understandable. The downside to this approach is the time taken to complete a task can take a hit. I have had tasks that have been held up by permission issues that need to be dealt with by a separate team and cannot do anything until this is resolved. Now initially this really did frustrate me, by as time goes on you will learn to adapt to a new environment and take this in your stride. In the long run this more restricted approach will be a more safe way to approach development and ultimately produce higher quality end results.
When working for a small company every developer had input regarding the functionality and approach to the application. There would be regular sessions where ideas and implementation details discussed. The pace was incredibly fast and we were required to complete functionality and get it released as quick as possible. There are far fewer resources in a smaller company and so this was key in the business operating successfully. There was also a general understanding that if the work had not been completed then extra hours would be required. There were periods where this was required often and to be honest it can be frustrating but is a common occurrence when working for a small software house. There can upside to this extra effort and many companies do offer incentives to give you that motivation to put in all of these extra hours.
As you may have guessed the larger company is quite different. Usually your work is allocated to you and you get on with it, there is little say in the functionality as there will be a team that handles this. I actually do not mind this approach either way, it is great to sit down and think of functionality for the system but equally interesting to think of the best way to achieve a task. You will have to use your creative juices either way. The pace is far more manageable and extra hours are very rare.
Ultimately, a small company will release functionality at a very fast pace with the aim to get their product out there first and the larger company focusing on producing the higher quality work. This is only my experience on these approaches and could easily change based on the application the company is producing or the business area that company operates in.
The fact that with a small company the range of work is so varied and the pace is so fast, you will learn new skills quickly. I worked in this environment at a very early stage in my career and so was excellent for my knowledge and to provide me with some guidance in areas that I would like to specialise in and push my career down a given route.
The larger software company will have more resources and so could offer me external training opportunities, these courses are very expensive and would not be something the majority of us would consider pursuing on a personal level. These larger companies are willing to invest in their employees to improve their knowledge and ultimately give back to the company by producing higher quality work.
Both approaches in my opinion are an excellent way to build you skills and knowledge to be able to further your career possibilities and give back to the company you work for.
Let's Wrap Up
Key points to take away from this post:
- Working for a small software company will allow you to work in a wide range of areas of software development
- At a larger company your work will be more focused and specialised to your role, for example, front-end developer
- There will be more restrictions to what you can do at a larger company based on permissions, due to the fact each team will handle their own areas
- The pace is very fast at a smaller company and often extra hours are required in order to be the first to market
- Larger software companies have a more reasonable pace and focus on high quality, reliable and maintainability
- Both small and large software companies will provide ways to improve your knowledge, this may be on the job or with external courses
This post has covered my personal experience working for both small and large software companies. I think many of these points are applicable for these types of companies but of course are only my opinion and could be different for you. Let me know what you think, I am sure there are many more to be discussed.
See you again, Ben.