I’ve been developing software full time since 2003, beginning with languages I’m still embarrassed to mention. I spent my first several years in search of some undefined “best practices” that always eluded me. Looking back I realize that I occasionally crossed paths with the developers from whom I could or should have learned, but didn’t recognize them at the time. I hope that something I write can help get another developer on the right track a little bit more quickly than I did.
When a coworker introduced me to dependency injection and unit testing those acted as catalysts which guided me toward learning and applying other principles and practices. That’s why I emphasize the benefits of both. If the benefits of SOLID and other principles are initially too abstract, the mechanics of testing and DI provide immediate although limited benefit which gives us a reason to learn and apply more.
When I had something interesting or exciting to share I used to send long emails to my coworkers. That’s not a useful way to communicate, so now I post here and try to help out on Stack Overflow. Getting mercilessly downvoted for being wrong is a great way to learn. In 2017 I left the Fortune 100 company I had worked at for years and went to a terrific consulting company. It’s continually broadening my horizons, and I have to work a little harder to have something new or interesting to contribute.
Here’s some reading I can’t recommend enough:
- The Clean Code Blog by Robert Martin (Uncle Bob.) It’s inspiration to be passionate and opinionated.
- DaedTech, a blog by Erik Dietrich. Every new developer should read his Expert Beginner series which tells us what not to become and shows why we should listen to knowledge, not job titles.
- Code Complete 2nd Edition is the book I wish had been available when I started, except it was and I didn’t know it. It doesn’t matter that it’s from 2004 and the examples are in Java. It doesn’t matter at all. Just read this book.
Maybe one day I’ll get around to enabling comments on this site. I don’t know if that would be useful or not. Until then I welcome any feedback or input at email@example.com.