Learning to Write (Software)

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.

image image image image

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. imageThey 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…

image image image image image

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.  😉

imageWhat advice am I missing?

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

 

Happy Coding!

Tags:

About Caleb Jenkins

Caleb Jenkins is an international speaker, author and 6 time Microsoft MVP award recipient, he currently works for Quicken Loans in Detroit (from his home in Texas). An entertaining and informative speaker who approaches software from a fresh perspective that spans UX, agile practices and technologies for enterprise customers from across the globe. Leading UX product design teams, coaching multi-team agile transformations and architecting and mentoring at some of the largest companies in the world, As a long time community leader and former Microsoft Developer Evangelist, Caleb is well known for his engaging speaking style, depth of knowledge and creative energy. Founder and Principal Mentor of Proaction Mentors, former UX Manager and Agile Coach, Senior Architect for Six Flags Corporation, Product Architect on a Cloud Marketing Platform, Caleb has made a career out of empowering others while building products and teams that delight customers and solve business needs. You can follow him on twitter (@calebjenkins) or his blog, DevelopingUX.com and if you're still reading this, then you could also subscribe to his blog RSS feed or sign up to receive updates by email