Skip to main content
I started my programming career as a software engineer/developer from a dev shop (I can't find the right term for it, call it a dev shop, web agency, software house or web company anything that makes sense to you. Basically a agency/company that takes up projects to survive and grow). It was a small web shop with less people, however I was introduced to an open source web development MVC framework in PHP and a great deal to learn about how professional web and software development is carried out.

After that in the entrepreneurial drive we gave our company a physical presence and put our heart and soul in building it, I worked there for 2 years plus in total and was involved in many projects. It was an amazing learning experience and I could see my growth. Then I went for my masters and after that joined a company in Dubai which is a product company (The company and the product is same, there are no projects as such, all it cares about is the product - nothing more nothing less). I've been working with this company for over a year now. I consider myself lucky to be working with start-ups, they really teach you lot of other things than only hard skills of coding and solving technical problems.

Image Source : BrazenCareerlist Blog

This is not a story about where I worked, instead its a comparison of what I learned in the course of years of working as a developer or some other name to the role that involves at least some coding. Start-ups or established companies, small 2 people company or a company with hundreds of developers, the basic distinction you need to make is does the company take up client projects and deliver them or builds its own product to sustain itself in the market. Here are some of the differences you get when working for both the types of companies.

Working for a dev shop

Generally when you work for a dev shop you would generally experience the things mentioned below:

  • You can decide on a new way of doing things from software architecture to design and data modeling as you start fresh you have all the decision to make. Basically its a clean slate where you draw the picture but in a team obviously.
  • In a single day you will work on 2-3 projects, code a feature for Project A, solve a bug in Project B and deploy (usually a git push and pull or upload files) for Project C.
  • In a new project you can start fresh choose your framwork (may be this time you want to go with Symfony 2 and not Zend, use Angular.js instead of Jquery). If you are in a decision making position you can do it, this will also depend on what client wants if s/he has a say and also the company policy. 
  • Multiple project might have multiple frameworks or even languages (as mentioned above) in use and then you need to juggle all those.
  • Sometimes even though you are developer you will get to make your hands dirty with some system administrator (sys admin) job of setting up domain, domain name servers and space allocation for Project A.
  • Some other time the Front end guy + designer is not available and you write 3 lines of CSS to fix that overflow in the image for client X. It happens like that ;). Same thing you should sometime open photo-shop and move that image 5 pixels to the right. (This will heavily depend on the team size and responsibilities, in a start-up it will be expected)
  • A project management methodology will be in paper at many times, collaborating among teams (basically front-end and back-end) becomes a challenge at times. Even release management is a myth ;).
  • You meet many people who voice their requirements and depending on if its a website or web app (a web software I mean), sometimes it becomes difficult to put a price to the effort.
  • On the management level, the company might lack a clear vision and goal (unless the company is funded by investors first question is how to sustain the company if its a start-up). 
Image : An illustration what a single dev-shop can do. 

Working for a product company

Things are quite different when you work for a product company, the company is the product as well as a company like Facebook, Twitter etc or the company has multiple products it sells in the market to sustain and grow. The largest software companies are of this type like Oracle, SAP etc. The company does not have web projects (mainly web sites and web app/software) to deliver to the clients, it generally has only one or may be more products. The things you experience working for a product company are as follows:
  • You are provided with an already built software and you need time to understand how its built, then you can code new feature in the software or solve bugs in it.
  • As a developer, there is not a way to completely change the software design, data model or the software stack as generally its already running. (May even be some legacy everyone is scared it would break if you tamper with it.)
  • All your ideas, solutions and energy is generally focused in one product, you even get to work on things like performance, optimization and things that enhance the whole product.
  • The frameworks, languages and guidelines for development are fixed and as a developer you cannot decide if you want to use Angular Js and not Jquery. (You will not change 1000 lines of Jquery for your whim.)
  • Generally you don't get your hands dirty with system administrator or designer and front-end things, that is usually a no go territory.
  • Project management methodology is part of the system, you cannot really go far if you don't have a issue tracking system. Release management, deployments and source code version control (like git our favorite) are backbone for any product company as products are generally big and many developers work on parts of it.
  • Requirements are given by the Product Manager or Project Manager and IT can be the central pivot to make the company roll.
  • On the management level, the goals and vision is clear. The company may not be a software house but how to sustain does not depend on how may projects you do and deliver so its much focused on the product.
Image: some big names in the software product company space

I don't work for a pure software company now but without doubts its not a dev shop it is a product company. If you are looking for an internship or a job change, do think about the company you want to join is a dev shop or a product company. It's a personal decision on what you want to do but now you are informed on generally what will be expected of you in a dev shop Vs a product company. 
In conclusion, I personally think its better working for a product company than a dev shop for the structured and managed way of working in a product company.