I am Siva, working as a Software Developer in Hyderabad, India. Working as a Software Developer is very exciting as you see new things coming in everyday. If there are no new things at least we put a new fancy name to some old concept and celebrate (#microservices) :-). But in my opinion working as a Software Developer in India is little bit different and hard too. Few things are good, and few things are bad.
The opinions of Software Developers from other countries on Indian Software Developers surprised me a lot.
Here I would like to share How I feel as a Software Developer in Indian IT Industry.
These are all purely my opinions, you may agree or may not agree. If you feel I am generalizing something I mean MAJORITY not ALL.
My First Job
I got a job in a small organization as a Java developer. Along with me couple of my close friends also joined in the same organization. I am fortunate that I got a chance to work with very talented people in the very beginning of my career.
My first manager used to force us to use only Notepad++/EditPlus for coding for the first 2 to 3 months so that we get familiar with how to compile, run programs and be familiar with compile time and runtime classpath etc. On the other hand our Architect thinks other way. One day he saw me coding in EditPlus and came to me and asked “Do you go to war without any weapons?”. I have no idea what he is talking about and he understood that based on my blank face expression. He pulled keyboard from me and downloaded Lomboz Eclipse (one variant of Eclipse, not active any more) and explained how to use it. Also every now and then he taught me some interesting keyboard short-cuts and I am amazed how quickly we can code in an IDE instead of Notepad/EditPlus.
I learned very important things from my manager and architect like how important it is to understand how things work and how to effectively use tools to speed up the work.
On the other hand my team lead was very hands-on experienced developer. He literally remember most of the core Java API methods and have good grasp of design patterns. He is a kind of perfectionist. He never let us commit the code even if the code indentation is not correct. One day we were working late night (12:00 PM) and we got to deliver some urgent deliverable. At that time also he insisted to correct the indentation, cleanup imports, unused variables, strictly following TABs or spaces consistently etc.
But later we realized how important it is while merging all the code changes from different developers. He always says “If you are going to do something, do it well. Otherwise don’t do it”.
As my other team members were also my close friends we didn’t have any conflicts and no politics at all between us. We used to have Friday night parties from 9 PM to 2AM, cracking jokes on all the people in office. So everything was wonderful.
The Real Journey Starts
After 3 years at my first company I resigned and joined a BIG company assuming Big company means better work, better pay and better work culture. I quickly realized that it is not at all the case!. There I was working on a legacy application which has horrible codebase that I have ever worked till then.
In addition to that I ended up working with developers who stick with that company for a long time, stopped learning anything new, have no interest to make the application better and want to do things in the same familiar way even though it is painful.
As Indian IT industry is mostly based on offshore development model, most of the times we end up maintaining the legacy code bases. Rarely we got chance to work on greenfield projects. Even for those greenfield projects the key architecture/design aspects will be done by onsite team.
Fortunately I got chance to work on few greenfield projects and involved in designing the application from scratch.
In many of the organizations there is no clear career path for those who want to continue in Technology Stream and don’t want to go to People Management. Even worse some companies force developers to step into people management after some years of experience.
Different people will have different interests in their life and not all developers must be passionate about the technology, and that’s fine. Some people are 9 AM to 6 PM types, and some are just get it done by whatever means and don’t care about code quality or maintainability etc. It is very difficult to find the passionate developers in India because most of the people start programming as part of the Job only, not for fun or habit.
At times when I learn something new or did some cool stuff then I look around to share my wow moment and I find no one who can understand my excitement.
The New Blogger On The Floor
I was working in a project using Struts 1.x framework and I got into some tricky issue. I couldn’t find any solution after struggling for 3 days also. I kept on debugging and searching all over the books and forums. Finally someone wrote an article on the exact problem and provided a solution. I followed his solution and it worked. I told million thanks to the blog author. But the thought that some unknown developer’s blog helped me a lot stuck in my mind. I too wanted to start a blog. May be I too can give something back to the community. So I started my blog www.sivalabs.in writing about the things that I learn.
Soon my articles got published on community websites like DZone and JavaCodeGeeks. Though my English writing skills are not good enough I keep on writing articles and I hope now I am getting it little bit better.
When someone post a comment saying “Your article helped me to learn something”, I feel very happy. I take lot of help from community like StackOverflow, blogs, forums etc. If possible I try giving something back to the community, my 2 cents 🙂
Becoming A Book Author
After I started blogging and my articles got published on DZone and JavaCodeGeeks, my blog started getting more and more visitors. One day I received an email from Packt Publishers asking me whether I am interested to write a book on MyBatis and I was very excited about it.
Once I agreed to write the book, they explained the writing process and the payment details. They might not know that I would have written the book even without any pay. I agreed to write book because of my passion for technology, not to earn money.
When I almost completed writing my first book I was asked to write another book on PrimeFaces and I agreed. Approximately it took 18 months to write those two books. During all these 18 months I didn’t have any breaks, no week-ends, no outings, nothing. Whenever I find time I keep on writing or reading what I have already written to see if I can make it better.
That was the time I realized how important it is to have some free time in life. Writing book is incredibly time consuming. If you are planning to write a book with the motivation of earning money, I would suggest to look for other options!!
Finally one day I got a courier and I see the printed copies of my MyBatis book. It feels great to hold the book in your hand that you wrote. I got very emotional that day.
Challenges for passionate developers in India
There are many issues that Indian Software Developers face.
Good developers are like war heroes
As most of the projects we got are legacy projects or may be in maintenance mode, the management likes those people who are loyal and stick with the company (even though you don’t pay well or treat them like one type of RESOURCE) rather than strong technical people.
Good developers are like war heroes, they are required while starting a new project or creating some core design. Once the core design is ready other developers can follow the design and add methods to the flow. Just like once the war is over no one cares where are those heroes, once the core design of the system is ready many companies won’t care about those good developers.
Many Non-Indian Techies hate Indian developers
Every now and then I read articles about Indian Software Developers by someone bashing all the Indian software developers concluding the whole Indian IT is crap. Well, that is one individual’s opinion and different people have different opinions, and that’s perfectly OK.
See this article https://avinashsingh.wordpress.com/2007/04/05/a-myth-called-the-indian-programmer/ and read the comments. Even someone wants sponsor Pakistan to bomb India. Very matured people!!.
The main problem with Indian IT companies is in order to get the project they convince the client that they can deliver the project in almost impossible timelines. To meet these crazy timelines they push managers to get it done and managers force team leads to get it done and the team leads put deadlines to developers. And here is is the biggest problem with Indian developers. Many of the Indian Developers don’t know how to say “NO”. They simply accept the crazy timelines and try to finish it. And the outcome of this whole process is “Unmaintainable crappy code”.
But I always have few questions in my mind. How the on-site Non-Indian client believes “Indian off-shore team can build it in 6 months when on-site team estimated 18 months for the same project”? Why don’t they ask for End-To-End Test Suite? Why don’t they ask for Code Quality reports?
Greediness to get it done for cheapest possible cost!! You get what you paid for!!
Those who generalizes and say “The whole Indian Software Developers are bad” should think before saying things like this. I don’t think all the people living in one geographical location will automatically become good or bad. There will be good developers as well as bad developer everywhere. I worked with some onsite developers who are very arrogant. So is it correct to say all the on-site developers are arrogant. That will be ABSOLUTELY WRONG.
I strongly believe that there are great developers and architects also In India and I worked with some of them.
There are people like me who want to learn something everyday and become a better developer than yesterday. Over the years I learned “How to learn new things quickly?”. So I learn as many things as possible and be ready to work on anything. You want me to work on Spring or JavaEE, I am fine. You want me to work on Python or RoR I am ready. You want me to use Eclipse or NetBeans, no problem.
Following the Community
As I said it is very difficult to find passionate developers in India, I try to make contacts with the passionate developers around the world using Social Networks like Twitter.
I like to attend technical conferences and meet other great developers. But unfortunately there are very less conferences happens in India compared to USA. So I try to watch those conference talks on InfoQ, Parleys or Youtube and I enjoy it a lot.
I love the talks by Venkat Subramaniam (@venkat_s) which are very informative and funny. I can’t stop laughing after reading few jokes in his book Programming Groovy 2: Dynamic Productivity for the Java Developer https://pragprog.com/book/vslg2/programming-groovy-2. He is really an amazing man.
Talks by Venkat Subramaniam on Parleys https://www.parleys.com/author/venkat-subramaniam
- How To Approach Refactoring by Venkat Subramaniam https://www.youtube.com/watch?v=iGsPeR-SYYo
- Ten Cool Things We Can Do with Popular JVM Languages https://www.youtube.com/watch?v=Ulcl2TjHktA
- 33rd Degree 2012 - Pointy haired bosses and pragmatic programmers - Venkat Subramaniam https://www.youtube.com/watch?v=lfmKvRaNnUs
- Scala for the Intrigued https://www.youtube.com/watch?v=grvvKURwGNg
I am a big fan of Rod Johnson and I love his talks on Entrepreneurialism http://www.infoq.com/interviews/rod-johnson-entrepreneurialism and the “Things I wish I’d known” http://www.infoq.com/presentations/Things-I-Wish-I-d-Known in which he shared his journey of building Spring framework and creating an ecosystem around it. What a great presentation.
I also watched his “Scala in 2018” talk https://www.youtube.com/watch?v=DBu6zmrZ_50 and a discussion regarding the same Scala talk on youtube https://www.youtube.com/watch?v=hZlxBRnxzDc. His way of taking the constructive criticism amazed me. He is awesome man.
I also love the talks by Uncle Bob https://blog.8thlight.com/uncle-bob/archive.html, Martin Fowler http://martinfowler.com/, David Heinemeier Hansson (DHH). We can learn lot of things from their decades of experience.
I follow the talks and blogs of the awesome Java community leaders like
- Antonio Goncalves @agoncal http://antoniogoncalves.org/
- Adam Bien @AdamBien http://www.adam-bien.com/roller/abien/
- Reza Rahman @reza_rahman https://blogs.oracle.com/reza/
- Arun Gupta @arungupta http://blog.arungupta.me/
- Josh Long @starbuxman
- Phil Webb @phillip_webb
- Cagatay Civici @cagataycivici http://www.primefaces.org/
- Oliver Gierke @olivergierke http://olivergierke.de/
- David Blevins @dblevins http://www.tomitribe.com/blog/
- and many more.
I don’t miss even a single blog post or tweet from the rock star bloggers like
- Baeldung @baeldung http://www.baeldung.com/
- Petri Kainulainen @petrikainulaine http://www.petrikainulainen.net/
- Vlad Mihalcea @vlad_mihalcea http://vladmihalcea.com/
- Abhishek Gupta @abhi_tweeter https://abhirockzz.wordpress.com/
- Manuel Jordan @dr_pompeii http://manueljordanelera.blogspot.in/2014/06/manuel-jordan.html
- Lukas Eder @lukaseder http://blog.jooq.org
- Trisha Gee @trisha_gee http://trishagee.github.io
- Thorben Janssen @thjanssen123 http://www.thoughts-on-java.org
- Nicolas Frankel @nicolas_frankel http://blog.frankel.ch
- and many more.
I love this whole awesome Java community!!
Looking towards better future
In recent years things are getting changed. Now Indian IT industry is not completely depending upon USA based projects. There is a lot of growth in technology adoption in Indian businesses. But again unless the thought process changed nothing is going to get better. Companies should stop expecting “9 developers to deliver a baby in 1 month”.
Developer should become more professional and have guts to say “NO” when they asked to code which they can’t implement with good quality.
Anyway, over the years I learned Software Development is not all about technology. The key part is understanding the business domain and communicating with the other people.
Hoping things will get better 🙂