To a clueless junior software engineer - RakshithNM/articles Wiki

These are the list of things that I wish I had known when starting my software engineering career. I was told some of these and have linked people that told me this or inspired me to pursue them, other points are things I have realised along the way. Normal people cannot do all the points in the article but if you are clueless, it should help. If you are a senior engineer and have corrections, feedback and additional points to add please pass it on.

** Note ** I felt certain points were best expressed by people already on the internet and have chosen those lines over what i wrote originally.

Practicals

  • Reading code is the most important skill(sharath told me this), learn to get better at it. Software is read orders of magnitude more often than it is written. Therefore, the most important thing is to optimise your code for clarity.
  • Learn to get better using debugger.
  • Become more efficient day by day(become expert in using a text editor(dev inspired me to learn vim), get better at git, keyboard shortcuts, automating most common workflow etc).
  • Learn to search online/documentation and find answers as fast as you can.(rob great guy to follow and promotes this extensively, learned the importance from him)
  • Learn to ask questions that let people answer them concisely and precisely(try not to ask what can be googled)(learnt this from all the interaction with my colleagues).
  • Maintain a bug/error journal and write down the solutions you found to solve them.(This is an idea from my colleague Kennet)
  • One Leetcode problem a day keeps unemployment away.
  • Maintain a journal of Leetcode problems you have solved as and when you solve it.(akshith maintains one and I think it's great)
  • Networking/Blogging/Talks and sharing knowledge helps build confidence.(deekshith inspires and told me the importance of doing these)
  • Open source gives great exposure, learning, contacts and skill development. It's also an opportunity to create impact.
  • First make it correct, then make it fast.
  • Don't be afraid to use "boring technology". You don't have to ride the latest wave or jump on any hype train. Languages, frameworks and libraries are tools and while it's important to know what to use, your main goal is to deliver a good final product.
  • You don't need to memorise a whole language or it's documentation to be a good dev. It's way more important to learn how to solve problems.
  • Learn to explain technical things to a non-technical audience.(munir does this really well and i have learnt a bit from him)
  • Work on a programming side project related to some hobby you already enjoy and know.
  • Learn how to learn : https://barbaraoakley.com/books/learning-how-to-learn/
  • Get a good mentor.
  • Find good coworkers, good team mates, any one who is willing to communicate with you.
  • Learn to read and navigate documentation.

Soft skills(still working on this :wink:)

  • Say thank you more often, even when you are the one paying for a service.
  • Greet everyone you see with a smile.
  • Don't speak ill about anyone.
  • Being nice is a superpower. So is staying calm (especially when others are not). Also, being helpful - especially to people outside your team.
  • User's come first, but colleagues are important as well, deal with conflicts gracefully.
  • Never stop learning. Not only about tech, about everything.
  • Understand what your mentors like, how they like to be questioned, when is the best time to ask them question, what channels they like to be contacted on.
  • You're not better than the guy next to you, no matter if you have an university degree and they don't are self-taught.

First job: Things to do

  • It's ok to take time to get acquainted with the technology.
  • Look at the work everyone is doing and try to identify stuff that isn't getting done as well as it should, or where the team is lacking skills, and aim to own that area. Learn what you can from the most skilled and able personnel for sure, but it's the team weak spots that you can make the biggest personal impact on.
  • Ask for help if you get stuck. If you're a junior, people expect you to get stuck at some point, don't be scared to ask for help. Better to just ask than to waste a few days.
  • Once you ask a question and get an answer, write down the question and answer so you don't have to ask again.

Wisdom

  • Imposter syndrome is real. Once you realise everyone is an imposter, you realise no one is.
  • Be grateful for what you have, but dream big.
  • Start putting your money into low cost index funds. Let time in the market do its job.
  • It's just a job, not your identity. Put in your hours then do something else.(work on coding outside if you really like programming, if not do something else).
  • You'll go through periods of time when something seems super complicated (legacy code, new algorithm, new framework, new language etc.). But just stick with it, you'll figure it out eventually.
  • Try to stay positive and be careful with showing vulnerability to friends or people on the internet, do so selectively. People find stuff like this tough to read and can't handle it too well.
  • You only have so much brain energy in a day.
  • Never give up. You will face obstacles, problems, bugs, disbelievers, etc. The only way to succeed is to keep at it. You won't believe you can do it, until you do it