Menu
Things I Wish I Knew When I Started as a Software Developer

Things I Wish I Knew When I Started as a Software Developer

  • Sunday, November 15, 2020 12:00PM

Hello there, fellow friends and cool people!

This is the accompanying blog post to my three part series on advice I wish I had gotten as a younger developer. I originally planned this to be valuable developer skills and traits, but after filming, I realized that it's catered more towards those who are just beginning as opposed to intermediates or seniors who likely will already know this stuff.

Alas, we can only reflect and give advice on our own experiences, right?

Let's get into it.

My Software Development Preconceptions

I thought Software Development == Computer Science based on what I learned in school.

  • Data structures and algorithms
  • Logic, proofs
  • Being at least semi-proficient with hardware

Soon after settling into my first job out of university, I realized that software development is not at all the same as Computer Science. The skills you develop learning Computer Science are sure to help you with development, but are not a necessary prerequisite to do well in it.

What I Discovered is Really Important as a Developing Developer

  1. Improving your problem solving skills
    • Almost every task (not just in development) is a problem to be solved. Get good at this.
    • Get to the point where you don't fear problems because you know you can tackle and overcome every single one of them.
    • Never stop training your brain. Iterate and get better at this skill.
    • I recommend: Problem Solving 101 by Ken Watanabe
  2. Asking questions. All the time.
    • Learn from those who have been in your shoes
    • There is beauty in the struggle to solve a problem on your own, but there are some tasks that aren't making you any better or that you've spent too much time on already, rendering you truly stuck
    • Short-circuit your struggle by leveraging the resources - aka colleagues and peers - around you
    • Don't be afraid to ask people. You'll be rewarded. If not with the answer, a potential buddy to help you accelerate the path to the answer
  3. Perfecting communication
    • Cater your communication and your language to your audience
    • i.e. If you're speaking with stakeholders about the feature, don't use lower-level computer science terms. On the other hand, if you're speaking to a developer, give all the details necessary to truly capture your point
    • Keep things at a high (or low, if your audience calls for it) level and on a need-to-know basis. The last thing you want to do is confuse people and make it feel difficult to communicate with you
    • Take time to organize your thoughts in a way that they can be communicated simply and effectively
  4. Efficiently asking for help
    • XY Problem
    • Give enough context such that someone can jump into where your head is at
    • Make sure you've tried everything you think they will initially suggest
    • Asking Checklist
      • Is this something that will save me a significant amount of time (and not short me of a valuable learning experience)?
      • Did I try everything in my power to find the answers myself?
    • GIVE EXAMPLES! This is perhaps the quickest way you can illuminate exactly what your problem is to someone with no context. Don't be vague and try summarizing it. Give an example right off the bat and things will be much clearer.
  5. Being curious
    • Having an inquiring mind is crucial to improvement
    • Dig deep - Build a stronger mental map of what you're working with to be better for next time
  6. Being a lifelong learner
    • This is crucial to being in the field. If you're not constantly appreciating with knowledge, you're depreciating (at least within the tech world).
    • Constantly expanding and refining your knowledge ensures your success in this field
  7. Developing a Git/Source Control Proficiency
    • It's essential to be proficient with a tool you'll be using everyday
    • Upfront learning about this now will save you hours of potential mishaps in this area later
  8. Configuring ideal setup
    • Take the initial time to do this and iterate on it here and there
    • A few of my suggestions for tools to use:
      • Vim
      • IDEs
      • Shortcuts
      • Macros
      • Database GUI
      • Aliases
      • Tig - A git log visualization
      • Terminal - Fuzzy and reverse search
    • Look for new tools and maximize use of all the ones you have at your disposal
  9. Helping others
    • At my company, we have a weekly hour meeting where developers share learnings and fun, useful things
    • As devs, we might have a tendency to learn things and silo into our own corner with our newfound knowledge because we think everyone else must know this already or it's too small and not worth sharing
      • But chances are that doing a small demo or presentation of it will be worth it because at least one person will learn something new from it. If not directly about what you're talking about, in the meta-details of the presentation
    • The benefits of helping others and knowledge sharing:
      • Someone, somewhere is guaranteed to learn something new
      • Newer developers will have you as a resource they can go to if they wanted to learn more about the topic you are covering
      • Other people will feel free to draw from their own experiences and chime in to add to your points
      • The more you share, the more an example will be set to encourage more knowledge sharing (no matter how big or small) among the team
      • Other people will get to know you better and feel more of a personal connection to you
    • I think knowledge sharing like this is what makes the team stronger and better together
  10. Going above and beyond where you can & keeping readability in mind
    1. Go above and beyond
      • Don't be afraid to step outside of your normal work duties
      • This is what separates someone good from someone great
      • Your care and effort won't go unnoticed
    2. Keep readability in mind
      • When coding, our audience as developers are developers!
      • Evaluate the trade-off between complex, hard-to-read-but-efficient code and simple-to-understand-but-slightly-less-complex code
      • Also, write good commit messages where you can

So these are just the top things I've learned to be important as a developer just starting out. Hopefully this gives you a starting point to becoming a better developer. I stayed away from technical skills because there are tons of better resources out there to give you guidance on that, and I wanted to focus on the more overlooked soft skills in being a developer.

Hope you enjoyed this anecdotal account of Things I've Learned to be Important as a New Developer/Advice I Wish I Had When I Started as a Developer/Valuable New Developer Skills and Traits.

As you probably could tell. I've been struggling with the title of this.

And don't forget, if you're more of a video-learner, watch this in video form here!

Thanks for spending some time with me as always,

Jiana