The Pragmatic Programmer (20th Anniversary Edition) is a great book and must read for beginning developers. It is written by David Thomas and Andrew Hunt. You can find all the information on their site

Book Cover

Short review

For me personally it’s one of the best guides about being a software developer. First it is very motivational and teaches you the right mindset to tackle your work related problems. It also provides a lot of useful practices, that you can see as a toolbox: now it’s up to you to pick the right tools for the job. This book is still interesting to read for the experienced developers, because it’s another way of explaining some concepts, and you might always discover a hole in your knowledge. Some concepts were better explained in Clean Code: for example ‘orthogonality’: I prefer the explanation by Robert C. Martin: “Avoid side effects”.

Most interesting tips from the book

  • Care about your craft: do it well or maybe IT is not for you?
  • Provide options, not excuses: especially with co-workers and clients. Don’t burden them with problems, blame people, but instead present them some solutions.
  • Don’t live with broken windows: when you see something broken, fix it!
  • Be a catalyst for change: don’t force change on people, instead show them how the future might be and help them create it.
  • Invest in yourself: make learning a habit.
  • A good software design is easier to change than a bad design.
  • Program close to the problem domain (Ubiquitous language in DDD).
  • Keep all knowledge in plain text: it will not become obsolete.
  • Always use Version Control System: save your configuration, scripts, code, preferences, documentation,… in Git.
  • Crash early: Fail fast… A crippled program is more dangerous than a dead program.
  • Shared state is incorrect state: how to deal with concurrency: event-driven, passing state around,…
  • A test is the first user of your code: get feedback early.
  • Build End-To-End, not Top-Down or Bottom-Up: the best way to learn fast about the problems you encounter and how well you fulfill the requirements.
  • Fully functional teams: organize around functionality instead of job titles.
  • Sign your work: share it, be proud of it.
  • And most importantly: Don’t panic!