As I look back over what’s almost a decade in software development, there are some things I wish I’d started doing sooner. This is the advice I’d give my younger self, who has just landed their first professional software development job.
1. Read more books on software development
When ever I took the time to properly read a book (by properly I mean taking notes, consolidating my thoughts and re-reading) I leveled up.
I wish I had read more software related books at the start of my career as a developer. I’d recommend reading language agnostic books such as Clean Code: A Handbook of Agile Software Craftsmanship, Design Principles and Design Patterns, Soft Skills: The software developer’s life manual. The ideas you will learn in these books translate to the majority of programming languages you will use through out your career.
It took me a long time to understand the value of taking notes whilst reading, it’s taken me even longer to start publishing these notes online.
Why read books over blogs or videos? I’ve found returning to a book months or even years after you’ve read them and re-reading your notes is a great way to consolidate your thoughts. Although I read the majority of my book on a Kindle now, I still enjoy thumbing through a physical version of my favourite software books.
2. Sharing my thoughts online
One of my biggest regrets is not sharing what I’ve learned or my experiences online sooner. Until recently I didn’t understand the value of building an audience online.
Although I’m working on rectifying that currently, I often wonder where could I be if I started 1, 2 or 3 years ago? This reminds me of the quote “The best time to start was yesterday. The next best time is now.”
It’s common to vastly underestimate the value of your knowledge, don’t assume that what you know is common when it’s not. We just believe it is because we can’t imagine not knowing it.
3. Pair with other developers more often
I understand it can be daunting to pair with another developer, especially one who is more senior than you but looking back some of my biggest professional leaps came after pairing with developers I looked up to.
A pairing session can be as simple as sending someone a PR to review, and then sitting down with them to discuss their comments. In my experience you’ll gain more from discussing code with someone verbally than you would through comments on a screen.
A pleasant side effect of pairing is you form relationships with the developers you pair with. This can be useful when you’re new at a company, so don’t be afraid to ask to pair with someone.
4. Spend less time worrying
I was the worst at worrying about what might happen in the future. “What if I release this and break something?” or “Have I coded this in the correct way?”.
One thing that experience has taught me is it’s ok to make mistakes, and if you do make mistakes it’ll be ok. I understand it’s easy for me to say that now, but as of yet there is no issue that me or a team I’m working with has yet to solve.
Some advice for anyone who struggles to leave work behind when they leave the office:
- Find a hobby that doesn’t involve a computer, this could be taking up a sport or volunteering for example.
- Before you finish work for the day, write down what you want to achieve tomorrow. I’ve found this task helps tell my brian “Work is finished for the day, time to switch off”
5. Learn to Communicate Effectively
Software development is a collaborative process where you work together as a team to achieve a common goal. Your communication skills need to be as good as your programming skills.
Communication comes in many forms, from reviewing pull-requests, discussing code solutions with peers to 1-on-1s with your manager. Some relatively easy wins to level up your communication skills are:
How to say “No” effectively. You’ll often find you have too much work on your plate and sometimes need to push back, but how can you do this?
- Stay respectful to the to the individual requesting help.
- Be straightforward regarding the reason why you are not able to assist.
- Propose another option: Recommend someone they can turn to instead, or suggest an alternate source of information.
- Approach your manager if you are consistently being given a high workload.
Using the right language for your audience. If you are talking in detail about a bug to a fellow developer, feel free to be fully technical. Communicating to tech support, you can be technical about sysadmin stuff, but not include programmer-specific details.
6. Build more things
Practice makes perfect. You can read all the books, or watch videos on particular technologies but if you really want to learn something new you need to try and build something. Unsure what you could work on?
- Pick a language you want to learn, and using a public API (Pokemon API, Fake REST-API) create a CRUD application
- Using a framework in your day job? Can you contribute to it? This can be as simple as documentation updates or helping other users with their issues.
- Scratch your own itch. Build something that you’d find useful, it can be as simple as a CLI wrapper around a task you do every day.