With a Bachelor's in Near Eastern Studies, it probably goes without saying that I don’t have much of a formal background in development or information systems. Happily, however, I’ve always "rolled" a bit nerdy and have always loved computers. So it was that I found myself doing data entry at one point while working to put myself through college. And it was there that I bought my first "programming" book: Roger Jennings’ massive "Special Edition: Using Access 2000." Little did I know then, but books would end up playing a significant role in getting where I am today.
The Need for Books
With time and effort I was able to use the concepts and techniques taught in that first programming book to not only reduce major amounts of redundancy in the data-entry work I was doing, but also to learn SQL and basic programming concept.
Within just a year or so, I was able to parlay my self-taught experience and understanding of SQL, basic programming and some Web development I had taught myself (again, thanks in large part to books) into a job as a full-time developer at a "dot-com" startup called MyComputer.com. There I worked with a team of developers and engineers to optimize and tune a huge number of ginormous MySQL databases to handle the back end of a product that would eventually become the core of Omniture, a Web analytics solution.
From MyComputer.com (where I learned PHP and worked with MySQL, as well as did some work with Oracle), I jumped ship again and went back to the Microsoft stack--but this time with ASP.NET and one of my true loves: SQL Server.
During the next few years I continued working as a developer, then as a developer + webmaster/DBA, on up to a senior developer and DBA/database developer. I then finally set out on my own to become a consultant.
All along the way, though, I spent significant amounts of time poring over books and learning as much as I could. In fact, without books, my career as I’ve known it simply wouldn’t have been possible.
Consequently, I still read a large number of technical books today. Many of them continue to be SQL Server-related (my favorite thing about SQL Server is that it’s just so vast and there’s just so much to continue learning about), but I also make it a point to read a few books on .NET development every year. Accordingly, two books I’ve just spent some time with of late are so fantastic that they merited mention in a review.
Adaptive Code via C#: Agile Coding With Design Patterns and SOLID Principles
Written by Gary McLean Hall and published by Microsoft Press, Adaptive Code via C# is an outstanding book. It excels not only in terms of the author’s presentation of the content, but also in the details provided and the insights afforded. The frankness of the presentation is all very compelling and makes for a great read.
As you could potentially guess from the title, this book covers Agile coding methodologies, design patterns, and SOLID--all from the perspective of making code more manageable, cost-effective, and easier to maintain and extend.
One of my favorite aspects of this book was the coverage of Agile methodologies, which are addressed by outlining core concepts and principles (as well as the associated benefits) and then recapped perfectly with full-blown "sample" scenarios outlining how a fictional development team would actually conduct various meetings, work together and participate in Agile workflows along the way.
For anyone who’s not yet well-versed in Agile, Design Patterns or SOLID, this book is a great resource and makes learning about these topics feel totally intuitive. Better yet, even if you’re the type of developer or architect that eats, sleeps and drinks nothing but these topics, I’m convinced there’s enough information and insight provided in this book to make it well worth the purchase price.
Microsoft .NET: Architecting Applications for the Enterprise, Second Edition
Written by Dino Esposito and Andrea Saltarello, Microsoft .NET – Architecting Applications for the Enterprise is, in a word, fantastic. In fact (and as with Adaptive Code via C#), I can’t really do this book justice in just a few sentences.
Without a doubt, though, this book exudes experience and pragmatism, making it a highly valuable resource. It starts by looking like a book primarily devoted to DDD (Domain Driven Design) and doesn’t pull any punches when making the case for the benefits of DDD as a means of controlling code complexity and making code easier to own and maintain. But, along the way, it becomes clear that the authors aren’t zealots or theorists. Instead, they’re pragmatists responding to changes in the development industry as a whole by leveraging (and sharing) as many best practices and insights as possible.
If you’re serious about architecture in any way, shape or form when it comes to .NET applications, you’re missing out if you don't read this book.