Source: https://blog.pragmaticengineer.com/advice-to-myself-when-starting-as-a-software-developer/
Here are seven pieces of advice the author wishes they would have started doing sooner. Habits that could have helped them grow faster and in a more focused way.
- Take the time to read two books per year on software engineering
- Learn the language you use at work in-depth, to the very bottom
- Pair with other developers more often
- Write unit tests and run them against a CI
- Make refactoring a habit and master refactoring tools
- Know that good software engineering is experience. Get lots of it.
- Teach what you learn
Each of these is expanded on in more detail below.
- Pick two software**-**related books a year to read and process carefully
- This includes taking notes, talking chapters through with others, doodle diagrams, trying out, going back, and re-reading. Read rather slowly. Do a chapter or two in one sitting. Take notes or highlight.
- Look for books that go deeper than what you know now. This could be a book on a specific technology, or on software engineering practices.
- Don't go overboard: one book every six months is already great. Pick a book, and spend the time to properly read it
- Here's the list of books the author has read and is reading
- Whichever your primary stack is at work, go deep into it and learn the internals
- Learn about threading, how garbage collection, performance bottlenecks, and other internals
- This knowledge becomes an advantage both at work, and when interviewing for other jobs
- The more languages you know, the more you can evaluate their strengths and weaknesses. And the more languages you know, the easier it is to pick up new ones - and go deep easier when you need to do so.
- Pairing with another developer can provide learning leaps that greatly accelerate your development
- Pair to understand how other developer's think and learn from one another
- Pair in order to write better and more maintainable code
- Unit testing is essential but in order to understand why you have to experience it saving you
- You need to grunt away, and write those tests, have them run against a CI (continuous integration)
- If you are just getting started, you can use Travis CI for free
- Good test coverage on your code can really save a project as the team grows and evolves
- The tests protect new developers from breaking things and pushing bugs to production
- Tests allow you to make huge refactors and re-designs without fear
- Learn how to comfortably do both small and large refactors
- Learn your IDE really well and how to use the editor to make refactors easier
- Extracting a method, renaming a variable, moving into a constant
- Make small refactoring a weekly habit
- The best software engineers have a mix of learned knowledge and real-world experience. The knowledge you can learn. The experience, you need to go after.
- Look for opportunities to work on different stacks, different domains, and challenging projects.
- Volunteer to work on new projects and try out new technologies as the first in the team
- When you push yourself and work with engineers your senior, you accelerate quickly
- The best way to learn something is to teach it.
- Write blog posts or create presentations for others in the company or communities
- If you want to learn something well, sign up to do a public talk about that thing
- The nice thing about teaching others is you can only win. Not only will you learn something by teaching, but you'll also help and inspire others.
- Become a teacher and mentor for others. The earlier you start giving back and teaching, the more natural this will come.