May 11, 2020     3min read

SOLID principles for .NET interviews (Part 1)

There are few habits that help a lot in your career. I have one such habit of attending some interviews to test my knowledge. However, I wanted to be a little prepared. And, I follow certain thumbrules.

If you are giving interview for the position of Software Engineer then study as if you are giving an interview for Senior Software Engineer. If you are looking of a Senior Software Engineer then study as if you are giving an interview for Tech Lead. So, each time you prepare for an interview we gotta target just one level higher.

So, now, what could be the questions that a company could ask in a lead interview? It is very difficult to guess there are no standard questions. Having a syallbus with standard questionaires works in college. In college, we rely on the old question papers to train ourselves. But, in the industry there isn't a single answer to a problem. We will have to come up with multiple different solutions and pick the best one.

So, a better way to tackle this problem would be to understand how a lead would work on a daily, monthly and a yearly bases. What exactly he does? There isn't a straight forward answers to these questions. However, below are some of the basic tasks a lead does.

Daily

  • Help the team when they are stuck
  • Does code review to check if the coding standards were followed

Monthly

  • Anticipates the trouble that a developer could undergo while implementing the feature and prepares him to face the same
  • Boosts the morale of the team by making them take individual decisions
  • Helping team mates excel at work

Yearly

  • Bridges the gap between his team and the managers (Both technical and people) 😄

In most companies a Lead does his part of coding first and then does some of the above mentioned activities. There would be additional time allocated to the lead to perform his lead activities. A lead in most cases is a person who would have stayed in that particular project ecosystem for years. He would know which source code file to check and change when there is a bug. However, a new person would take couple of hours to search and confirm the source code file. So, with these constraints it is a bit challenging to even think of (not doing) the additional task a lead does.

Now, this is the challenge and we have to overcome it. And, how do we do that. In my yester years I followed one technique. We have our performance evaluations twice a year. This is a common practise across the globe. If I have worked on a complicated feature the previous week/sprint/iteration. I will check with my manager a get some light weighted work like fixing minor bugs or addressing a low priority support tickets. By doing this I would save some time only on coding and I used to extra time to do the lead activity.

Lets say somebody sends a code review via a pull request to my lead. I used check that to see if all the standardizations were followed and make a note of it. And, when my lead performs his actual code review I would compare my review with his.

LIke this we would need to strike a balance between work and leadership. However, this is easier said than done. And the first thing we gotta do is to start.

In parallel, I also used to attend more and more interviews. The first few would be literally harassment. Now what happened in those interviews will be continued in Part 2 of this series.

In part 2 we will be speaking more about SOLID principles.