My Life as a Software Developer in India
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 every day. 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 a little bit different and hard too. A few things are good, and a few things are bad.
The opinions of Software Developers from other countries on Indian Software Developers have surprised me a lot.
Here, I would like to share how I feel as a Software Developer in the Indian IT Industry.
These are all purely my opinions; you may or may not agree. If you feel I am generalizing something, I mean the MAJORITY, not ALL.
My First Job
I got a job in a small organization as a Java developer. Along with me, a couple of my close friends also joined the same organization. I am fortunate that I got a chance to work with very talented people at 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 would get familiar with how to compile and run programs and be familiar with compile-time and runtime classpaths, etc. On the other hand, our Architect thought another way. One day, he saw me coding in EditPlus, came to me, and asked, “Do you go to war without any weapons?” I had no idea what he was talking about, and he understood that based on my blank face expression. He pulled the keyboard from me, downloaded Lomboz Eclipse (one variant of Eclipse, not active anymore), and explained how to use it. Also, every now and then, he taught me some interesting keyboard shortcuts, and I was amazed at 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 a very hands-on, experienced developer. He literally remembered most of the core Java API methods and had a good grasp of design patterns. He is a kind of perfectionist. He never let us commit the code, even if the code indentation was not correct. One day, we were working late at night (12:00 AM) and had to deliver some urgent deliverable. At that time also, he insisted on correcting the indentation, cleaning up imports, removing unused variables, and 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 2 AM, cracking jokes on all the people in the office. So everything was wonderful.
The Real Journey Starts
After 3 years at my first company, I resigned and joined a BIG company, assuming a big company means better work, better pay, and a better work culture. I quickly realized that it is not at all the case! There, I was working on a legacy application that had the most horrible codebase I have ever worked on.
In addition to that, I ended up working with developers who had been with that company for a long time, had stopped learning anything new, had no interest in making the application better, and wanted to do things in the same familiar way, even though it was painful.
As the Indian IT industry is mostly based on the offshore development model, most of the time we end up maintaining legacy codebases. Rarely do we get a chance to work on greenfield projects. Even for those greenfield projects, the key architecture/design aspects will be done by the onsite team.
Fortunately, I got a chance to work on a few greenfield projects and was 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 the Technology Stream and don’t want to go into 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 lives, and not all developers must be passionate about technology, and that’s fine. Some people are 9 AM to 6 PM types, and some just get it done by whatever means and don’t care about code quality or maintainability, etc. It is very difficult to find passionate developers in India because most people start programming as part of their job only, not for fun or as a hobby.
At times when I learn something new or do some cool stuff, I look around to share my “wow” moment and find no one who can understand my excitement.
The New Blogger On The Floor
I was working on a project using the Struts 1.x framework, and I got into some tricky issues. I couldn’t find any solution after struggling for 3 days. 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 gave a 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. Maybe 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 a little bit better.
When someone posts a comment saying, “Your article helped me to learn something,” I feel very happy. I take a lot of help from the community, like StackOverflow, blogs, forums, etc. If possible, I try to give 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 was interested in writing 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 have known that I would have written the book even without any pay. I agreed to write the book because of my passion for technology, not to earn money.
When I had almost completed writing my first book, I was asked to write another book on PrimeFaces, and I agreed. It took approximately 18 months to write those two books. During all these 18 months, I didn’t have any breaks, no weekends, no outings, nothing. Whenever I found time, I kept on writing or reading what I had already written to see if I could make it better.
That was the time I realized how important it is to have some free time in life. Writing a book is incredibly time-consuming. If you are planning to write a book with the motivation of earning money, I would suggest you look for other options!
Finally, one day I got a courier, and I saw the printed copies of my MyBatis book. It feels great to hold the book that you wrote in your hand. 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 get are legacy projects or may be in maintenance mode, the management likes those people who are loyal and stick with the company (even though they 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 a 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 those heroes are, 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 that 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. Someone even wants to sponsor Pakistan to bomb India. Very mature people!
The main problem with Indian IT companies is that in order to get a 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, managers force team leads to get it done, and the team leads put deadlines on developers. And here 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 a few questions in my mind. How does the on-site, non-Indian client believe that the “Indian off-shore team can build it in 6 months when the on-site team estimated 18 months for the same project”? Why don’t they ask for an End-To-End Test Suite? Why don’t they ask for Code Quality reports?
Greediness to get it done for the cheapest possible cost! You get what you paid for!
Those who generalize and say, “The whole of 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 developers 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 would be ABSOLUTELY WRONG.
I strongly believe that there are great developers and architects also in India, and I have worked with some of them.
There are people like me who want to learn something every day 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 am 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, so I try to make contacts with 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 few conferences that happen in India compared to the 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 a 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 “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 the 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 constructive criticism amazed me. He is an awesome man.
I also love the talks by Uncle Bob (https://blog.8thlight.com/uncle-bob/archive.html), Martin Fowler (http://martinfowler.com/), and David Heinemeier Hansson (DHH). We can learn a 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 a better future
In recent years, things have been changing. Now, the Indian IT industry is not completely dependent on USA-based projects. There is a lot of growth in technology adoption in Indian businesses. But again, unless the thought process changes, nothing is going to get better. Companies should stop expecting “9 developers to deliver a baby in 1 month”.
A developer should become more professional and have the guts to say “NO” when they are asked to code something they can’t implement with good quality.
Anyway, over the years, I have learned that Software Development is not all about technology. The key part is understanding the business domain and communicating with other people. Hoping things will get better. 🙂
Related content
- Should you use Lombok? Or, is it bad for you?
- My attempt to understand why people perceive Java as complex
- Improve JPA application performance using HypersistenceOptimizer
- Tutorials
- Philip's Testing Spring Boot Applications Masterclass Course Review