Caught Up on some reading this weekend
Got the chance to read through two new books although it looks like I got a few more on my list that look pretty good.
- Office 2003 Programming - Real World Applications - Ty Anderson (APress): Normally, I run from books with these sorts of titles. There are a few keepers I've run across when it comes to VBA programming, but a lot of them just scare or annoy me. So far though, I'm really liking this one. Why? Because the author seems to 'get it'. When I say 'get it' most of you know what I mean. If you've never had to rebuild or do major repairs on some code that was written by a VBA guy raise your hand. Ok, no one is raising their hands. Most VBA code is like the epitome of pragmatic, just make it work at any cost, thinking. It wasn't too long ago that my old boss and I were rewriting 12,000+ lines of Word Macros in .NET and tying them to a database (which is a fancy way of saying “throwing out 12,000+ lines of code and redoing it). There was also a ton of Excel code that needed redone. The problem we had is that the Macro code just evolved - well before either of us got there. It was built to meet specific requirements but had 0 cohesion. Code reuse was non existent. The code that was there worked, but maintenance was excrutiating and offered little bang for the buck. I mention this b/c this has been my experience with Macro coders throughout my career. It's like every design principle gets thrown out the window in an effort to address one specific problem at hand. In short, the developers (or VBA Users as my friend Andy calls them) just Didn't 'get it'.
This guy obviously does. The book is cool because he spends a lot of time defining the problems that he solves and shows why X or Y was chosen. It encourages serious thought in a venue that is normally lacking much of it. He runs through a few different scenarios but they all tie in together, from printing Invoices with Work, building automated timesheet tracking in Excel, Email Templates in Outlook and using Web Services to tie things in. He's very structured and thorough which is usually not something you expect to see. He even goes into building your own Add-ins and how to deploy them.
So far, I've liked everything I read. He's got a solid framework for areas like using .config files and xml parsing, integrating Smart Tag Technology and a whole host of other goodies. Actually, the best way to describe it is a Office development book focused on .NET written by a informed professional that understands software development. I'm planning on going through it a little more thoroughly in the next few days, but from what I've seen so far - it's a good read in general - and probably one of those must have books if your doing Office development.
Bought this book at 10:00 tonight, could barely put it down. The code is in Java but it's a patterns book so if you can't adjust then you are probably reading the wrong book. As far as design pattern books go - this is the easiest one to read I've come across. I got through 5 patterns so far and totally understood what was going on and why the pattern made sense (which is where I tend to get lost sometimes).
I have to admit that my motivation for getting this book was two fold. 1) I'm always interested in Data Access topics 2) It wasn't written with .NET Examples, so I'd have to really think about them and by porting them over to working models in .NET, I could get comfortable with them. So far so good.
Now, I'm not dogging out the Data Access Application Block - but there's a few too many people out there that think it's the be all and end all pattern to solve everything data access related. While I think the block is a good starting point and has many benefits, I don't think it's the Ultimate way to access data in every case. For instance, if you have that layer remoted, you're going to have a lot of fun getting a data reader to work.
The first part of the book discusses “Decoupling Patterns“ all of which I was already familiar with - directly or indirectly. All of the decoupling patterns are discussed in about 6 pages so you can probably guess that they are pretty simple and too the point.
More common ones (at least ones that I'd figure you'd come across on a regular basis are the Input/Output Patterns which are pretty much what you'd think they'd be - but a very methodical way of dealing with these issues. Definitely digging this section.
Caching is another area and one which I tend to skimpp on a little. The disconnected nature of ADO.NET gets you to the same place in many regards but it's different enough to mention - liked the Primed Cache probably the best of all of them.
Concurrency Patterns was probably the chapter that sealed it for me. I still need to go through it - after all I've only been reading this for about 2 hours but it rocks. I really really like this part b/c it seems to me that this is an area that doesn't get a lot of attention in many regards, and a 'generic' component that doesn't allow for both optimistic and pessimistic concurrency for instance, is going to leave some folks out in the cold.
When I first started reading through some of them, the first thing that popped into my mind would be a ConnectionStringBuilder component and then I remembered that the boys on the ADO.NET team already built such a thing for Visual Studio .NET 2005. I think I may code one on my own - using some of these patterns and see what it ends up looking like.
As far as pattern books go - there's a lot of red meat here. The Signal to Noise is way heavy on Signal and a lot of this stuff is material you can take to work the next day and get cranking with - I know I will be.
Again, remember that this is NOT a .NET focused book - but more and more recently I'm trying to throw a few of those in to force myself to think in a different light and focus on understanding the concept more than simply understanding how to make something work.
More to come on both of these as I get through them - and I have a few more books I'll be gowing through that look pretty darned good. I saw Scott Allen's name on Beginning C# Databases: From Novice to Professional - so I'm sure it will be a winner too