Some of the hottest topics in the software world atm are:
- Domain-Driven Design
- SOLID principles
- Agile methodologies
Now assuming that you are not currently using all of these in your team, if you were to go and ask your team (individually, not as a group) what they knew about the topics they were not applying - how much do they know about those other topics - they've probably "heard about it/read it somewhere once". The problem is that, increasingly, tech is changing so fast that a lot of people (average Joe programmers) just can't keep up with the latest thinking.
Now while those that are academically gifted can read 20+ books on the above subjects every year and combine it into some kind of order in their heads in order to apply it to a new software project, most of us will not be inclined to do all that studying. Personally, I sit at a desk all day programming, and so the last thing I want to do is go home and do the same. I want to go play sport, see friends, spend time with the gf, and generally have a life.
So, given a nice shiny new greenfield project, many of us (make that most, if we are honest) are still pretty confused about how to tackle a new project with the latest, greatest thinking that is most commonly accepted by our more academically inclined piers.
So my question - I was wondering if there was any book out there present or future, that combines the latest thinking into something more manageable for the average mortal to digest and apply? (preferably using .net and the most popular current related tech)
From my experience in the market, it would look something like this to be relevant to most real developers:
- Examples based on some kind of internet website, so all tiers can be involved.
- Explain how to identify and map the real business objects, this would currently be done with domain-driven design as the latest commonly-accepted thinking, while obeying SOLID principles.
- Explain how (2) goes from model to database schema, using latest ORM tech (this might be the biggest section).
- Use MVC (or whatever tech that becomes) as a platform for the examples.
- Very briefly explain TDD, then show you how to plug-in unit testing, probably visual studio testing/nunit or latest tech.
- When to use IoC.
- Show you how to write a couple of very simple integration tests using whatever the current tool of choice is (Fitnesse or whatever).
- Show you (in no more than one chapter) how to set-up TFS for continuous integration.
The book would then be revised every year to reflect the latest and most agreed concepts, so software teams always knew the best way to handle a new project, without wading through this year's mountain of new books themselves to try and identify the common themes for this year's hottest topics. It would be important that the revisions did not reflect the author's own opinion, but rather the general opinion of the majority of his piers, so it built an accepted, uniform approach to .net development projects.
The real key to this book is that it would be a "How to" book, not a "Why you should" book. It could (and probably should) reference the "Why" books for those that wanted to be better programmers or just needed to know more, but it wouldn't have the space to explain it anything more than briefly, given the target of the book.
Perhaps the book could more accurately be called "How to correctly and practically apply the current state of the art .NET software development design and technology to real world projects this year (for idiots)" but I guess the title needs work ;-)
So, to fit into the sites "ask a question" directive - is there any book out there even vaguely similar to this? (although I doubt it gets revised regularly).
Right, I'm off to read another dry, theoretical book, on my week off to try and keep up :( It's a shame that I'll probably have forgotten all the content by the time I come to use it, and for all I know it might be out of date already...
Oh btw, where's the best place to kick this off as a discussion as opposed to a question? reading the FAQ only suggested the real-time chat, which I had a quick look at, but tbh it's pretty dead and seems to be mostly one-liners, not suitable for something long-winded (another website would be fine).