D'Arcy from Winnipeg
Solution Architecture, Business & Entrepreneurship, Microsoft, and Adoption

Tech Learning–Always Start with Hello World

Wednesday, May 15, 2013 2:20 PM

Remember Hello World? It was the program that we all started out with at some point. We did something that would make Hello World display somehow. But as we got older and more into our careers as developers, we’ve forgotten Hello World. Instead, we’ve replaced it with Contoso or Pet Store or whatever large, heavy, complex domain we decided would be a much better sandbox to frame learning a new technology with.

I was talking with an attendee at Prairie Dev Con about this last week, and how we can easily get caught up in fulfilling the domain rather than understanding the underlying tech.

Consider these two scenarios, both related to learning ASP.NET MVC with EF code first.

A doctor’s office wants a web site to schedule patient visits. This site will use forms authentication and will leverage MVC and Entity Framework Code First. We’ll use jQuery on the front end for the UI and SQL Server in the back for storing the data. The datamodel looks like this…<insert data model here> and the class diagram looks like this <insert class diagram here>.   Create a single view in an MVC project that uses EF to retrieve a simple value of “Hello World” from a database table and display it on the screen.


Now, if we were to do both of these we’d come to the same result of understanding EF and MVC, but with one difference – the example on the left comes with a huge and heavy domain that we’ve added in for no other reason than to feel like we’re building something of value. But here’s the thing – we’re not. When we’re learning a technology, its about the technology. The details of a pretend scenario do nothing but get in the way of the actual learning.

The value is in us understanding how the technology works so we can apply it to domain contexts later. Would we expect an apprentice carpenter who’s just learning to build a house as their first project to teach them framing? Of course not. So why do we expect it from ourselves as developers?

Unburden yourself from complex domain contexts when you’re starting out with something new. Start with Hello World and take it from there.

D




Feedback

# re: Tech Learning–Always Start with Hello World

I guess it depends on the audience. If the talk is "Intro to MVC" then perhaps, Hello World is appropriate. On the other hand, I would hope that most developers are capable of doing Hello World on their own time (even after the talk). But when you've got an "expert" at your disposal, why not get into the weeds a bit?

There's so much complexity that we encounter when using a new technology which goes way beyond Hello World. And typically those complexities arise when you're dealing with interfacing multiple technologies, particularly in a less trivial domain.

I for one get tired of talks that show you how to print Hello World, or draw a rectangle on the screen. Oh wait! Look! I rotated the rectangle 45 degrees! I prefer talks that show me something that will either help me with an existing problem, or go beyond the basics that I can easy get by reading a few introdoctory blog posts.

</rant> 5/15/2013 11:35 PM | mikesigs

# re: Tech Learning–Always Start with Hello World

The other problem that you run into with a complex domain model is that you run the risk of the audience (or presenter) getting distracted by domain specific business logic.

I have also seen many people get confused and think that the technology presented only works for the business domain initially presented. This is not likely to be a problem if you are introducing MVC and EF. The audience will know that they are applicable beyond a hospital scheduling application, but if you are introducing Strategy Pattern things could be different.

If you introduce Strategy Pattern you do run the risk that the audience may not see applications beyond the initial example you show.

I will generally try to start with Hello World and then show a slightly more complex and if time permits, discuss other scenarios where the technology shown may be applicable.

Sometimes it can be fun to see how Hello World can be brought into a new scenario 5/16/2013 7:37 AM | Nick

# re: Tech Learning–Always Start with Hello World

Mike - This post wasn't about presentations. It was about how some people think they need to dive into a complex example to start learning a new technology. Not sure why you thought that - maybe the PrDC reference?

D 5/16/2013 9:02 AM | D'Arcy from Winnipeg

# re: Tech Learning–Always Start with Hello World

I guess because you hinted that the convo you had at PrDC was the stemming point for this blog post, and also conferences are where you learn new technologies, I put the two together and assumed you were talking presentations. My bad. 5/16/2013 10:45 AM | @D'Arcy

# re: Tech Learning–Always Start with Hello World

I must've screwed up the comment form for the above comment. It was from mikesigs. Not @D'Arcy. I apparently can't internet today. 5/16/2013 10:48 AM | mikesigs

Post a comment