Explore Videos MSDN eNews Social
Windows
Web
Phone
Cloud
Visual Studio
Security
ALM
Breakpoint
Canada Does Windows Azure
More
The latest on developer tools and technologies you care about.

Sign Up
Latest Editions
Previous Editions  
Stay connected through on your favourite social network.

Twitter
Facebook
LinkedIn

TechDays, Blogs and the Fundamentals

TechDays, Blogs and the Fundamentals

  • Comments 10

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 Canadian Developer Connection as well as on my personal tech blog, Global Nerdy. 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.

Leave a Comment
  • Please add 8 and 8 and type the answer here:
  • Post
  • The MVC framework is based on some of the SOLID principles.  It's the easiest "platform" to evangelize SOLID on.  It's the other platforms, where SOLID is much harder to implement, that need tracks on SOLID.

    SOLID with MVC sounds like it covers SOLID principles in how they apply  to using ASP.NET and MVC; it doesn't sound like it talks about SOLID principles in the business logic and  domain areas of an ASP.NET application (but, I could be wrong).

    Yes, showcasing Microsoft tools and technologies is good for Microsoft.  But, improving the communities around them, making them more professional, able to make higher quality software, develop software faster, etc. attracts more companies to build on those platforms.  This has a greater affect on the bottom line than simply "showcasing products".  Showcasing products that ends up producing a community whose quality and time to market is low, really puts a blemish on the technology, reducing sales and reducing faith in the company.

    You've got many people in every major city in Canada willing to help out with "fundamentals" talks...

  • Hey, Peter!

    Yes, the SOLID talks at TechDays covers only ASP.NET MVC and not standard ASP.NET. Unfortunately, there was no such presentation like that to choose. In the abstract for the session, I included a message saying that even if you don't intend to program using ASP.NET MVC, the SOLID session would be worth checking out because the principles covered are useful for all object-oriented programming regardless of language or framework.

    I think you really hit the nail on the head when you said that focusing solely on showcasing development tools "ends up producing a community whose quality and time to market is low, really puts a blemish on the technology, reducing sales and reducing faith in the company". As I said in the article, I believe that there's more to programming than simply talking about whiz-bang feature X and having wizard Y do the heavy lifting and that making better developers also makes for a better Microsoft and a better industry.

    I believe that there are ways to get more than just the hardcore developers interested in good design and best practices. Just as all those cooking shows on the Food Network got more than just chefs to think about food as more than just fuel and care about cooking well, there are ways to get developers of all skill and experience levels, even the most casual ones, interested in the fundamentals. I'm trying to do that with the blogs, my TechDays sessions and any other way I can. I'm glad to hear that there are others eager to take up the cause.

  • Hi Joey.

    More here: http://msmvps.com/blogs/peterritchie/archive/2009/07/23/why-fundamentals-are-important-to-microsoft-s-bottom-line.aspx

    It's kinda telling that it seems the only one in Microsoft championing fundamentals in the slightest at TechDays was hired because he is/was a "Microsoft Outsider".

    And don't get me wrong; we appreciate you for championing these things.  Sure, "baby steps" with blogs about fundamentals, etc. but TechDays is a major representation of Microsoft; it needs to promote fundamentals more.

    Hell's Kitchen shows someone passionate about his craft, passionate about the fundamentals that need to reflex before someone can be a professional chef.  It's a good balance to shows that show someone following a recipe. But the audience of those recipe shows isn’t professional chefs.

    The New Yankee Workshop is always prefaced with "be sure to read, understand, and follow all the safety rules that come with your power tools." and followed up with something like "some safety equipment removed for clarity".

    We need to instill more passion like this in our industry, especially Microsoft software development communities.

  • Hey Joey.

    While you guys claim to be open to wanting more fundamentals in shows like TechDays, why is it that attempts to provide are always rebuffed? Attempts, early on in the process, were made to bring this to the attention of MS, but it the response was one of "but they *have* to be TechEd sessions" (of which there are few if any decent fundamental talks) and "we're open to alternatives if you can get all the content to us in the next 3 days".

    There is an amazing lack of understanding of fundamentals (like SOLID) as well as a lack of basic understanding of how to use the tools and languages that MS cranks out.  I know you guys are out in the community talking to people, but what we see when we are asked to go into different shops and help with their teams is utterly disgusting.  Talks on topics like ASP.NET MVC have their place, but what about growing the communities (currently) primitive understanding of how to do exception/error handling?  What about building the communities understanding of how they can increase their project's maintainability?  Neither of those topics need to exclude MS products, and the benefit to the community last far beyond any tool's v-current or v-next release.

    While I think it's a nice gesture to try to bring TechEd content to the Canadian market, this community has issues that are, frankly, in way bigger need of attention.  I've been told it's far to late in the game to make changes to the content, so I don't expect to see that happen for this year.  I hope (and it fades more every year that TechDays is put on) that next year will better address these problem along with many others that I've conveyed via email.

  • Hey, Donald!

    Forgive the momentary sidetrack -- I'll talk about the things you raise in a later comment -- but are there really working developers who are having problems with exception and error handling? What kind of problems?

  • Hey Joey.

    It's not that there are problems with the way the framework is functioning, it's that there are significant numbers of developers out there that don't understand the principles of what exceptions are.  For example, some will go so far as to view them as a nuisance so they just wrap all their code with empty catch blocks.  Others will write a try-catch block, in the try they'll explicitly throw an exception only to explicitly catch it a few lines lower, and then swallow it.  Still others actively believe that exceptions are a good way to control how the application flows.

    Beliefs like these, and others, around exception handling are fairly common.  I've gone into more shops that have code that follow some, or all, of these practices than I haven't.

    While the exception handling is a good example, it isn't the only thing like this in the .NET development community.  Another that comes to mind is the dominance of procedural code being written in OO languages.  Problems like these, plus other root fundamentals (such as SOLID), cripple our industry and profession far worse than not seeing a talk on some specific tool.

    Feel free to shoot me an email (first.last)@gmail.com if you want to have a more in depth conversation about this stuff.

  • Joey - YES!  I would LOVE to see more fundamentals oriented session as TechDays.  I think over half the sessions should be on topics that are NOT tool/product related.  Please!  This community NEEDS it in a big way!

  • Donald:

    That's what I thought you meant -- not that the .NET exception handling was broken, but that a lot of developers have very little understanding of how to use it. I just had trouble believing it; I was under the impression that the "try-catch-finally" exception mechanism was as well understood as say, loops and branching. I suppose it's a good topic to cover in some blog entries, screencasts, presentations and so on.

    I'll fire off an email your way and we can continue this conversation in greater depth.

  • I'll have more to say on this later but I maintain that the exception handling mentioned above (as a topic) is a great example of something that could be done as a TechDays session (obviously prob. needing a product basis as well).

  • I'm not Canadian, but I wandered here from Peter's blog because the state of the .NET community is of great interest to me. I would just like to agree with Donald's assessment of the general understanding of fundamentals like exception handling (which is definitely NOT as well understood as loops or branching). If you could see the application I am maintaining right now:

    - Catch blocks around important business functions which swallow Exception

    - No catch blocks around code which is heavily vulnerable to exceptions (like networking and file manipulation)

    - Vanishingly few finally blocks anywhere in the application, and those few have the wrong code in them

    This is just one application, and exception handling is just one example. Justice may have misunderstood you, but his point, echoed by Peter, is still valid: Microsoft in general spends too much time and effort educating developers about specific Microsoft technologies, and not nearly enough time educating them about best practices on the platform.

    My 2 cents.

Page 1 of 1 (10 items)