A letter to myself as a fresh software engineer

This is a guest post from Luca Florio, lightly edited. Enjoy.

Dear Self,

You just graduated and you are ready to start your career in the IT field. I cannot spoil anything, but I assure you it will be an interesting ride. I’m writing you this letter because I want to give you some advice that will help you be a better professional. Nothing you won’t learn by yourself in the next few years, but it is something that I wish someone had told me when I started my career. They are not ordered by any means and are all equally important.

Run a marathon, not a sprint.

The road to becoming a good software engineer is a long one. Don’t rush on stuff, and don’t give up just because you are not getting an easy and fast win. Take your time to learn and become good in the topics you are interested in. Remember that this is a marathon, not a sprint.

Be humble, not stupid.

It is good — sorry, it is fundamental — to be humble. There is always something to learn from others, even when you are an experienced professional. But this doesn’t mean that everyone is better than you. You have to respect yourself and your skills. When you don’t respect yourself you become stupid, not humble.

Compare with yourself, not others.

There is no point in comparing yourself with others. There will always be someone better than you in your job. And there will always be someone better than the one that is better than you. And there will… ok, you got the point. Just do your best. If you think someone is a better engineer than you are, learn from him/her. Keep doing your best, and eventually, you will be a reference for someone else.

Respect people, not titles.

During your career, you will work with exceptional professional. Most important, you will meet exceptional human beings. Respect people for who they are, not for the title they have. If “foo” is “Principal Senior Lead Engineering Chief Architect” doesn’t mean that he deserves more respect than “bar” that is a junior software developer.

Choose the challenge, not comfort.

The road will be full of crossroads. There may be multiple choices, but everything boils down to a choice between your comfort zone, or go outside your comfort zone. There may be a moment in your life — hopefully after decades of work — when you will feel the need to cool down a bit because you will be satisfied with what you achieved. Until that moment, try to go out of your comfort zone. It will make you a better professional and you will feel more satisfied with your career. Remember that the best things often happen outside the comfort zone.

Jump on the whiteboard, not on the keyboard.

When you have to design a new feature or a new system, don’t jump on the keyboard to start coding. The “muscle” you have to train and use as an engineer is your brain, not your fingers. Always think before acting. For this reason, jump on the whiteboard instead of the keyboard, and start thinking of what you should implement. Better if you have a sparring partner to challenge your thoughts. Oh, when I say “the whiteboard” I mean “every object that can help you think”, be it pen and paper, a notebook application, draw.io, etc.

Deliver value, not code.

Please don’t be affected by the NIH syndrome. There is no point in reinventing the wheel. Avoid wasting time in something that is already out there. If you can achieve your goal simply glueing together some tools, just do it. What you should deliver as a software engineer is value to your business, not lines of code.

Choose life, not work.

In the IT field, it is easy to focus too much on work. After all, for most of us, it is not just a job, it is passion. Remember that work is important, but life is more. Live a meaningful and rich life. Play sports, read books, find hobbies, travel and see the beautiful world we are living in. Hangout with friends, find a partner for your life and give to your partner all the love, attention, and support that you can. You’ll be surprised how much having a rich life will improve you as a professional.

That’s all I can tell you right now. I still have a lot to learn.

One last thing: enjoy the ride! 🚀

With love,

(a more experienced) You.

Previously published at florio.dev.

Luca Florio is a Software Engineer working remotely for Pleo, a Danish startup. He loves to study new things and share what he learns in his blog.

Maintain work life balance

Dear new developer,

Make sure you maintain your work life balance.

You’ll never know everything. You shouldn’t try. But even if you accept that, there may still be a temptation to work work work. Why?

  • You want to “prove yourself”. You want to over-index in your first few months. Working extra is an easy way to be more productive, for a while.
  • You want to move up. This engineer did the grind:

At night, even if I had went out with coworkers, I would go home and get back to work. I spent a lot of weekends staring at my computer screen while my friends frolicked (yes, I just said frolicked) at Dolores Park.

  • You believe in the mission of what you are doing. Especially when you are a part owner of a company, it can be fun to work on making that company better and better.
  • Building stuff is fun.
  • Uniquely, when you are contracting, you get paid for every hour you work. If you combine that with the feast or famine flow of work that usually accompanies contracting, it can be hard to stop working when the work is there. (Been there, done that.)

Some extra work, some of the time, isn’t a bad thing. Especially if you are learning or if you enjoy it.

However, you need to make sure you set some boundaries. Companies won’t do that (though a good manager will). One of my best bosses once said “work is a marathon not a sprint” and you need to treat it like that. That means as tempting as it is to overclock and work extra, you should save this for special occasions, if at all.

What can you do instead?

So many options: Call up a friend. Go do something fun. Find a hobby (that is not related to computers). Travel. Visit family. Get outside. Get inside. Read a book. Read a magazine. Volunteer.

And, more importantly, decide for yourself how much time and effort you want to spend on work as compared to the other things in life (this can change over time, by the way). And then communicate those boundaries both explicitly and implicitly.

You can be explicit by presenting choices to your manager: “I’d love to work on project X, but last week I understood the priority to be project Y, and I just don’t have time to do both of them well. What should I do?” (This is an example of the “yes, but” way to say no.) You can also ask about this at the job interview. (Yes, that is scary and shouldn’t be your first question, but it’s important to know.)

You can communicate boundaries implicitly by not answering emails or chat messages out of hours, leaving promptly at the end of the day, and respecting the work/life balance choices of your team mates.

Just like you need to manage your career because no one else will, you need to manage your work life balance, because no one else will.

Sincerely,

Dan

This post was inspired by a comment from JB. on the Denver Devs Slack.