In this edition of Developer Stories, we sit down with Joydeep Bhattacharya, Senior Developer at Geektrust, to discuss hacking into 8-bit gaming consoles, attempts to replicate human behaviour with AI, tech’s potential to impact society, a better approach to problem solving, the joys (pun intended) of Clean Code, and everything in between.
Hi Joy, thanks for taking the time. How’s the week been thus far?
It’s been both productive and hectic at the same time. We did a few things in production, had a few successes, deployed a few stories – a pretty good week overall!
How did you begin your journey into the world of code?
Everything began in the 7th grade with one of those 8-bit gaming consoles we had as kids. The ones with the plug-in keyboards, physical cartridges and games like Mario Super Bros. They had a program called GW-BASIC installed on them and you were able to write code on it. It made me extremely curious to find out more and I remember it having a documentation link that I clicked on which explained things in more detail.
So that’s where I started coding – in GW-BASIC on a TV gaming console! I remember being fascinated and began falling in love with programming. I began exploring other languages and eventually completed my Diploma in Computer Science and Engineering.
How did things develop from there?
Once I had experienced a few languages and programs, I moved to websites. Despite the sites of that time being quite primitive and not aesthetically pleasing compared to today, the fact that you could create something the whole world could interact with intrigued me and so I moved into web development for a time. I designed a few websites and a library management system for my college as well. This enabled me to receive feedback for the first time – from friends who used my websites and people in my college who interacted with the system I had created – and this helped me improve significantly.
It was those experiences that made me realise that I wanted to do this professionally. I think of programming as both my career and hobby, all wrapped into one.
It almost sounds as if you were naturally inclined towards this field. There were undoubtedly millions of kids at the time with the same gaming consoles and phones that didn’t even know these functionalities existed.
Do you feel like this was the case? Or were there other influences too – perhaps family members who worked in tech?
Well, my father worked in Education and my mother is a homemaker. I also don’t have any siblings. My parents actually wanted me to go into Physics but it didn’t interest me as much.
So I guess it happened naturally. I just fell in love with programming and the rest is history.
How long have you been working in this industry?
Almost 6 years. I was in Tech Mahindra for 5 of them and I’ve been with Geektrust for the last year or so.
Could you speak to the differences between the two companies and the transition between them?
I’d say that in large enterprises you’re often bound by a lot of factors. So let’s say you come across a bug in a product that you’d like to fix. The sheer number of procedures that need to be followed before you’re even allowed access to the product could sometimes take months because of all the red tape. I couldn’t see myself making tangible impacts in those sorts of environments and began to look for alternatives, leading me to the startup world. The culture of openness, accessibility and the need for multiple skillsets really appealed to me. At a startup, you’re expected to be the jack of all trades and that’s a great way to learn and refine your skills early in your career.
This is what led me to Geektrust. I actually came across them via a YouTube ad and was intrigued that they cared more about your code than your resume. The idea struck a chord in me, so I signed up and submitted code almost immediately. It was rejected and the score I received was quite poor. I went away, improved my skills and about a year later gave their coding challenges another shot. This time I was successful and received a much better score.
While I was trying to find a job through Geektrust, I received a call from Shubhi one day saying they actually had a position available internally that they thought I’d be right for and asked if I was interested.
I said, “Hell yeah!”. (laughs)
What was the journey like from your first unsuccessful Geektrust code submission to the successful one a year later? Did you attempt multiple submissions in the interim?
I didn’t because my original rejection clearly highlighted where I was lacking – my code wasn’t up to Geektrust’s Clean Code standards. This also made sense because of my self-taught programming background. So I spent the year learning how to write better, cleaner code before resubmitting my solution and, fortunately, I was successful the second time around.
What do you think are the potential trade-offs and differences between learning code formally through traditional educational sources versus a more self-directed approach?
Well, I should explain that I describe myself as being a self-taught programmer despite having a Computer Science degree because I only had 20% attendance at college! (laughs)
I struggled to find their approach to teaching very interesting because it was so heavily theoretical and not applicable to real-world scenarios. I actually learned using online resources and by playing around with gadgets that I had access to. I found myself drawn to more practical, hands-on approaches to learning how to program.
So I’d say that while developers who took the traditional learning route have the benefits of strong foundations and clear structure in their code, self-taught programmers may have the ability to approach problems more creatively and with unique perspectives. Perhaps a more traditionally educated developer would reference his or her education more frequently while problem-solving which could be at the expense of creativity and thinking outside the box.
Though I do think that, in time, the two paths would probably merge and experienced developers eventually acquire the best of both approaches.
What is your approach to solving challenges? Has this changed over your career?
Definitely. At the start of my career, I think I dealt with challenges very poorly. It was only until about 3 years into my career that I understood what I was doing wrong. Before that I struggled with challenges because I would think of them as a whole – one huge problem that needed to be solved. Today, I solve challenges by first breaking them up into little chunks and working on each piece at a time.
I also believe that if you can write down a problem accurately then you’re already halfway to the solution. I literally take a pen and paper and write down the problem statement. Once you do that you often realize that you don’t have all the information required to fully understand the problem or that there are gaps in your knowledge. This is crucial because, without a proper understanding of what you’re trying to solve, there can be no hope of finding a solution in the first place.
So I first take the time to understand the problem in its entirety and then break it up into smaller chunks. Only after these steps are complete do I actually attempt to solve the problem.
That’s such great advice – especially for new developers. What other advice would you give your former self?
I’d advise my younger self to work on communicating better. As an introvert I’ve always been on the quieter side – I’m the sort of person who wouldn’t often initiate a conversation but once someone approaches me I talk a lot. (laughs)
I think this can help someone personally but also professionally. For example, if you’re trying to solve a problem and get stuck, being able to walk up to your peers and ask for help can be a massive advantage. There’s a wealth of knowledge all around you if you just develop the confidence to approach people, so I wish I had worked on this aspect of my personality when I was younger.
Geektrust places huge emphasis on the importance of Clean Code. It’s the reason why their coding challenges are unconditionally accepted by so many organizations.
What is your perspective on Clean Code – both from your time before Geektrust and now that you’re with them?
In the five years prior to joining Geektrust, I never noticed a lot of importance placed on writing Clean Code. In fact, it once took me 3 months just to understand a code base I had to work with because of how poorly the code was written, with no comments or easy-to-understand logic to its flow. I had just finished a year of training and was put in charge of a development project. I remember having no clue what the code even did and needed to constantly approach people who worked on it previously to explain things to me. This was obviously very inefficient and created unreasonably long ramp-up times.
There also seemed to be this approach of first getting the code down and then using tools to identify ways to improve the code. This in my opinion was inherently flawed – why first create a mess and then try to fix it? (laughs)
On the other hand, at Geektrust, in less than a year I’ve already worked on multiple features, most of them are in production already. Ramp-up times have been low despite my lack of fluency with Golang at the time of joining. So even though I needed to switch to a completely new programming language, new code base and new culture, I still found it much easier to get up to speed at Geektrust because of how clean their codebase is.
Our world is more reliant on technology than ever before and while there are many ways that it has improved our lives, there are also some serious concerns about its potential impact on society.
As someone who is intimately involved with tech, what are your thoughts?
The two areas in which I hear technology being discussed in this manner are automation’s impact on jobs and social media’s tendency to make us disconnected from each other. In my opinion, both fears are overblown.
With automation, while there will be an impact on jobs in certain industries, I feel like there will also be a lot of opportunities created. This has been the case throughout history and whenever a new technology replaces an outdated one. Take cable TV for instance, before the rise of YouTube and other streaming platforms it was probably a great industry to work in. Today, that has certainly changed but there are also tremendous opportunities created by streaming services that never existed before. We see so many creators pursuing careers making content on sites like YouTube.
Technology opens new doors while closing old ones and the only way to survive is by staying up to date.
It’s the same with programming. New languages and tools are created every day and there are clear trends within the industry. You can’t be expected to be in demand if your expertise is in something that was in use 20 years ago. You certainly wouldn’t find opportunities in a start-up, that’s for sure!
As far as social media’s tendency to make us disconnected goes, I think there’s individual responsibility to consider as well. I actively choose to spend my free time meeting friends offline and keep track of how much time I spend on social media. Also, people were disconnected before social media as well. It’s as much a human psychology problem as it is a technological one, in my view.
What would be your dream project?
To be honest, I don’t actually think I have one. I guess I’ve never thought about it that way. My goal has always been to keep learning new languages and technologies, and pursuing new skills. Never becoming complacent.
What do you do when you aren’t programming?
I like to play the guitar and am part of a band. Though unfortunately, since the pandemic, we haven’t been able to jam together as often as I would like. I also enjoy online multiplayer gaming.
Why do you code?
I think, fundamentally, I code because I enjoy solving problems. I find myself thinking of how code could solve every problem I encounter in my life. Like if there’s something wrong with an electronic device, I try to emulate it in code. I’ve even tried replicating human behaviour in code! (laughs)
I don’t know if it’s always the right approach but I enjoy thinking about problems through the lens of code.
That’s fascinating – especially the bit about replicating human behaviour through code. Tell us more.
Humans, of course, learn throughout their lives. When we are born we’re empty and everything from learning to count to speaking to others is a learned behaviour. I try to replicate these learning models in code and enjoy working on this in my spare time. For example, I recently developed a project that uses AI to generate essays around a topic. It isn’t perfect or anything, but it allows me to explore and better understand the inner workings of human behaviour.
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.
If you’d like to be featured in our Dev Stories or know someone whose story can inspire others, write to us at firstname.lastname@example.org.
Liked this story? Please share it or leave us a comment.