Photo by Anete Lūsiņa on Unsplash
On My Bookshelf - 'The Pragmatic Programmer' by Andrew Hunt and David Thomas
One of my recent reads was "The Pragmatic Programmer" by Andrew Hunt and David Thomas. This guide helps software developers improve their craft. Even after years in software engineering, I believe in continuous learning, especially since technology keeps evolving. The book shares stories, tips, and advice to help programmers thrive in software development. It promotes adaptability, ongoing learning, and focusing on quality.
Here are some key takeaways:
Software as Craftsmanship: Just like a blacksmith shapes metals or a carpenter creates furniture, a software developer builds applications. It's not just about the tools but the skills. In the realm of craftsmanship, a blacksmith meticulously hones their skills to shape metals, while a carpenter refines their techniques to produce elegant furniture. Similarly, a software developer artfully molds code to birth applications. As time unfurls, this code matures and becomes more polished, mirroring the progression seen in a craftsman's masterpieces. Peer learning, knowledge sharing, and collective problem-solving act as the linchpins for improvement. And at the heart of it all is pride—just as craftsmen revel in their creations, developers too should take immense pride in their code.
DRY Principle: It means "Don't Repeat Yourself." Avoid using the same code everywhere. Think of it like this: if you use the same piece of code in many places, you'll have a tough time making changes later on. By avoiding repeated code, you make your work easier to update and less prone to mistakes.
Orthogonality: Make sure different parts of software can work on their own. Think of a set of toy building blocks. If you pull one block out, you wouldn't want the whole tower to fall, right? Keeping things orthogonal is like having different departments in a store; if the toy section is closed, it doesn't mean the whole store shuts down.
Automate: Reduce repetitive tasks. Use tools that can do the work for you, like a dishwasher cleans dishes without you washing them by hand. Instead of doing repetitive tasks manually, we use tools that do the job for us. It's all about making things easier and more efficient.
Code with Quality: Make your code clear, like a well-written story. Instead of using names like "x" or "y" for variables, use names that tell you what they are, like "totalPrice" or "userName". It's all about making sure that if someone else looks at your work, they can easily get the whole picture.
Decoupling: Keep components independent. For instance, in software systems, rather than having one component directly call and depend on another, we might use a queue. This way, even if the email system is down or being updated, the website can continue to function normally.
Stay Updated: The tech world is always changing, just like fashion trends. Keep up with the latest to stay relevant. It's about taking the time to learn about the newest tools, languages, or ways of doing things.
Testing: Before sharing your software, test it. Automated testing is an even better helper. Instead of manually checking every detail, you have tools that run through your code, looking for any issues.
Flexibility: Be ready to adapt. Being flexible means being ready to adapt when needed. It's like having a backup plan for that picnic. With a flexible approach, you can adjust your code or strategy, ensuring your software stays relevant and effective no matter what comes its way.
Estimations: Plan realistically. When figuring out how long a project or task will take, it's essential to be realistic. By giving realistic estimates, you ensure a smoother journey in coding, with fewer surprises.