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.

Why writing longhand with pen and paper could be a good thing?

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.

All in your head

Distraction.

It’s the thing that could destroy your productivity and send you down the rabbit hole of wasting time and achieving nothing. You will find yourself doing everything else but the one thing you need to be doing.

And you know what? The biggest problem isn’t with distraction. It’s not that video game. Not that Netflix show. Not that book. Rather, it’s you. You are the problem. You choose to play that video game, watch that show or read that book.

So why did you make that choice?

Is it because you lack the discipline?

Or maybe be that the thing you should be doing doesn’t have a strong enough draw to pull you away? Maybe it’s not as important as you think it is? And don’t kid yourself and be all defensive. After all, if it’s important, then why aren’t you doing those things? Why are you allowing yourself to be distracted?

It’s also a conversation that I’m having with myself every now and then.

As much as I like to think I have the discipline to work from home, it’s a lie perpetrated by me on me. The truth is being distracted is a recurring theme. There were so many projects that I want to do but ended up not doing them. I went with playing video games, stopped thinking like a writer and stopped thinking like a designer.

I even told my friends that I couldn’t find the time or concentrate on my stuff at home and needed to work outside. There’s just too many distracting stuff.

One of them said, “it’s all in your head”.

I won’t say I’m surprised. From what I have learned so far, it’s the truth. And the only truth when it comes to productivity.

And that’s a great reminder on who’s really in control.

No one else can make you concentrate or focus. You are the one who decide whether you can concentrate and do the work. Everything else that you say or fight against is just you finding an excuse.

What if you really think that your home has a ton of distractions and you can’t prevent yourself from utilising those distractions? Then go out there and find an environment to work in that allow you to focus. Otherwise, remove all those items in your house that distracts you. Move those distracting things, be it television, your internet router/access points, etc. to a storage unit. Smash them to pieces if you need to. You can always buy a new one later. It’s all about creating that environment you need to work.

And watch what you say to yourself. A lot of times, many of the comments or complains you make are just you being fancy and refuse to do the work. So shut up, and make a plan and execute.

Lack of experiences kill your creativity

It’s very easy for us humans to fall into the trap of sticking to what’s familiar. We like it because of how it make us feel. Comfortable is the word to use here. After all, who likes to struggle every day of their life?

I definitely don’t. But I recognised that it had crept up on me. I grew comfortable with what I’m doing with my life that my blog is suffering from lack of content. Comfort leads to writer’s block and that leads to no content created.

So being comfortable is bad.

Right?

Probably…

By allowing yourself to grow very comfortable and remain status quo, it’s very easy for you to find you are unable to think out of the box or come up with new solutions fast enough. It’s just a fact. Similar to how you keep doing the same set of exercises and your body has grown used to it, comfort leads to strengthening of existing neural connections that you have already established, and after a while the brain stops doing that because there’s no more necessary changes to the signalling.

Don’t get me wrong. There’s nothing wrong with being comfortable. Comfortable sometimes could be you have reached the pinnacle of whatever skill you are developing. That means you could do that thing faster than before.

However, the key here is moderation.

New challenges and experiences forces the brain to create new connections and reshape existing ones. And when you keep doing that, the brain is constantly changing and reinforcing certain connections that ultimately results in its ability to come up with new ideas. This is where you can think out of the box when the time comes. If you keep practicing doing that, it can also make you more confident as a person when it comes to dealing with new problems as they come.

For those who are neurotic, constantly worrying about stuff or have low self-esteem, they would probably go like, “Are you crazy? Take on new challenges? I’d rather kill myself.”

I know. I can relate. It’s very difficult to get yourself to experience new things. Personally, I have this issue because of my innate desire for stability and consistency in life. I’ve lost count of how many times I need to will myself to do something different just so that I expand my knowledge and experience.

This is why you won’t see me asking someone to do something drastic just to increase or revive your creativity. For example, there is no need for you to jump out of a perfectly good airplane just so you can jumpstart your creativity. You won’t see me doing that either.

Yet, it’s not good either to leave the “lack of experience, can’t create” situation unresolved. Not if you want to grow any further.

Instead, what you probably could do is find and know where is your comfort zone. Then ask yourself if you are willing to go out of your comfort zone by just one or two steps. If you do, then do it. And if you do manage to go out of your comfort zone by three to ten steps, then it’s even better. If not, then it’s better that you don’t complain about your situation and just live with it.

And you know what?

Sometimes, the new experience can come from simply changing up where you stand or sit when you are riding the train to work or to go back home. Or having a drink at your local coffee shop. Or maybe just take a different route to go to your usual places.

If you are a pantser, here’s a useful tool for planning

There are two kinds of writers. One is a planner, also known as a plotter, while the other is a pantser.

To the uninitiated, planners or plotters don’t start writing until they got all the details about the story they want to tell down in a massive mind map or something. It is just as the terms meant. And there is nothing wrong with that as it’s just what they do. Pantser on the other hand doesn’t really plan and simply just write, allowing the story to take them anywhere. They are literally flying by the seat of their pants. Planning for pantsers is just not something they do.

For me, I’m a pantser and really hate planning. The very act feels very unnatural and boring.

But today, I was introduced to something that I thought could be useful as a tool to help pantser. It’s known as a Fishbone diagram or officially known as Ishikawa diagram. From the outset, it look like a really simple tool that doesn’t seem to boring when used.

Now, I know it is really a tool for product design or quality defect detection. It is also used in certain kind of investigative purpose like incident investigation and resolution. So you may wonder how it can be applied to planning out a piece of writing.

Here’s how I thought it could be used...

Fishbone Diagram

For the purpose of this discussion, we will be using the fishbone diagram above for illustration.

Let’s say you are going to write a piece of fiction that has some kind of conflict or problem to resolve. You can put that conflict or problem at the fish head.

Then draw the ribs out from the spine. The purpose of so call bones of the fish is to allow you to identify the causes that ultimately lead to that conflict. You can treat each rib as a category. The boxes at the end of each rib could be used to list the categories such as characters, location and/or incidents. It’s up to you to decide how you want to use it really.

Once you have the categories identified, you can draw horizontal lines out from ribs where you use them to create just enough detail for you to write your story.

And that’s all.

After that, you can refer to the diagram if you do happen to encounter some kind of writer’s block while writing. And since it isn’t so detailed, you get to have the freedom to change your story on the fly while it also ensure you stay somewhat grounded and have some kind of reference material.

Lastly, because it’s such a simple diagram, it doesn’t really bore you to death as a pantser.

I also didn’t forget about you planners. You guys can also use this as a complementary tool to whatever they are using now to write.

With that, I hope it’s helpful to you.

Updated 2020-May-22: Parts of the content was rewritten and fishbone diagram added.