I wanted to document this since around a year now but didn't get enough time, life has become busy, Well this story started long back when I used to work in small companies and I always dreamed to someday join big software companies CMM3 or CMM5 level, after around 3 years of working in small companies I joined a news media organization which had an online division. I worked there for over two and a half years all this time was amazing, full of fun, learning and experimenting, I almost fell in love creating and maintaining heavy traffic web applications. I clearly remember there was a day when my manager asked me that sometimes he wonders what makes me stay in that company in such small salary at the back of my head I always knew that what I am learning is far more precious than the salary that I am drawing. It was not that I always wrote nice code as a software engineer adds years to his experience he refines himself in how to code efficiently, the news company being a product company gave me enough of opportunity to improve upon my skills and gave me and my team the liberty to write good code which we could maintain for a long time, well at first this may sound foolish that which company won't like to give time to write good code but the fact is bitter, managers want things done in stiff timelines and they are most of the time ready to compromise on the quality of code. as a result of which a large chunk of developers never learn quality coding and if few wants to write good code they get frustrated while almost forced to write bad code.
In the same company once our marketing manager advised the business manager that instead of building a big technical team for development for online applications we should get most of the things outsourced to IT companies, when my manager put this idea in front of me I was also happy that we as a technical team can now focus on bigger aspects rather than just coding, but then I asked my manager that who would guarantee the quality of code that we get from the outsourcing company, I mean it is fine that they give us a working application once but then if we have to maintain it, it should be good in terms of code quality and so I suggested that invite some CMMi Level 5 company, due to budget limitations we could not afford CMMi 5 companies and a small company was invited who had an experience in News media portals, we gave them a small project first it was very expensive ( compared to be done by our in-house team) and the quality was pathetic. I was not happy and kept pinging my manager about that that if we cannot afford a cmm5 we better do it ourself. That company was not given anymore projects and we continued to work with our in-house team.
After working for a long time in this wonderful company I decided to move on, my plan to do so was not because there was some problem with the job but I slowly started feeling that I am getting outdated in terms of technology and my hunger to code in cutting edge technologies was not getting satisfied. First big hurdle was the technology that I worked in LAMP it is an excellent stack for websites but big software companies mostly used Java for their projects. but I still managed to get into a mid sized CMMI Level 5 company in Delhi, getting into this company was a dream come true to me as I wanted to get into on such since long time now. I joined this organization as a Technical Analyst and my first task was to tune up MySQL stored procedures for an American Airline company. I was being billed to the client but I was not getting work to do, initially I felt bad about wasting me time in office and taking home salary, but very quickly I realized that there are no projects in the technology that I am used to work on, I was heart broken as this was someplace that I always wanted to be into and now when I was there these guys had no work for me, so I bought books and started reading, I read struts once, didn't understand much, read the book again because I had 8 hrs a day to read books, this was amazing I quickly started picking up java, and some very helpful people around helped me out while I used to write some sample code, after some time I was moved to another project that had Mainframe to Open source migration and the code was to be written in Java, I was worked in Java very actively over there and got confidence that I can code in this language. one thing more that I learnt in my one year spent in this company was that even CMMi Level 5 companies do not write good code ( I agree that exceptions are always there ) I felt that the kind of code that teams are churning out is no way of any standard compared to what companies showcase themselves as.
Code quality and job security were my top concerns when I again started looking out, my luck was good this time and I got hired by one of the top Indian Software company, It has been ~11 months me being here, all this time I have coded for 12 hrs everyday and learnt Spring, hibernate, webservices, etc. and I am happy to find some people who are concerned about the quality of code.