fundamentals

If you’ve looked at the TechDays Canada 2009 site this week, you might have noticed the addition of a new track: Developer Foundations. At that point, you might have asked yourself these questions:

  • What’s the Developer Foundations track all about?
  • Why! Do! The! Session! Descriptions! Have! So! Many! Exclamation! Points?!!!

I’ll answer the question about the exclamation! points! first! It’s because the people in charge of the track, Justice Gray and Peter Ritchie, are really exciting about the opportunity to have a track that they really believe in and have been putting heart, soul and viscera into this project. They’ve done a lot of work under an extremely tight schedule in order to have the track ready in time for TechDays Vancouver and TechDays Toronto. The only way to truly capture the enormity of their task is with…a montage!

While most of TechDays’ tracks concern themselves with Microsoft’s tools and technologies, the Developer Foundations track takes a step back to first principles, concerning itself with how you can be a better coder. It’s about writing elegant, maintainable, working code. You’ll learn techniques that get short shrift or don’t even get mentioned in the Teach Yourself X Over Your Lunch Break books. You’ll probably encounter a lot of exclamation! marks!

There are four sessions in the Developer Foundations track:

  1. S-O-L-I-D: The Five OO Principles That Will Change Your Life Forever: “Can’t believe you just got passed over at the club – again – because you didn’t know real object orientation? Thought that the sure-fire way to third base was knowing how to write a constructor? Thought you had the evening all figured out because you read an example of Cat inheriting from Animal? Think again. Annoyed by all those homely elitist jerks that still score all the time because people say they are OO masters? Well, it’s time to turn the tables and learn object oriented programming the way real men and women do it – the SOLID way!”
  2. Going from 0 to 100 Dollars with the .NET You Never Knew: You’ll learn “How generics can be used for more than just collections, the true power of lambdas and anonymous methods, the ins and outs of LINQ to objects, proper error handling beyond try-catch-finally and the importance of regular bathing.”
  3. Layers, the Secret Language of Architects: “Come to the presentation that will show you how to become “the man”! Seams? Design by contract? Services that aren’t prefixed by “web”? Repositories? Anti-corruption layers? (Gasp!) Domain-Driven Design? Do you know how that guy or girl at your office was able to negotiate foot massages and a daily breakfast buffet into their contract? They knew all of these terms and how to use them to build flexible and maintainable systems – and after attending this presentation so will you!”
  4. Refactoring for Fun and Profit: “Are you ashamed of your application? Does your architecture make you want to go home and weep in the shower? Heck, would it be nice if your application seemed to have architecture? This is the presentation for you! Come see how the art of refactoring can help fix your code, fix your house, and maybe even fix your dog! We’re going to show you how to TAKE CONTROL of your codebase without simply tearing everything down and starting over!”

We added this track in response to a call from developers like Justice and Peter for sessions that cover good programming practices. We’re gauging the response to it – if people attend and give it positive reviews, we’ll make it a regular TechDays track. I’d love to see this happen.

We’re calling this “the track so nice, we’re running it twice!” The sessions in Developer Foundations will run on Day 1 and repeat on Day 2! If you’re a developer attending TechDays Vancouver or TechDays Toronto, you have no excuse for catching at least one of the sessions in this track! And thus ends this article and the exclamation points! Ciao!

This article also appears in Canadian Developer Connection.

{ 4 comments }

TechDays, Blogs and the Fundamentals

by Joey deVilla on July 23, 2009

This article also appears in Canadian Developer Connection.

The Open Letter

duty_calls

Justice Gray is concerned about TechDays, Microsoft Canada’s touring conference that will hit seven cities this fall. So he wrote an open letter, in which he stated:

I’m a big "fundamentals" guy, and TechDays hasn’t traditionally focused on any sort of development fundamentals. It’s been more focused on specific Microsoft technology demos.

He’s right – one of the key goals of TechDays is to showcase current Microsoft tools and technologies, show you how to make use of them and give you an idea of what’s possible. As the “owner” of one of the conference tracks – I’m in charge of the Developing for the Windows Platform track – I’ve taken great care to choose sessions that cover tools and technologies that are currently available but are things that you might not be using…yet. Many people’s day-to-day work keeps them focused on their particular department’s or project’s technologies and doesn’t give them any opportunities to see what else is out there. One of the goals of TechDays is to provide such an opportunity.

Because he is “Justice” by nature as well as name, he’s quite understanding:

I hasten to add that this is completely within Microsoft’s right and totally makes sense.  Microsoft is first and foremost a business and this is a good place to promote itself!

What he’d like to see is a greater emphasis on developer fundamentals:

However, I’m a little less excited about "let’s look at another spinning animal demo" vs. "let’s teach common design patterns" or even "let’s actually show developers how to use half of the relevant Application Blocks in a legitimate application that isn’t a Northwind demo".

SOLID Inspiration

aerialbots_as_solid

Justice’s concern about TechDays stems from my recent article on the SOLID principles, which I posted here on Global Nerdy as well as on Microsoft Canada’s developer blog, Canadian Developer Connection. What really got him was a question and answer I included in the article:

Will There be a Presentation on SOLID at TechDays Canada 2009?
Mmmmmmmaybe…

He interpreted the “Mmmmmmmaybe…” as “no”. Based on that interpretation, he made what might be considered to be a logical assumption: that I wrote the post as a quick way to compensate for the fact that SOLID wouldn’t be a topic at TechDays.

Fitting in Fundamentals

"ABC" toy wooden blocks

In fact, SOLID will be the topic of a session in the Developing for the Windows Platform track. The session’s working title is SOLIDify Your ASP.NET MVC Applications, and it covers the SOLID principles by way of refactoring an ASP.NET MVC application.

There’s a perception that Microsoft developers care less about things like good design and coding practices than those in the Java and open source worlds do. Whether that perception is true or not, I figured that I’d try to address both the perception and the reality by filling the “back end” day of my track – that’s day 2; day 1 is all about developing for the “front end” – with sessions that covered technique as well as tooling:

  • There’s the SOLID session…
  • Prior to the SOLID session is the “Introduction to ASP.NET MVC” session, which covers the concepts of the Model-View-Controller pattern, DRY, convention over configuration, the Repository pattern and REST.
  • REST is covered in even greater detail in a session that covers building RESTful services with WCF. It seemed to me that while many parts of the open source world have embraced REST, it’s been largely ignored in the Microsoft world until recently.
  • There’s also a session in which we look at SharePoint as a provider of web services and architectures in which an “application” is actually two or more applications interacting by producing and consuming services.

Choosing the sessions that would go into TechDays was a juggling act, what with:

  • Selecting sessions from the ones at the TechEd conference (which took place earlier this year),
  • Satisfying the needs of the various tool and product groups who are TechDays’ “sponsors”,
  • Choosing topics that are interesting and relevant to the audience
  • Ensuring that sessions are at the appropriate skill level
  • Trying to go beyond “how you use feature X of tool Y”, and
  • Covering topics that will help keep the audience’s “skills portfolio” up to date.

Each track owner had to balance these factors when choosing sessions for this track. I believe that the end result (which will be online soon) is a pretty good one.

Blogging the Fundamentals

Volumes 1-3 of Donald Knuth's "The Art of Computer Programming"

I wrote an article about SOLID not because it had been excluded from the Developing for the Windows Platform track, but because it was included. That post was meant to be an “appetizer” for the session> I wanted everyone attending the SOLID session to have at least a passing familiarity with the SOLID principles. Learning takes repetition and retaining that learning takes continual exposure, so I thought I’d get a head start by posting an article and hinting (which is what my “Mmmmmmmmaybe” was about) that it would be a topic at TechDays. I also thought that  articles on SOLID might generate interest in the session.

There will be more articles looking more closely at each of the SOLID principles. The article was the first step toward posting more articles on technique and best practices. I think that it’s an area that Canadian Developer Connection can and should cover, because there’s more to building software than knowing your way around Visual Studio and Expression or being able to list the functionalities offered by a given class library. There’s the accumulated wisdom of developers in the form of things like design patterns, fundamentals like coupling and cohesion, concepts like DRY, convention over configuration and the Law of Demeter, practices like secure, agile and test-driven development and so on. I want to help make better developers, because better developers make for a better industry — and a better Microsoft as well.

While TechDays sessions provide an interactive and up-close-and-personal learning experience that a blog can’t, there are good reasons to use blogs to cover the fundamentals. We can point TechDays attendees to blog posts to reinforce the material covered in the sessions, and people who weren’t able to make it to TechDays can also benefit. We can cover topics in greater depth in a blog article than we can in a presentation, with more detailed explanations and diagrams as well as more code and examples. There’s also the reach and permanence of a blog article: they’re accessible by anyone, anytime, and more importantly, they can be indexed by search engines.

Your Suggestions, Please!

the-room[1]

In the end, we want to help developers become the best they can be. That means making sure that they know how to get the most out of our tools and technology, but it also means helping out in areas not directly related to selling our wares, such as helping build developer communities and covering topics like good software design and best practices, both online and in real life.

What would work best for you? Would you like to see more fundamentals-oriented sessions in future versions of TechDays or other conferences? More presentations on the fundamentals at local workshops or user groups? More articles? More screencasts? Let us know, either in the comments or drop me a line directly. A lot of our planning is based on your input, so the more you tell us, the better.

{ 4 comments }