By Chris R. Chapman at September 30, 2010 19:23
Filed Under: agile, better practices, scrum, skills

When you’re building toward an agile culture in your team or organization, what are the core principles that you should have in mind as part of your overall goals and philosophy? While perusing some older InfoQ articles on this topic, I came across this one by Darren Hale from last October:  Building an Agile Team.  I like the four key principles or characteristics his team laid out as important to the organizational culture they wanted to build:

  1. A customer perspective;
  2. Collaborating effectively;
  3. Managing by fact;
  4. Focusing on execution.

I think these points could be extrapolated to almost any organization that is trying to transform toward agile project processes.  Darren expands on these points:

A team that embodied these principles would be well positioned for success. Members of a team that embody these core principles exhibit a number of good behaviors. Some of those good behaviors are asking questions of customers, thinking like customers, being willing to ask for help, being willing to help others, making decisions with concrete facts instead of personal opinions, and striving to ship finished code.

Excellent observation.

 

By Chris R. Chapman at December 10, 2009 23:56
Filed Under: .net, sharepoint2010, skills

Earlier this month (Dec 2/09) the Director/Product Manager for SharePoint, Arpan Shah, posted a wealth of resources on his blog to aid in ramping up on the new platform.  I encourage going over and taking a look – and add his feed to your aggregator.  Here are some of my favourites:

White Papers – The closest thing to “books” before the release next year:

SharePoint 2010 Overview Evaluation Guide 
SharePoint 2010 Professional Developers Evaluation Guide 
SharePoint Server 2010 Evaluation Guide for IT Professionals
SharePoint 2010 and Office 2010 Scenarios

When to use ASP.NET vs. SharePoint:

SharePoint Server 2010 as an Application Development Platform 
SharePoint 2010 Developer Platform

For the Visual Learners: 

Learning Snack for Developers: Developing solutions with SharePoint 2010

Sharepoint_silverlight_learningsnack

Getting Started Developing on SharePoint 2010

Sharepoint_developer_center

Hands-on-Labs (HOL) Getting Started with Development on SharePoint 2010 C# & VB.NET – These are quite good as they get you the fundamentals in a follow-along-with-me format.

Admins – We Got You Covered, Too:

Check out the IT Pro 2010 video & top features
Walk through the
Learning snack for IT professionals: Experiencing the Microsoft SharePoint 2010 user interface 
Walk through
Learning snack for IT professionals: Managing and troubleshooting with Microsoft SharePoint 2010 
Read the
SharePoint Server 2010 Evaluation Guide for IT Professionals 
Take a look at the training and videos @
http://www.mssharepointitpro.com

By Chris R. Chapman at December 01, 2009 03:35
Filed Under: agile, better practices, book reviews, scrum, skills, software development

I recently came across a Nov. 25/09 post on Davy Brion’s blog, The Inquisitive Coder, that enumerates his recommended reading list for software developers who are wanting to step up their game.  This is a common theme on coding blogs, and there have been literally a galaxy of postings with some great and not so great recommendations guaranteed to perplex and flummox the average coder.

The implied line with all of these articles is that you ignore these tomes at your peril – you just won’t get to the “A” levels without them.

I like how Brion has broken his recommendations into three strata according to developer experience:  newbie, sophomore and grizzled veteran.  Well, sort of.  I mean, learning agile/iterative/lean software development really should occur at the start of your career as you’re going to have to unlearn the BDUF/waterfall crap that was loaded into your head by your CS/SoftEng profs who last “delivered” software (if at all) when 8–bit CPUs were da bomb.

What I don’t like is the complexity of some of the volumes that Brion shows – some of them are just so dense as to be inaccessible and not immediately applicable, eg. Eric Evans’ Domain-Driven Design.

Read/Master These Books First

If you want to get immediate benefits, try this shorter reading list:

  1. The Pragmatic Programmer:  From Journeyman to Master (Hunt & Thomas)
  2. Pragmatic Unit Testing in Java/C# (Hunt & Thomas)
  3. Refactoring:  Improving the Design of Existing Code (Fowler)
  4. Practices of an Agile Developer (Subramaniam & Hunt)
  5. Agile Software Development with Scrum (Schwaber & Beedle)

These books will help you begin to develop good habits – and in some places, possibly fired for wanting to implement.  That’s ok, because you don’t want to waste your life there, anyway. ;-)  It should take you 6–12 months to get through these and really internalize the practices and make them second nature.  I’ve recommended #5 because, as I mention above, you should get exposure to agile practices like Scrum sooner rather than later.

Read/Master These Books Next

You’ve got a couple of years under your belt and have seen the good, the bad and the ugly in the industry.  You’ve likely been on some bad projects and you’re beginning to question the wisdom of your chosen career path.  Take solace in these books to notch your game up further:

  1. Design Patterns (Gang of Four – Gamma, Helm, Johnson, Vlissides) – Alternatively, any book that explains patterns in your language of choice will help you “grok” them.
  2. Clean Code: A Handbook of Agile Software Craftsmanship (Robert “Uncle Bob” C. Martin)
  3. Agile Estimating and Planning (Cohn)

By the time you get through these (another 6–12 months) you will be truly cynical about the state of the industry, as well you should.  But you’re not wanting to be a “mort” or a “501” kinda coder – you’re wanting more.  So, you should supplement the above list with these titles:

  1. Death March 2nd Edition (Yourdon)
  2. The Mythical Man-Month (Brooks Jr.)
  3. Agile Project Management with Scrum (Schwaber)

These titles will give you the intellectual “legs” to position your strategies and arguments (yes, arguments) for implementing best practices with peers and managers.

Ongoing Professional Development

After you’ve reached your fifth or sixth year in the industry, you should have a pretty good idea about who you are professionally and where you think you’re headed:  Leadership, Consulting, Management.  Depending on your path, different books will influence your thinking.  You will likely be wanting to show what you’re capable of – perhaps in a new role or firm.  Some of these titles will help:

  1. Fearless Change:  Patterns for Introducing New Ideas (Manns & Rising)
  2. Agile & Iterative Development:  A Manager’s Guide (Larman)
  3. Implementing Lean Software Development:  From Concept to Cash (Poppendieck)

Conclusion:  Just Do It

In my experience, not very many folks who have a lot of “paper” experience have actually ready many of these books.  They’ve heard of them, but never read them or applied their lessons.  I’ve come across consultants who are really smart and with scads of experience who have yet to write a single unit test – or worse, think that a tool can do it all for them.  Common sense ain’t so common.

If you master 60% of the above list, you will be a better coder and professional than 3/4 of the people you’ll come across over your career.  It will take time, some personal commitment and in some cases risk – but it will be immediately worth it.  Follow the advice of Ken Schwaber (co-creator of Scrum) who urged attendees at a conference to actively begin improving their software delivery experience by implementing agile techniques by getting out there and doing it:  “Don’t procrastinate; do something – no matter how small.” 

 

By Chris R. Chapman at April 07, 2007 06:40
Filed Under: fizzbuzz, skills, software development
I know, I know.  I'm just one more in the litany of pundits offering their opinion on the FizzBuzz test that Jeff Atwood described in his Feb/07 blog post, among many others.  It intrigued me to see what the big deal was and how panicked I might get if I was issued the challenge in an interview.
 
For the uninitiated, the FizzBuzz test requires a programmer candidate to write a simple program that outputs the number 1 to 100 with a twist:  Numbers that are a multiple of three are replaced with the word "fizz";  those that are a multiple of five are replaced with "buzz".  Those that are a multiple of three and five are replaced with "fizzbuzz".
 
It's a simple enough problem that makes your fingers itch to write the loop and get to it.  I must admit that the solution I came up with was not my first - I arrived at the code below after thinking of a refactoring.  All in all, it took me under 10 minutes, which I think would be ok under Atwood's guidelines:

public
void RunFizzBuzz()
{
    
for (int n = 1; n <= 100; n++)
    {
        
Console.Write((n % 3 == 0 && n % 5 == 0) ? "fizzbuzz" :
            (n % 3 == 0) ?
"fizz" : (n % 5 == 0) ? "buzz" : n.ToString());
        
Console.Write("\n");
    }
}
 

Originally, I approached the solution from the wrong way 'round, starting with checking for a multiple of 3, then 5.  Checking for the multiples of 3 and 5 first made for a much more streamlined solution.

Right then!  I am eminently qualified for any programming position...

About Me

I am a Toronto-based software consultant specializing in SharePoint, .NET technologies and agile/iterative/lean software project management practices.

I am also a former Microsoft Consulting Services (MCS) Consultant with experience providing enterprise customers with subject matter expertise for planning and deploying SharePoint as well as .NET application development best practices.  I am MCAD certified (2006) and earned my Professional Scrum Master I certification in late September 2010, having previously earned my Certified Scrum Master certification in 2006. (What's the difference?)