Full Stack Day Recap and Things Learned

This last Saturday the North Dallas .NET User Group sponsored “Full Stack Day”, and all-day, hands-on event to learn a full stack for web development, DB (Sql Server), web framework (ASP.NET MVC, C#), Css and Javascript. Many who do web work only know part of the stack, and my contention is that it is very useful to get some level of proficiency in the whole. So all day Saturday I taught and live-coded a to-do list app with about 35 people as an exploration of the full stack, along with some time for hands-on labs.

As I went I checked in the source code to Github so they could browse it on their own during the labs. They were all supposed to bring their laptops with software installed (Sql Server, VS 2010, MVC 3) for them to hack around on things during those hands-on labs during the day.

full stack day

In some ways it was an experiment. I’ve never experienced an event like this (though I’ve heard of events somewhat similar) and wanted to find out if it was both possible and useful to do. So in some ways these three dozen people were my guinea pigs. So lets see how this turned out.

Who Went?

Only 61% had attended a NDDNUG meeting before, so a large chunk came through other avenues than our group. I think Shawn Weisfeld recruited a number of people that he knew, so thanks.

How familiar were they with the technologies?

Technology Experts Regular users Occasional users New users
Sql Server 5% 60% 10% 25%
ASP.NET MVC 5 5 25 65
C# 15 40 15 30
Html 15 30 40 15
Css 10 20 40 30
Javascript 15 10 30 45
jQuery 10 5 25 60

As for how their occupation jived with what we were doing that weekend, 65% said they were developers, 5% database engineers, 5% designers, 15% hobbyists and 25% those who were just trying to get started.

What We Did

Getting Ready

I showed up at around 8. The event was supposed to start around 8:30.

Sql Server Time

Originally I planned to start with ASP.NET MVC but changed my mind about a week before and decided to work from the bottom up. In terms of instruction, I felt this section went well. In terms of installation, this section was just problematic. I went the route of having them install Sql Express and Sql Management Studio so they had something to use to connect to it and run queries. Wow that was problematic, and I don’t blame the attendees. I figured the best way to get it installed was to use the web platform installer. So I told them to install that, find sql management studio, and then install that. So here is what the opening screen looks like for the WPI:

web platform installer

Several people were confused (I also think this is confusing navigation) and didn’t know there was anything other than what they saw on the left nav, which didn’t show them management studio. Consequently several installed the Sql Server data tools, which they didn’t need. Frankly, the whole process of getting sql server installed and running is a mess in my opinion unless you do it all through VS, which I’m not used to doing.

Looking back, this is definitely the most important process to streamline. Either MS needs to come up with a better installation plan for Sql Server and its tools or I need to do something different next time. They were supposed to come with it installed (and most did) though some had issues and it made sense for us to help get them started.

In terms of content, I showed them how to create tables in the designer, how to generate scripts from that so they can create their database schema via script if they wanted to, basic crud querying and left and inner joins.

Massive

So I needed them to be able to hook up the code to the database, which I had just shown them how to use. ADO.NET would have taken way too long. Entity Framework would have been easier. NHibernate would have also been easier, but both have a significantly higher concept count and startup tax than Massive, so I showed them how to use it to query the database. From my perspective this worked very well and I got a number of positive comments on it from the students. Big thanks to Rob Connery for creating this. Simplicity is much harder than complexity when it comes to code, and Massive does a fantastic job of being simple.

The whole database portion took about 30 minutes longer than I planned but I’m glad I didn’t go any faster. It might have been good to go a little slower.

ASP.NET MVC

Though WebMatrix would have probably been a good choice to use, I decided to teach them ASP.NET MVC. It’s pretty easy, after all. The app involved three screens, one to list the tasks, one to add, and one for a deletion confirmation page. In that process I showed them the basics of Html as well, and showed them how to create the controllers and views, and how to use their Massive knowledge to get the data from the database and interact with it on the site.

Css

Next was an introduction to Css. I started by showing them the basics of text formatting and moved on to floats and layout. We then moved on to turn our header into a post-it note (which they got a kick out of) using some Css 3 goodness. We also discussed the concept of progressive enhancement and how they could use Css 3 selectively today to upgrade newer browsers but still give older browsers something decent to look at. After all, do websites really need to look the same in every browser? I think not.

After the Css section I asked if they wanted to do hands on labs and they just wanted to move on to the Javascript portion. Hmmm…more on this in a bit.

Javascript

The final piece of the full stack was Javascript, which we saved till last. I gave them a very short introduction to the language, including variables, how to create functions, how functions can be passed around and prototypical inheritance. This whole passing functions around thing was very important to show, because I then showed them something that uses this extensively…

jQuery

So then I showed them jQuery, which they liked. To show them the power of Javascript and jQuery, we then took our three-page app and turned it into a single-page app, making the add and delete functions a part of the main page. We had jolly good fun showing and hiding divs, nuking list items and making some ajax calls. My most embarrassing live-coding mistake here was to slip up and try to use the “dynamic” function of jQuery when I really meant to use the “delegate” function. And then you google "jQuery dynamic" and find nothing useful...ah, the joys of live-coding in presentations.

Chat Time

Because we skipped a hands-on lab time, we finished early, around 3:00. I figured I might get a mass exodus at that point. I told them that we could sit and hack through more stuff on the website or just talk about things and they chose to mostly talk. And I didn’t get a mass exodus. We spent a good bit of time on mobile web development especially and I did a little example of using media queries to dynamically style your page. Most ended up leaving between 4:00 and 4:30, though a few of us hung out a bit longer and looked at some code and chatted. And thus the event ended.

Concluding Thoughts

Would I do this again? Certainly. I think this kind of event can definitely work and those who filled out the survey at the end certainly agreed. Doing more things like this could definitely help the developer community. Even though we have a decent number of weekend events in the area like Dallas Tech Fest, Dallas Day of .NET, etc., these tend to be very different in flavor because they are multi-topical/non-serial, i.e., bunches of random topics that people can pick and choose from. I like these kinds of events quite a bit but they hit a different audience and solve a different problem. Events with a smattering of topics are of more benefit for those more advanced technically because it gives them a chance to skip things they already know. I think serial events can be more suited for beginners since they can see a concept like web development worked out over a lot of technologies and with the same sample code. Of course some will be beginners in some areas, so something like this event can benefit those who have been in the field for years (and there were a number of those this weekend who fit that category). Of course you could do the same type of serial event as a deep-dive, which many this weekend wanted on various technologies.

So DFW technical leaders/influencers/speakers/whatevers, I think we should do more of these. Even though it worked out pretty well this weekend, there are some things I would change.

First, something different needs to be done with the whole Sql Server thing. I think we ended up with most people setup but it was a mess and slowed us down.

Second, I’m questioning the value of the hands-on labs. I first started rethinking it when they wanted to skip them to see the content more quickly. In the follow-up survey, no one mentioned that they found them valuable (though everything else got mentioned). What might work better would be sessions till mid-afternoon followed by a few hours of installation help and hands-on lab time.

Other Feedback

Here’s some other feedback I got from the attendees that people might find of interest.

  1. Needed more breaks (I didn’t have enough…oops)
  2. They liked having the code put on github
  3. It would have been helpful to have a more completed version of the app for them to download and mess around with
  4. Needed to go slower (I can see that)
  5. Less time on installation and setup (no surprise there)
  6. More depth (that would have been easier if we wouldn’t have had the lab time)

Sponsors

Improving Enterprises also sponsored this event for us. These people are fantastic. They bought the pizza for us, which allowed us to keep the price incredibly low ($15). Thanks to Brian and Kyle for coming and babysitting us on a weekend. Improving also sponsors us for the North Dallas .NET User Group meetings. You guys are great!

Also a big thanks to Shawn Weisfeld for bringing out some drinks left over from a previous event and for recording us.

Also thanks to Darren, one of my fellow NDDNUG officers, for coming and hanging out all day with me and helping those who were stumped.