Tag: advice

I was listening to my friend recently complaining about the lack of good developers. His company is constantly looking for new people, and they are struggling to find them.

They have lots of candidates that look good on paper, but in reality, they fail the interview. They go through the technical part of interview well. But when they start talking to them, they find out that potential candidates struggle to communicate. They can’t describe/translate technical issue into everyday language. They seem to be arrogant even though they might not be. They don’t listen.

Job Interview is a stressful process. You have to prove that your worth to others which is for most of the people going out of their comfort zone. You have to talk about yourself,
about your past and sometimes your future. Here are few tips how to improve your chances to get hired.

“You can make more friends in two months by becoming interested in other people than you can in two years by trying to get other people interested in you.” — Dale Carnegie

Be friendly

My approach to this is to talk to an interviewer as they are my new colleague. I don’t know them yet, but I’m trying to be friendly and honest and found out about them what they do how and why. Talk to them. I know it’s hard to talk to strangers about yourself but if you want to have a good job you have to get better at talking to people.

Listen

I know that you want to go through the interview as fast as possible, but you need to listen what the other side is saying and what they are asking. It helps in 2 ways. You find out more about the job and the company, and you will get topics that you can ask about. i.e.

Interviewer
“We have a friendly environment here. We play table football and have a beer fridge always full. One day a week you can work or anything that you want…”
Me
“That sounds good. So I can do anything not related to a job or is it something to work on the product?”
Interviewer
“It’s something to work on the product, but you can do anything. Come up with a new idea, try new technology…”

You see where I’m going with this. Based on the question about the “free coding” Friday you find out more about the company. You might find out that the “free coding” day is to solve technical debts instead of doing something for fun. It would suggest that this company has some issues with planning.
Or it might lead the other way where the company is giving you more time to improve your skills.

“When dealing with people, remember you are not dealing with creatures of logic, but creatures of emotion.” — Dale Carnegie

Use your empathy

What do you do when you have to talk to a manager about a technical issue, who doesn’t have a technical background? How do you talk a customer to find out why they can’t reset the password? If these are situations that you are trying to avoid then don’t. These are precisely those things that will give you more experience and teach you to be more empathic.

Then when they ask you, at the interview to describe some technical problem in a non-technical way, you know what to do.
But how you ask?
I’m sure that you have been there before. You are in the middle of something, and your mum is calling, “Hey Petr I can’t search for anything on the internet or my password is not working …”. My first thought is omg not again. But I take a deep breath and then trying to imagine what is she doing. Ask her to describe what is she doing “exactly”. And then go from there. I’m trying not to use any technical terms. So keep that in mind for some people even word “browser” is a technical term.

You can try the following exercise:

Try to explain to 6 years old what is an email.

Think about it …

I bet that keywords like servers and domains will pop up in your mind. Stop right there. Six year old doesn’t need to know what is DNS or a server, or that there is something call POP3 or IMAP.
Simplify everything that you can.

Me“Email is a message that you send to someone via the internet.”6yr old“Like when I use WhatsApp?”Me“Yes, pretty much you just use a different app.”
Those 6year olds these days.

The same thing applies to customers. They don’t know things that you consider an essential knowledge. So be empathic with your customers and managers.
It will help you to get a job that you want. And if you are not looking right now, it will reduce your anxiety every-time you have to talk to non-technical people about an issue.

I don’t think winners beat the competition because they work harder. And it’s not even clear that they win because they have more creativity. The secret, I think, is in understanding what matters.

It’s not obvious, and it changes. It changes by culture, by buyer, by product and even by the day of the week. But those that manage to capture the imagination, make sales and grow are doing it by perfecting the things that matter and ignoring the rest.

Both parts are difficult, particularly when you are surrounded by people who insist on fretting about and working on the stuff that makes no difference at all.

My last post was about pair programming. Recently I start working on a small project where I can’t pair with anyone. So I started thinking “what could I use from pairing even When I’m not ? “.

My first thought was to act as if I was, so I would have to act as 2 different people. I should change my t-shirt and wear a hat or just put on glasses and change my hairstyle every time I change from one persona to another, but this could look really strange and potentially have detrimental consequences.

Another thought was, “Hey what are the advantages of pair programming which don’t depend on the other person directly” ? The answer is a better understanding of code, cleaner code and faster development. But how exactly would I achieve this? Let’s find out!

Better understanding of code

Better understanding of code is based on the fact that you explain your implementation to your partner. You can still do this, and very often you are actually doing it without noticing.

If you are speaking or just mumbling to yourself out loud then your brain is using different parts then if you were just “thinking” about the problem. So if you ask yourself out loud “Why doesn’t this work?” or “Ok this points to that if the value is….” then it is same as if you were speaking to someone else. Even if you ask yourself “What would Mr X do?”. Than you force yourself to look at the problem from a different perspective it would also help you.

Faster development

In pair programming you usually switch between each other for short time periods or small problems. This could be easy implemented and the answer is sprint. Pick small timeframe (10 minutes) in which you can implement some functionality. Then you set your watch or phone or some tools that you can download and start. You will see that you are trying to finish your code in the time limit (including your tests of course ;-) ) which will speed up your programming.

Cleaner code

Cleaner code is basically only about you, and because nobody is watching, you tend to not care that much about sanity of your code.

When I start programming in Ruby my friend who taught was really strict about code sanity. Every time when I paired with him, he would point out every small thing e.g. end of the line, space between operators etc.. So I was forced to care. Since then even when I’m not pairing I always make sure my code is clean enough to satisfy his sanity check. So imagine somebody who’s got your respect and is really anal about clean code. Try to not disappoint him.

These three rules will help you in your “virtual pair programming”. If you have another technique feel free to leave a comment!