Reflecting on my first pair programming interview

For those who don’t know what is pair programming, it is basically a software development technique where two developers/software engineers work together on the same machine. At any one time, one would be doing the actual programming and the other would be reviewing the written code. In both cases, communication between the two developers/engineers is very important.

Pair programming is usually done at some companies who want shipped codes or software that has fewer defects. After all, defects on shipped code could mean higher cost in terms of quality checks and troubleshooting.

And for some companies pair programming is also done as one of the interview stages. One of the purpose is the interviewer to figure out if you are suitable for the position. Interviewees are judged on their soft skills such as communication, ability to problem solve, plan and think critically, and technical capabilities. Another purpose would be to determine if the interviewee is able to work with other developers in the company.

Pair programming interviews are also there for the interviewees to understand who they are working with and how they may have to work in the company. It’s a good chance to find out if he or she is suitable for the applied role.

For me, despite working as a software engineer for five years now, I have never done pair programming. Most of the time, I work alone or in a team. And when it comes to interviews, the toughest kind I get are those where you have to do technical quizzes, solve programming challenges or do whiteboard problem solving.

So having to do a pair programming interview for the first time is both exciting and scary. And sad to say, I didn’t pass the interview.

Towards the end of the interview, the interviewer gave some really honest and constructive feedbacks that are helpful for my personal growth. I thank him for that and for the time he spent on me.

At the same time, I feel really shitty about the interview failure, which is expected. But my mood is now about to fall off the cliff. For some context, I have been struggling with burnout for months, depression and forms of anxiety for the last four. My mood was only just stabilising after three weeks of anti-depressants.

Don’t get me wrong, I’m not looking for any sympathy nor trying to guilt trip anyone. I’m just sharing what I am feeling and have been through.

So what went wrong and could be better?

Low to average technical skills

My JavaScript fundamentals are weak. I was having issues with lambda and anonymous functions as well as some other fundamentals like passing of data. It prevented me from figuring out the solutions to some of the problems I encountered. The last time I did any decent amount of JavaScript was two years ago and even then, I only used the surface of what the language is capable of.

Making matters worse, I had to work with ReactJS, which is a JavaScript framework for developing UI. I also have to work with Redux, which is another JavaScript framework for state management. And it was no fault of the interviewer. I indicated that I want to do frontend development with ReactJS during the previous interview with one of the company’s employee.

At the end, a couple of hours spent every night for the past four days to learn ReactJS and Redux simply isn’t going to cut it.

But it doesn’t change anything. If I still want to be a frontend developer and be good with ReactJS/Redux, I have to keep learning and practice. And develop some apps using those frameworks along the way.

Failure to comprehend actual requirements

This is really on me. I was given the chance to read about the requirements and end goal of the exercise. The key focus areas were listed down in the document. But for some reason, I didn’t realise that I hadn’t really read and understand the whole thing before jumping in to come up with a solution. I could only attribute it to stress and anxiety.

Due to that, the solution I came up with was half-baked and caused major problems further down the development process.

Therefore, I really have to work on improving my resilience to stress and directing the brain to focus better. This is the only way for me to be able to understand future situations more clearly and come up with a better solution.

Overengineering

In software development, there are three principles that all developers should follow for higher productivity. They are:

  1. DRY => “Don’t repeat yourself”
  2. YAGNI => “You aren’t going to need it”
  3. KISS => “Keep it stupid simple or “keep it simple, stupid”

And because of my failure to comprehend the actual problem, my half-baked solutions caused me to violate principle 2 and 3. There were additional React components that I created that weren’t necessary and made the codebase more complex.

I’ll admit that I violated those two principles a lot of time during my five years of software development experience. It is because I like to provision for future uses. Breaking those principles served me well so far because I have experienced scope creep that requires components or functionalities that I thought of in advance and had implemented. That means, I didn’t need to spend extra effort to develop and refactor my code later.

Going forward, I really need to train myself on going for the simplest and fastest solution to any problem.

Took too long and prevented successful gauge of my skills

Because of overengineering, it took me more than twenty minutes to develop the application foundation. After which, I had to redo some of my codes in order to support certain functionalities that I have overlooked because of my failure to read and comprehend the requirements. More time was wasted.

Therefore, I was unable to implement the other features of the application that would have allowed the interviewer to determine my understanding of ReactJS and Redux.

Final thoughts

Self-awareness is actually a very important skill to have. With it, you might be able to determine if you are suitable for a given role or job.

In my case, the combination of my highly-sensitive nature, under-developed stress resilience, highly self-critical and low self-esteem meant that I hadn’t really been able to function at the level required for a so-called experienced software engineer who’s been at this job for at least five years. I’m simply not ready yet to take on roles that require me to be a consultant or a quick thinker.

The other thing that I figured out was that the number of years of experience isn’t really a good gauge of your skills. The interviewer did point out that despite my years of experience, I still wasn’t able to grasp ReactJS even after 24 hours (spread over four days) of reading and practice. He implied that he was able to pick up the framework within two days instead of four.

With that, it could mean that either my fundamentals are very weak or that I’m simply not smart enough to pick up something fast. Or maybe both. For the former, I could work on it by going to read and study the fundamentals again. For the latter, well, I can only work harder than most to achieve the same skill level.

Either way, I’m just glad that I’ve been through it and knows what’s out there. There are valuable lessons to be learnt here, which is all that matters.

A glimpse of what’s next in life

For most of us, we faced the question of what do we want to be at the age of around fifteen to sixteen. However, our teenage minds are still struggling with insane amount of pubertal hormones and making the right decisions. That means, it’s virtually impossible to know what one wants to do in the future. And in Singapore, we can delay that decision until we finished and passed the GCE ‘O’ levels examinations. Not that it’s a particularly long delay. Only then, we can choose to continue on with GCE ‘A’ level or go with tertiary education.

Students who decide to choose either the Institute of Technical Education or Polytechnics for their tertiary education face the dilemma of what to specialise in. And most of my friends that I know did not continue to develop a career based on their chosen course of study.

I was one of the few exceptions. I went with information technology, developed a whole set of skills related to software design and development. Then I continued on with a degree program in Computer Science. After graduating, I developed a career as a software engineer for the next five years. All in all, I have done ten years worth of software design and development.

During that period, I show a lot of enthusiasm for coding and software. I read up a lot, have my own pet projects, etc.

And as of late, I came to realise that software engineering is no longer what I want to do anymore. The sheer amount of changes in terms of programming languages, frameworks and development toolkits overwhelmed me so much that I gave up. There are also many other reasons that could have contributed to pushing me into this stage in life.

That feeling of being stuck at a crossroad was terrible. It caused me a great deal of angst, worry and confusion. My workload recently has also increased dramatically that I felt like I no longer have any control over my life anymore. Combine that with my decreasing interest in software development and a very demanding boss meant my workday is really miserable.

It went on for two months until something in me finally snapped. At least, I think that’s what it is. I slipped into severe depression, at least according to the doctor who saw me, and I know I’m not out of the woods yet. Still pending a consultation with a psychiatrist and counselling by a psychologist. On the surface I may look like I have it all under control. Deep down, the turmoil is real. Certain triggers can remind me of how trapped I am and caused my mood to swing dramatically. I found myself on the verge of tearing up and break down so many times. And at work, when the stress or amount of tasks get high enough, extreme anxiety sets in and I find myself feeling really scared. There were also countless suicidal thoughts that intrude when I’m by myself.

And the worse part now is that because of the US-China trade war caused by an unstable man-child sitting in the White House, the world’s economy slowed down dramatically and Singapore is particularly hard hit, causing the confidence of most businesses to dip dramatically. And I can see it affecting my ability to secure a new job or do a career change. I feel like it’s virtually impossible now and is worsening my depression.

In spite of all that, I caught a glimpse of what I could be doing next. Even though I’m reserved and quiet by nature, I found myself serving as the middle man, translating ideas and thoughts or simplifying questions presented by my colleague, who’s a highly technical person, into plain English that my boss could understand. I admit it caught me off guard initially but I knew how to seize subsequent opportunities to do the same thing again.

What’s more, during the times when I’m lucid and not so emotional, I spent the time to distill what kind of work am I really looking for. Took me a while to settle down on wanting to give digital design and marketing a try. On the surface, it looks like it’s a good direction for me and I think it’s a great starting point for me to develop a writing career…

Working on new things

It’s been nearly a month since there’s any new content posted and I feel obligated to provide an update of sort.

I have recently got myself into a new habit of waking up at 5.15am in the morning to go for a 30 minutes run around my neighbourhood. It has been going on for the past three weeks now and there are multiple reasons. One, I promised myself that I need to be healthy and reduce my stress level. And since I do enjoy running, it’s the best kind of exercise for me. Second, my working hours, especially that of the evening, is unpredictable given my recent change to a new project. And usually by then, I will be too exhausted to exercise. So, a morning run is the best.

I have also signed up for a short Udemy course on Creative Writing and is currently undergoing the lessons.

Next, I also decided to do commercial writing. And no, no money involved just yet. What I meant is that I write for companies, using my technical skills and experience. It’s also a good place for me to start if I need to do writing as a career.

Finally, I’m still working on my novel; still trying to work out the kinks of the first chapter. And I’ll be honest. I’m having a writers block of sort because I recently find myself not feeling passionate about this particular storyline set in the Intertwined Fate universe. Initially I started the project because I felt like I need to do a slightly bigger fiction project before I go to the next level. I’ve tried writing space opera a few years ago and my skills then didn’t allow me to do a good job. That’s why I would be stupid for me to attempt it again.

The sci-fi LGBT-themed short story I wrote previously for the Intertwined Fate universe was a good starting point. You can read the first chapter here. That story was small enough and manageable for me. Furthermore, I felt the passion for it and enjoyed writing it. Now, it’s just really hard for me to find that passion back.

Writing longhand with pen and paper

How many of you write your content using pen and paper before actually getting it onto other platforms for publishing?

If you do write using pen and paper, it’s great and would love to hear your thoughts about it.

For most of us, we’d probably write on computers. I write predominantly on computers too. It’s just a much more powerful tool, more convenient, and probably could write much faster.

However, due to the nature of my work, technology burnout is inevitable. For several days during this week, I couldn’t bring myself to use a computer or even my phone to write anything. Yet, there’s a book that need writing.

This was how the decision to reintroduce pen and paper into my writing life came about. I got a lecture pad and a black ballpoint pen. Then I got down to writing.

The experience was definitely painful at first because it’s been a while since I wrote longhand using pen and paper. After finding my handwriting in a total mess and my hand aching badly, I decided to use the pen correctly and even went to google for the right way to hold the pen or pencil for that matter. Then it was time to put it into practice.

I would say there were definitely some good and bad that came out of this process.

For me, it has been therapeutic. The chance to get away from technology is just great for my mental health.

Further more, I could focus better on my writing because there’s no internet involved. No Netflix. No music. No internet browser. If you put your technological devices out of reach, you have no choice but focus on the act of writing and the story you want to tell.

The second advantage come in the form of deliberate writing. Because writing on paper meant it’s nearly impossible to change what you wrote. Unless you want to leave behind lines after lines of strikethroughs or whiteouts, every word you want to put down on paper have to be the right word. This slows down your writing and forces you to think. This has the added advantage of allowing you to identify if there’s loopholes or problems with your content. This is especially helpful for me as a pantser because I won’t run astray with my writing and create plot holes.

The third advantage was that it’s just more natural. You can do whatever you want. Scribble along the margin of the page. Skip lines. Doodle. The freedom meant you could explore your ideas and thoughts in a more natural and faster way rather than having to conform to what the computer and software forces you to do.

The fourth advantage is the permanence of the content. Unless your notebook or lecture pad end up getting soak, caught fire or the pieces of paper blown away by the wind, you can always trust that your content won’t go away. That’s unlike when you are using a computer to write. Machine can fail. Storage devices, including cloud storage, can fail or corrupt your data.

But not everything is all so shiny and great.

The biggest disadvantage with using pen and paper is the speed of writing. Your arms and hands don’t move as fast when you have to draw out the arches and lines associated with latin characters whereas with a computer, a key press means a letter. Because of that, I find it much harder to get into the flow.

The second disadvantage is you can’t edit the content like you could on the computer. Every word that you write on paper is permanently set in stone, so to speak. If you want to change something, you have to strike out what you wrote or use whiteouts. And if you are like me who makes quite a lot of mistakes when writing, you will find that your paper may end up becoming a complete mess and hard to comprehend.

As for portability, it doesn’t concern me. I always bring a backpack when I go to work and I could just shove the lecture pad in it. And when it comes to publishing, well, since I’m writing a novel, it would be much later in the writing process that I have to type them all out. With that, I’d probably do my editing concurrently. So I get to kill two birds with one stone.

Now, I won’t say every writer should write longhand using pen and paper. For most people, it would be very tedious and tiring. So if you prefer to write using your computer, then by all means do that. At the end of the day, the most important thing is getting your content out for your audience to consume and encourage them to come back for more. But if you find that your computer is getting in the way of you doing your work, then maybe it’s time to go old-school.

Your passion is not as clear cut

In non-asian context, there’s always this talk of finding your own passion. When you find it, you will never work a single day of your life.

And in asian context, chances are, your parents, relatives or friends will just say, “Find a job that give you stability, high pay and prestige. Fuck your passion.”

What if you are asian and received western education?

It turns out, in both asian and non-asian societies, parents behave mostly the same, which lead to their kids doing stuff they don’t like. And Gary Vaynerchuk does a better job of explaining it in this video.

So… what is passion?

Now, for me, I was lucky. My parents didn’t expect me to be anything. They just want me to have a better life than them and be happy. Then the day came when I was inspired to be a game programmer when I was about fifteen years old. With that inspiration, I pushed myself to do my best for my studies and make my way to a polytechnic where I get myself exposed to the world of information technology. Then I graduated with a final year specialisation in game development.

But I didn’t go that route because I found that the game industry in Singapore wasn’t as established as it is today and the reality of video game industry meant I didn’t want to risk burning out on the very medium I rely on for relaxation.

So I went with general software development. Before I know it, five years passed. Now I realised I couldn’t be bother with the latest technology. I no longer want to spend time learning about messaging queues like Kafka, latest trends in microservices, what’s new with Spring Framework, etc. And when I watched Apple’s WWDC 2019, as much as I’m happy with the state of Augmented Reality and what Apple is doing to help developers on that front, I find myself having zero desire to do it.

I would say these five years of work in the real world exposed quite a lot of things for me. It made me think about what I truly enjoy.

I like science.

I like technology.

I love reading fiction.

I love writing, science fiction in particular. It was all to express myself.

I love building structures and routines for myself.

I love playing video games.

And now my question becomes: what can I do for a living that allow me to apply some, if not all of the above, so that work doesn’t feel like work? As of right now, even I accepted the counteroffer from my company and continued to work there, I know my heart and mind is now all on crafting my next science fiction novel, which is moving along nicely at eight thousand words.

For those who are still attempting to find your passion, please don’t rush. I know you must feel like you are running out of time. But really, if you are in your twenties, you got the time on your side. If you are inspired to do something, go do it as much as practicality allows. That way you have the chance to decide if that’s something you want to do for a considerable amount of time. Otherwise, you will never know. By the time you hit your thirties, you’d probably identify things that you know you can do without feeling like shit.

I’m glad that I got the chance to identify all the things I enjoy after attempting to do something that I thought I might enjoy. I will probably need a career coach to advice on where to go next.