Advice for new software devs
- Build the right it before you build it right. Do a pretotype before a prototype to see if it’s even worth the effort (you’ll find often it’s not).
- When you’re stuck, ask a more experienced developer. Don’t let pride keep you from getting the work done.
- If you see something broken, resist the immediate temptation to fix it.
- Mark it as TODO, and return to it when you’ve got free time.
- Learn how to write really good bug reports
- Steps to duplicate (in ordered form)
- Desired behaviour
- Current behaviour
- Bonus points if you can explain how it affects the end user
- You’ll spend more time reading code and documentation than writing it, so make sure the stuff you write is readable
- Your “soft skills” will carry you much further than your coding skills
- Public speaking
- Pleasant conversations
- Writing skills
- Take notes of new stuff, and have a system to organize the notes (e.g. a wiki)
- You will want a digital system for this. The faster you can retrieve your notes, the better.
- Always try to work with exceptionally good developers
- What makes software ‘legacy software’ is that you will grow smarter and more experienced, and you’ll just know better ways to organize and your code. If you try to learn lessons from legacy software, your time will be well-rewarded.
- Look at the source code of the programs you use regularly. You might just be able to directly improve your own tools.
- Don’t celebrate sleep-deprivation. It’s stupid. Get 8-9 hours of good sleep a day, so that your mind can actually do good work.
- Don’t break backwards compatibility unless the idea behind breaking it is exceptionally good (e.g. the program runs 5x faster, takes 1/10th the memory, or something else materially worthwhile for your end users)
- Don’t work in a job just for the money - the money will dry up, but those memories won’t. Your life is too valuable to waste on stupid crap.
- Learn how to write tests
- …but don’t go overboard. Find the right amount of testing so that it’s actually helpful. Code-to-test ratio shouldn’t be over 1.2, and writing tests shouldn’t take more than 1/3 of your time.
- Know what ‘good enough’ is in any project. There’s seldom a need to optimize, don’t build up technical debt needlessly.
- Legacy software is the perception shift that happens when you become a better programmer. Legacy software keeps you honest.
- Your users might never tell you something is broken