Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Some of the hottest topics in the software world atm are:

  • Domain-Driven Design
  • SOLID principles
  • Agile methodologies
  • ORM

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:

  1. Examples based on some kind of internet website, so all tiers can be involved.
  2. 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.
  3. Explain how (2) goes from model to database schema, using latest ORM tech (this might be the biggest section).
  4. Use MVC (or whatever tech that becomes) as a platform for the examples.
  5. Very briefly explain TDD, then show you how to plug-in unit testing, probably visual studio testing/nunit or latest tech.
  6. When to use IoC.
  7. Show you how to write a couple of very simple integration tests using whatever the current tool of choice is (Fitnesse or whatever).
  8. 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).

share|improve this question
    
If you want to chat then please use that chat. This isnt the right place for discussion –  Tom Squires Sep 23 '11 at 11:43
    
Avoid To Capitalize Each Word. It doesn't bring anything, is wrong and makes it more difficult to read. Also, consider writing shorter questions if you want more people to read and answer them. This is a Q&A site, not a space for blogs. –  MainMa Sep 23 '11 at 11:48
    
ORM is generally evil. It's not a good technology. It will leak for anything that is not a toy. On that matter TFS is also evil. –  Raynos Sep 23 '11 at 11:57
1  
There is no cookbook that will make you a chef. Writing a book with annual revisions that are peer-reviewed to avoid author-bias is not feasable. Those large books are to be used as a reference and not intended to be consumed in one sitting. What was the last .NET book that went over your head? –  JeffO Sep 23 '11 at 11:58
    
This is far too broad to be a real question. –  StuperUser Sep 23 '11 at 11:58
show 1 more comment

closed as not constructive by ChrisF Sep 23 '11 at 11:58

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

1 Answer

up vote 5 down vote accepted

You want to know if there's a cookie-cutter template for technologies and processes to use for a new software project? Well, there's not.

Determining the appropriate process depends on the organization, team, scheduling, budgeting, familiarity with the domain, and so forth. The techniques and tools to support the process depend on the process that you are following. Along the same lines, the best languages, libraries, and frameworks depend on the requirements that you need to satisfy to deliver an acceptable project.

You aren't going to find a book (or any other resource) that explains how to run every single project, how to choose what technologies, and how to make everything fit into your project. What you can find, though, are good resources that help you to learn about various technologies and techniques and from there, you can learn how to best apply them to your problem.

The questions that you should be asking need to be focused on specific projects, processes, and technologies. These can't really be generalized across every project in every organization carried out by every team. That's why we have project managers and leads with the knowledge, education, and experience to assess the situation and make the appropriate decisions given a specific context.


To address a few specific statements that you made:

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.

The job of a software engineer is to stay on top of the latest in his field or domain. One can't be expected to know everything about all aspects of software development, but I would expect a networked applications/distributed systems programmer to stay up to date about the latest technologies and protocols for networking and building distributed systems, just like I would expect a software project manager to stay up to date on the latest techniques on how to lead and manage software projects. And beyond staying up to date, I would expect the individuals to apply personal thought as to how what they are learning can be applied to their organization, team, and project.

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.

You aren't going to find many books revised at that rate. A lot of work happens continually, and it takes a long time for something to go from an idea in someone's head to an implementation to realized as adding value that is worthy of being explained in a book. This goes back to my first point - as a professional, you can't be expected to be spoonfed. It's up to you to know your field and domain and stay current or get left behind (and perhaps be out of a job).

The real key to this book is that it would be a "How to" book, not a "Why you should" book.

There's no way to address "how to" for large scale software projects with so much variability. That's why most books address a specific technique or set of techniques, when they are applicable and when they aren't applicable, why you should consider using them. You'll get some general best practices for implementing, but with the variations between projects and requirements, there aren't many hard rules, but rather general guidelines to work within.

share|improve this answer
2  
+1 An emphasis on how instead of why is asking for trouble. –  JeffO Sep 23 '11 at 11:59
1  
Thanks for providing an opinion. I still feel that the majority of professional programmers are not able to keep up with the latest technologies and make good, informed decisions for new projects. In fact, I'm certain of it. The landscape of computing just changes too fast and there's too much out there to take in. I'm just going to stick to reading 5 or 6 books a year as that seems to keep me quite a way ahead of the curve. –  jimasp Jan 19 '12 at 17:52
    
@jimasp Reading books is not enough. Unless you actually practice and do, it doesn't matter how many books you read. –  Thomas Owens Jan 19 '12 at 18:04
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.