Advice to new software engineers

· Stefano Chiodino

#programming

# Ask for more money

Have you received a new job offer? Ask for more money. Have you received a pay raise? Ask for more money. If you cringe at the idea of asking for more money, you likely really need to ask for more money.

Every year you have (hopefully) improved. You are wiser, learned some tech for a whole year, learned the processes, met the people, and therefore are worth more. So ask to be remunerated accordingly. Every time you receive a pay rise, google for the current inflation and discount that percentage from it. Lead the conversation this way during the meeting.

# Never tell recruiters how much you earn, or want

There is no way any of this is going to play in your favor. Always decline to say how much you are currently making, or want. On the contrary, always ask for a salary bracket.

# Ask why

Workers know how, gods know why.

Ask why, always. Why should you ask why you say? You learn quickly, I'm impressed! People tend to tell you how to solve a problem, rather than what the problem is, and they may not have considered certain things. This is particularly true when talking to non-engineers. Knowing why you are doing something also strengthens your understanding, and allows you to do a better job.

You should also keep this in mind when you are asking for help yourself: don't just say what you need help with, start saying why you are doing it!

If you are new and feel like it would cause friction, just say that you really really want to learn.

# Doing vs. learning

I'm more of a doer, and this had a negative impact over time. The pressure to deliver and prove yourself will push you to try and cut the learning short, and push forward. This is what my friend Lee calls “programming by coincidence”.

So, remember to take it slowly, and research a topic before jumping in and try to fix something you don’t know well. It will pay dividends.

# Impostor syndrome

It's important for you to understand that you will always feel like you don't know what you are doing. That's because you think most of your job should be "doing", but in reality it is to find out how or even what you are doing.

The more you know, the more you know what you don’t know.

I’m often asked “when will this stop?”. If you do things right, it will never stop.

# Career leverage points

There are a few things in your career that you can get a lot of leverage out of. Interviewing and your CV are a couple of them.

Invest a lot of time on your CV. Be 100% sure there are no typos. Keep it around 2 pages. Sell yourself without lying.

I revise mine often, mostly adding whatever comes to mind. Afterall, it will come with you for decades to come!

I’ve probably done more than a hundred interviews. I’ve also run dozens of them as an interviewer, which by the way helps (so go on sign up to run interviews for your company now!). This helps me to know what interviewers want, perform better in tech tests, being more confident, etc. It reduces the cognitive load during interviews, allowing time to think at a higher level.

Buy “Cracking the Coding Interview “by Gayle Laakmann McDowell, it’s worth it!

# Ownership

Try to make all problems your problems and people will love you for it. In the right company, you’ll also get rewarded for it.

# Work life balance

Make the most of your 7/8 hours of work every day, then switch off. If you can't finish something that's too bad, there is always tomorrow. Do you have too much to do and you can't possibly fit it in your working day? That's too bad, but your manager/team-lead should probably have planned things so that they could fit in your working day.

I only have two exceptions to this rule:

# Yes, but

Whether it's been planned in an agile fashion, or another way, you'll have a certain stream of work. At some point you'll be asked to work on something else. This usually comes in the form of "could you just..." or "spend 5 minutes on...". The person you are talking to probably don't realize how complicated things are, hence they think it's a "5 minutes" job. But there is no such thing.

When you work, your time doesn't belong to you, you are selling it, and if someone asks you to do something the only plausible answer is "yes". Yes, but.

"Yes, but unfortunately this is not quite a 5 minutes job. If I do this I won't be able to hit the deadline we set during our sprint planning. But if you are happy with this and you have communicated to the right people I'll be happy to do this".

I've been delivering this line or variations thereof for the best part of a decade. It never fails me.

# Communication

Invest a lot of time and effort in communication. Nowadays a lot of this happens in emails, chats, etc, and this gives you the chance to be more mindful about it. Read back what you are about to send (it helps if you read it out loud). Make it as short as possible. Rewrite any ambiguities. Don’t show off.

I’ve done a business writing course on Coursera and I’d recommend it to anybody. It’s a great investment.

# Honesty

Always try to be honest, people can tell subconsciously even if they don’t catch you. Even if you get away with it, it's only a matter of time. Lack of honesty breaks trust, and we are nothing without it.

If you have a problem, communicate. Do you think you won’t make a deadline? Do you think you are doing something that’s not worth your while? Or is there something else that should be done? Speak up!

# People are not computers

In the long term, this is a team sport, and “people” is one of the biggest problems to crack. You may be in the business because you like to write software, but to do well in this job you need to deal with people effectively.

Learn how to: