I received a message on Facebook last week from a friend of mine that asked this question:
I have recently decided that I would love to go to school to learn programming. I just wanted to know if you had any advice or suggestions that could help me out (I know it’s a very open ended question)? Also I wanted to know if you had any suggestions on books to read regarding Design Patterns (particularly related to web development).
Great question. Let’s tackle those starting with the second part…
any suggestions on books to read regarding Design Patterns
(particularly related to web development).
Seriously, you can’t go wrong with the Head First Series.
I know that the covers are a little hard to take seriously, but I what I really like about these books is that they are designed for learnability. They are not designed to be reference books or course curriculum. This is the same reason that I liked learning from WebMonkey (back in the day… when they had current and relevant articles)
OK, now for the first part of the question.
I would love to go to school to learn programming. I just wanted to know if you had any advice or suggestions that could help me out
Here’s the thing. I don’t think that I learned any of the really good practices that I use today in school. I find that most CS programs are geared for people that want their PhD in CS… or want to work for Intel developing the next CPU chip or want to right super fast machine code for networking drivers and pace makers. These are all good, but most of them miss the point and the sort of Software Engineering that is required for solid, maintainable, reliable business applications (98+ % of the consulting that I do)
I don’t know of a single school that teaches, TDD/BDD, CI, DI/IoC, SOLID… I DO think that you can learn the fundamentals of programming (syntax) and even some of the good OO principals (but even that usually goes overboard with too much theory and not enough tangible reality).
So it really depends on your goals.
If you want to work towards your PhD – go to a university and get your B.S.
If you want to develop web (UI) – I would look at the the offerings at most community colleges. I find that community colleges are often more agile to the market place with certification programs and other offerings than many Universities.
If you want to learn the really good practices for maintainable, testable software…
go listen to this HanselMinutes episode, find as many sources of quality content that you can latch on to and absorb them… plus. I’d go subscribe to the blog series that I’m writing on development practices.
Take a second to answer this quick poll on where you learned to write software. I’ll post the answers when the poll closes on Feb 20th – last day of the upcoming Microsoft MVP Summit