In this Dev Story, we discuss why tech does not need to be a developer’s top priority (gasp), forgetfulness as a virtue, the power of being tactically lazy, and why it’s people all the way down. With Nandagopal Nambiar, Consultant Developer at Thoughtworks and one of the friendliest people you’ll ever meet.
Q: Let’s begin with a little bit about you and how you got interested in programming.
It all began with that very first print line. The first bit of code that worked reeled me in and hinted at some magic working behind the scenes to give me the output I wanted.
So, I figured, why not? I picked up computer science after my 10th and then pursued computer science engineering too. So I would say the starting point was very simple — I was just curious to know what was happening behind the scenes.
I wanted to know the secret behind the magic trick — I felt that it was something logical, something I could understand. And, once you figured it out, it was useful and effortless — like let’s say you create a simple calculator program, you just write the code once and you can calculate anything you want. Forever.
I found that pretty powerful and wanted to learn more.
I was interested in making things work. It wasn’t too complicated or anything — I just tried out common problems and patterns that students used to solve. As long as there was a logical challenge to overcome, I’d give it a shot. I’m not a geek or anything. I wouldn’t call myself a hardcore techie. It’s just that when there’s a problem, I feel like solving it. That’s it.
Q: That’s what all the geeks say! Even Dhanush and Clair (Geektrust’s resident super devs) and all are like, “we are not geeks, okay? We are just interested in solving problems”.
Actually true in my case, though. I’ll tell you why also; it’s because of my terrible memory! All the technical stuff, specifications and things like that, never stay in my head. All that sticks is that which is logical — strategies and techniques, practices and processes. If I was asked only technical questions during an interview, I’d flunk for sure! (laughs)
Q: That’s interesting. Did you first discover this in college or once you started working?
The former. Being exposed to multiple languages during engineering meant that by the time you got the hang of one language, you were being introduced to the next one. So that’s where I felt that it’s not the code or language that matters, but what you’re doing with it. This understanding deepened during my first foray into work — I interned for two weeks at Experion where I was introduced to their analytics and did some cybersecurity research for them.
After this, I decided to leave Kerala for the first time and move to Bangalore.
Q: Why Bangalore?
I received an offer from Brillio and wanted to expand my horizons. Having spent my entire life in Kerala, I needed to get out of my comfort zone, meet people from different cultures, and understand their perspectives and approach to solving problems. It was both interesting and challenging, looking back. There was just the right amount of pressure and challenges to overcome and I was fortunate enough to be mentored by some amazing people – some of whom I’m still in contact with today.
Brillio was also when I first started looking into automation in greater depth. I would say I’m a little lazy (laughs), so I enjoy figuring out ways to make things easier for myself and those around me.
Q: Different things inspire different people, it’s not always just the tech. What motivates you?
All of the above is undoubtedly interesting but I think what motivates me most is working in ways and areas that have real-world impact. Like, if a certain language or stack actually improves the life of an end-user, that’s what gets me out of bed in the morning excited to learn and master it.
As mentioned earlier, I’m a people person, and so a technology that doesn’t impact a human end-user is pretty uninteresting to me — no matter how complex or revolutionary it may be. That’s what makes me want to code. For me, coding is just about enablement. That’s the best thing about coding. It enables you to do things.
For example, writing text-to-speech code for the disabled — the real-world impact is clear. It’s helping someone out. Or when you automate a test suit, you’re helping out your QA, right? It’s making that work easier and more efficient. You’re saving a lot of time and that’s what motivates me.
Q: Through the lens of helping people, automation and solving problems, what’s your take on clean code?
It’s essential, in my opinion. I first discovered it through object-oriented programming — a concept related to mapping real-world objects to code. Clean code was an addition to it.
You aren’t coding just to solve a problem for today. The intention behind solving a problem is that it’ll remain solved or that it can expand and solve greater interrelated problems tomorrow. So it’s not about writing code today, solving a problem and then leaving. It’s about the code being reusable, workable and understandable ten years from now. That’s where best practices in coding come into play.
Q: How did you come to realise its importance?
To be honest, I think I’ve always been a bit OCD about it. (laughs) I remember being annoyed whenever I came across code that was poorly formatted or improperly indented. And when it came to my own code, there was a strong desire for it to look good — it’s much nicer to look at and is a better experience to go through. So at the start, it was purely instinctual.
Once I delved deeper into why clean coding is important in the longer term I understood its power beyond just the aesthetics and readability. A code base that is clean can be used for decades and can be infinitely modified and upgraded whereas one that is messy and poorly put together will be basically unusable one day. So for any business or organization that wants to be around for the long term, a clean and well-maintained code base is essential to their success over time. It’s foundational and will ensure that you go into production faster and put out a better product.
Q: How was your experience solving a Geektrust coding challenge and using the platform for your job hunt?
Solving my first Geektrust challenge was pretty exciting and fun since there was a story behind the challenge — something I’ve rarely come across. Of course my first score was embarrassing but thanks to the team’s feedback, my score improved in subsequent attempts. I had fun solving the problems.
From my experience and interactions, I felt that Geektrust is redefining the way job hunting works for a candidate. My resume was simply a Java code that ticked the boxes on the Geektrust checklist for clean code and that’s what got me an interview with Thoughtworks. The entire interview process and onboardings later on were absolutely smooth and well coordinated. My experience with Geektrust was not that of a job hunt but a journey of learning, improvement, growth and rewards.
Q: What’s been the biggest challenge you’ve faced in your career thus far?
Fortunately, I haven’t had to deal with anything too difficult yet. Perhaps issues around translating the customers’ expectations to the dev team. This can be especially challenging for a fresher and it’s something I experienced early in my career — it’s a new environment, and you aren’t really sure what to expect or how to deal with these hurdles, so it can be quite complex to navigate at the start.
In fact, I’d probably say communication is the biggest challenge across the industry at the moment. It’s something we’re trying hard to address at Thoughtworks too. How does this increasingly complex network of systems and human beings interact with each other effectively? Depending on the situation, it could be system to system, system to human, human to system or human to human, so coherent communication is no mean feat. Once you’ve figured this out you’re over halfway there — all that’s left is to technically enable things.
Q: Would you describe yourself as more of a generalist than a specialist?
I’d say that I’m flexible. Right now I’m working on Java and would probably have a deeper understanding of it than other languages. However, if I was to switch to something new tomorrow I’d promptly forget the intricacies of Java! (laughs)
The underlying logic would stay though, and I think that’s the most important part. I’ve actually come to think of this flexibility and reliance on logic as an advantage — it allows me to work with lots of different languages and technologies without too much difficulty. As long as I have a bit of time to get up to speed with something new and understand the problem we’re trying to solve, I can probably figure it out.
Q: What have your work experiences taught you?
The internship at Experion helped in giving me an idea of what a day in a professional’s life looks like. It was great to interact and learn from them. Soon enough, I was able to put those learnings into action at Brillio. There too, I found some really good mentors to guide me in writing code and solving problems. That’s when I started solving a couple of programming challenges out there and stumbled upon the concept of clean code, which I then started to learn and practise more.
Thoughtworks showed me that there were so many areas where I needed to improve. For example, they often ask me to work on something that is already working — to refactor, write test cases, work out the kinks — it’s something that perhaps in the past I’d question as being not the best use of my time. I mean, if it’s already working, then isn’t it better to move on to something that isn’t? This is where I realised the value of working today for an easier, faster and better tomorrow.
So that’s where I am now. It’s a journey, a continuous learning process. I still need to learn a lot and I’m trying my best to absorb as much as I can every day.
Q: What advice would you give to your former self?
Three things, mainly.
The first would be to take every opportunity that you get to learn. There’s nothing that will be a waste of time and even if you try something and fail, well, failure is inevitable and, if you’re learning from it, it’s helping you grow.
The second would be not to sit quietly in a corner waiting for opportunities to come to you. The real world is not like college. Be proactive and unafraid to go up to someone and ask them politely for what you’d like to learn or advice on how to get something done. Be open and responsible for your own growth.
The last would be to find interest in what you’re doing. Because if you’re not then you won’t be happy and if you’re unhappy, then you’ll stop growing and wanting to learn.
Q: And finally, is there an area in tech that fascinates you?
Yes, definitely. Many, because there are a lot of things that I haven’t had the chance to work on yet. I’d like to learn more in the field of cloud, AI and ML, big data, and perhaps VR one day — so many areas really!
But it’s the human impact that’ll end up driving my decisions. I would like my work to serve a person or community at the end of the day. I find it both fulfilling and fascinating. Like there’s the obvious satisfaction of helping people but there’s also a lot of psychology involved that I find really interesting too.
So the tech is really secondary to me — I love to take on something new if it adds value to people (be it devs or end-users). What matters is using the right tech ethically for the good of humanity.
At the end of the day, it’s about the people, right? Isn’t that what all this technology is for?
About Geektrust Dev Stories
Geektrust is a platform for technologists to find interesting opportunities and shape the future of tech. In our work, we meet developers from diverse backgrounds, experiences and perspectives with inspiring stories. So we started the Developer Stories series, to bring stories of different developers to the world.
Liked this story? Please share it or leave us a comment.