subscribe to the RSS Feed

Thursday, March 11, 2010

How to become a great software developer.

Posted by Mike on July 9, 2009

I googled the title of this blog post, as I am working through a difficult transition.  I have been a full-time project manager (PM), but I am switching to 50% PM and 50% developer.  I want to be the best developer I can be in that 50%. 

Here is my story.  I went into management for a better salary.  Back when I did that, I had reached the top of the career path for developers – Systems Analyst. Several years into my time as an IT Manager, I was tapped to lead the Project Office.  I oficially became a project manager and earned my Project Manager Professional (PMP) certification.

The more I worked with software development teams, the more I missed doing software development. As a PM, I also saw problems with software development that I figured would be hard to improve unless I got involved in the work.  A hands-on approach would show me what was going on and build credibility for potential solutions.

My problem?  Besides the tinkering I do in my spare time, most of my programming skills are rusty, out-dated, and underdeveloped. That being said, I have always been able to learn new things. With budgets tight, it is up to me to get started and prove my value. This is where the web really comes handy.  There are so many good, free resources available for learning!

Here are a few that I am using:

Here are a few articles worth reading:

Finally, a couple book lists:

Here is a quote from the “Rock Star” article referenced above that sums it up nicely.

I’ve lost track of how many times this simple fact has been proven to me. The qualities of a great engineer carry over to any platform, and a great engineer will pick up a new platform quickly — mostly because they love learning new things. If you’re starting out in software development, concentrate on being a great engineer. That’s far more valuable than an engineer that knows a platform.

I have seen this too. If you look at the articles and book lists I’ve noted above, you will see that very little is said about specific languages.  The languages are just the tools.  They are important and you need to know them.  However, it’s not the knowledge of languages that make a developer valuable.  It’s the higher skills – learning, networking, understanding, and problem solving.

Uninterrupted Time to Code

Posted by Mike on February 12, 2009

I just read a great article by Paul Graham called Holding a Program in One’s Head. In it, Graham, explores the value of programmers having large blocks of uninterrupted time to code. This seems like a simple way to improve the quality of code and the productivity of your developers.

He lists eight points that help programmers and makes the following observations:

  • It’s striking how often programmers manage to hit all eight points by accident.
  • Even more striking are the number of officially sanctioned projects that manage to do all eight things wrong.

It looks like there is plenty of room for managers (and programmers) to improve!

Radical Improvement Using Scrum

Posted by Mike on January 31, 2009

Take a 2 million dollar project.

Industry data shows that outsourcing saves 20%.
Outsource the project above and it costs you $1.6 million.

Introduce Scrum locally and you can realize a 240% improvement.
Local Scrum for the above project only costs $0.83 million.

Source - Jeff Sutherland - 2006

Scrum Videos

Posted by Mike on January 30, 2009

I have been doing some research on agile software development methodologies, specifically Scrum, and found the following videos.

Beyond Functional Requirements

Posted by Mike on September 19, 2008

Dr. Dobb’s Journal has an article called Beyond Functional Requirements On Agile Projects in its October 2008 issue. I think that it is not only worth reading for the subject matter contained in the title, but also for the view you will get of agile software development.
Figure 1, in the article, shows the full system lifecycle when using agile software development. I especially appreciated the mention of Iteration -1 and Iteration 0. These two iterations are completed before starting the Construction Lifecycle. They include pre-project activities (Iteration -1) and the Inception Phase (Iteration 0). The Inception Phase includes the work required to get the project started, including initial modeling and planning.
The article makes mention of disciplined agile. This implies that you can also have undisciplined agile. It’s all about mastering your craft and this is important enough that the article concludes with a strategy of Developer Education.
There is more to the article and it is well worth the read.

Best Kind of Status

Posted by Mike on April 11, 2008

For years now, PowerPoint has firmly established itself as the “best” way to status a group of people about a project. Is it effective? By effective, I mean, does it communicate well and encourage discussion?

I think that, to some degree, PowerPoint presentations invoke what I call the TV syndrome. The people in your meeting sag into couch potato mode and become passive in the meeting. Imagine an hour or more filled with someone reading 58 PowerPoint slides!

Wouldn’t it be better to go with a one-page status on 11 x 17 paper, as suggested in The Toyota Way? With this approach, the essential details are available to all, on paper. Discussion can then be centered around the most important items, looking to not only problem solve, but also to set and keep direction, and to give recognition to people and their achievements.

I think that it is worth trying.

4/18/08 – EDIT:

The 11×17 status report is better known as the A3 report in The Toyota Way.

Click here to see an example.

Prep. Work

Posted by Mike on March 4, 2008

Today, I am concentrating on prep. work for three planning sessions I have scheduled for Wed., Fri., and Mon. The goal for these sessions is to identify the remaining tasks that we know of, for interfaces and forms, on our project. Next, we are going to prioritize and schedule these tasks into 4-week sprints. Once this is done, I will add any new tasks into the project plan.