This post is part of a series interviewing veteran developers, asking them questions about their journey to tech mastery and sharing the advice they have for those getting started.
Today we’re talking to John Pereira. John is a technology enthusiast who’s passionate about his work and all forms of technology. With over 15 years in the technology space, his area of expertise lies in API and large-scale web application development, and its related constellation of technologies and processes. He lives in sunny Sri Lanka, where he works as a senior back-end developer for a Dutch SaaS event company. You can find him writing odds and ends on randomcoding.com and on Twitter.
Let’s hear what he has to say about continuous learning, work-life balance, and knowing when to take a break.
Stack? How long have you been doing it?
I started writing code in QBasic and Visual Basic back in 1998, which I used to write tiny programs to do my math school homework for me. I think my biggest achievement at the time was writing a tic-tac-toe game in VB that you could play against. It had a LOT of if statements!
My first paying job that had anything to do with computers was as a web admin for a British e-commerce company back in 2006. I had started learning Microsoft’s ASP at this point, and it turned out that the custom-made ERP the company used was written in PHP, so I started learning that instead. I was pretty good at that job because I wrote little PHP scripts to automate a lot of my work.
A couple years later, my boss set things up so that I could switch over to the dev team. At this point, I was still a second-year student pursuing my bachelor’s. I was attending classes on weekends and working during the week. But that chance to get onto the dev team was my lucky break and was enough to get me going.
After a few years working for other companies, I cofounded a startup with a friend of mine in 2012. We started out creating a skills marketplace but eventually focused on mental health counseling services. It was the most rewarding and toughest thing I’d done up to that point in my life. I learned so much from doing it that it’s impossible to draw a comparison. We were based in India and Sri Lanka to keep our costs as low as possible, but our users were mostly in the US and other Western countries. We worked on it for about six years trying to make the finances work, but eventually, our money ran out. When we shut things down, we’d connected over 100,000 people to volunteer and paid counselors.
What made you want to go into programming?
Growing up in Sri Lanka in the ’90s, computers were an extremely rare thing that fascinated me. The first computer that I spent significant time with was a towering Intel 386 running Windows 3. I remember being fascinated with the programs that came preloaded with it: Lotus 1-2-3, Harvard Graphics, and a few games.
Unlike now, if you weren’t living in a first-world country, you rarely had access to the latest tech. So, while the rest of the world was checking out Windows 95 and 98, I was still playing around with MS-DOS and Windows 3.0!
My dad gave me some programming books. In those days, you just had to copy out all the instructions and hope you hadn’t made any typos. Needless to say, I made lots of typos, and it was an extremely frustrating experience trying to learn. But the games on the computer kept me hooked until I got better at the programming bit. I used the little knowledge I had to help me with my homework assignments.
Pretty soon, better tools came along, and it became easier to try different things. The big game changer was getting internet access at home. This taught me about websites and HTML, and I started to create garish-looking websites for myself using Macromedia Dreamweaver and MS FrontPage.
What were you most worried about when you made the decision to pursue a programming career?
I’m not a very mathematically inclined person. Everything I’d learned about computers pointed to the “fact” that there was a lot of math involved. So, I was nervous when I started my degree after school. To make matters worse, there actually was a lot of math in the degree program. I even failed a couple of subjects.
However, I got through because my other subjects were high enough to drag my average past the pass mark. Given this context, I wasn’t sure what to expect when I got around to the actual programming. But it turned out that I was worrying too much.
Yes, there’s some math involved in programming. But it’s not the type of math that people usually get nervous about. Unless you’re in an industry that uses advanced math when developing software (like civil engineering, medical, propulsion, etc.), you should generally be all right. Most of the math that I use nowadays I just picked up on the job. It’s just easier to learn when you know the context in which it’s applied.
What surprised you most at your first programming job?
I think my biggest takeaway was that everyone’s learning stuff as they go along. There’s no magical point where you say “I have learned what I need to do X.” It’s an evolving field, and you need to keep learning every day. I think this is a great thing because regardless of your experience level, there’s always something you can learn from someone else. And the people who do well in this field are people who are open to those experiences.
The flip side of this realization is that you can always make an impact, irrespective of how experienced you are.
Did you ever think that you’d made a huge mistake getting into this field?
There have been times in my career where I’ve been burned out and just wanted a break. But I’ve never felt that starting out on this path was a mistake. I’m extremely lucky and privileged that I get paid to do something I enjoy.
If you’re having doubts, that’s a good signal to take a break and take some time for yourself. Right now, I’ve gotten to the point of my career where I can pick and choose the things I want to be involved in. It’s given me a lot of time to look at other things that interest me. That’s helped me rediscover my love of learning new technologies.
What’s something that no training/bootcamp/degree could have prepared you for?
I think knowing the primary goal of the role you play within an organization is something you learn on the job. For example, if you’re starting out as a developer, your role is to find a solution to the problem that’s laid out in front of you. This is straightforward, and it’s a fairly easy thing to do for most people starting out on this career path.
But as you progress to higher rungs on that career ladder, your role switches to being a force multiplier for the rest of your team. A force multiplier, in this case, is someone who makes the rest of the team perform at a higher level than they normally would while working individually. At that point, you need to reassess the internal metrics that you use to determine whether you’re doing a good job. If you’re still measuring your value by the amount of code you’re pushing, then that can cause you to be dissatisfied because it won’t tally with how you’re actually spending your time.
What advice would you offer to people considering a career change to programming?
Programming as a career can be very rewarding, especially in countries like mine where it offers opportunities that are beyond its own shores. Compared with other careers, it can offer a lot more financial rewards and further opportunities like personal growth and travel.
But it can also be frustrating and hard to progress. You must come at it with a mentality of being open to new ideas and constantly updating your skill set. When you stop learning, you get into a rut.
Also, be sure to know the value of your own worth. The negative aspect of being in a career that is driven so much by passion is that there will be times where that will be taken advantage of.
You don’t have to sacrifice your personal time to prove that you’re a “real programmer.” You can treat it just like any other job where you clock in and clock out. Whether you go home and then work on your own hobby projects or do something that’s completely not related to programming is completely up to you.