Software Development in a Small vs Large Company
I am about to complete my 6th month in a large company. In this period, I have done my best to fit-in, start development and change my mindset which was formed in a small company in more than 3 years. Although 6-month is generally a small period in software development, I definitely observed some differences in workplace and environment. Here are some key differences that I find worth sharing.
- Team: As long as your colleagues are as passionate as you, you will experience similar feelings for work in both companies. However, non-business hours may totally change depending on your personality. In a small company, it is quite common to hold activities for fun with your colleagues. You are part of a small group that likes spending time with each other. This makes communication easier even in work hours. In larger companies, your colleagues are not your friends. Even if you like spending time with your team or are friends with a subset of them, you don't get to experience the same candid relationship you can have in a smaller group. I am happy that I have worked with passionate colleagues so far and I haven't complained about my professional experience.
- Roles: In smaller companies, limited resources may decrease the number of roles/people in the organization. You need to multi-function up to a point (depending on the company): you may be an IT person who updates company website one day, a UI designer on the other. Then, you go back and continue with your original work as a Software Engineer. This is not necessarily a bad experience: it makes you an engineer who can think out of the box and helps you consider problems end to end. You learn different concepts like UI, IT Administration, Program Management time to time. This brings a variety of knowledge and experience to your plate. On the other hand, in large companies, every task is fulfilled by people who are hired for the specific type of the work. This may result in additional resource usage and a communication drawback (due to number of people and steps needed for straightforward projects). However, in the end, your plate is filled by one type of work (the one you are good at) and you won't need to divide your time on additional responsibilities.
- Processes: As a result of less number of roles, you will have more responsibilities in a small company. As an example, you will be the one who determines the requirements, designs, develops and tests the feature. This will lead to a leaner development process. However the quality of the feature may suffer in the absence of external checks. Fortunately, it wasn't the case for me. In large companies, every step in the process is handled by different people and this results in strictly followed methodologies. In small company, employees have face-to-face meetings more than once in a day on the fly. Employees in a large company follows a stricter approach. The length and the scope of the sprints may vary in small company, whereas the large company keeps the same length and similar scope for future predictability and ease of planning.
- Decision Making: In a small company, you are on your own. You make various high level decisions about the features, share them with colleagues and continue developing to achieve the goals. However, in a large company, high level decisions are made and you need to realize those decisions with restriction from different teams i.e. you don't get to make many calls due to such restrictions.
I'm glad that I could experience both!
May 2014