Today I finished The Pragmatic Programmer: your journey to mastery, 20th Anniversary Edition (2nd Edition). This is one of the 2 books that I have been procrastinating for two decades to read. The other book is The Mythical Man-Month: Essays on Software Engineering. When pragmatic programmer came out 20 years back, it was a phenomenon on its own! Numerous books, articles, and ideas have been generated out of it. This new 20th-century edition that just came out now will attract similar attention from the industry.
Here are some of the useful ideas outlined in this new edition.
- Try to be aware of the bigger picture –
- think beyond the immediate problem
- place the problem in its larger context
- Take responsibility for everything you do –
- don’t allow projects to fail through neglect
- don’t be afraid to admit ignorance or error
- be responsible for yourself, your career, your project, your day-to-day work
- Provide options instead of excuses –
- analyze the issue
- find alternative options or solutions
- explain what can be done to resolve it
- Address software entropy (disorder) –
- broken window theory
- fix issues when it is discovered
- Develop well, based on what you know for sure and how to do it
- Develop good enough software –
- involve your users in the trade-off
- don’t’ develop ignoring user requirements
- make quality a requirements issue
- no code is perfect; so don’t spoil it by over-engineering and over-refinement
- Build your portfolio –
- invest regularly, update knowledge
- diversify your technical skills
- experiment with different environments
- manage risk: don’t put all your technical eggs in one basket
- learn an emerging technology before it becomes popular
- review and rebalance your skillset to stay current
- learn a new programming language every year
- read a technical book every quarter
- take classes
- Communicate well –
- know what you want to say
- know your audience
- choose your moment
- choose a style and make it look good
- involve your audience, be a listener, get back to people