Red Squirrel Reflections
Dave Hoover explores the psychology of software development


Learning as a Skill
Wednesday, December 10, 2003

One of the most enjoyable aspects of the software development lifecycle, in my opinion, is the myriad learning experiences that it provides. In the three years that I have been developing software, this aspect has actually become something of an addiction. I have found this passion for learning to be invaluable as I face increasingly demanding projects and responsibilities.

In the Cutter Consortium's Agile Project Management Advisory Service Executive Report (Vol. 3, No. 6), the Pragmatic Programmers lament,

"Learning is one of the key activities of software development and has a huge impact on the overall project, yet it's rarely taught as a skill to software developers." (page 9)

Now that is an idea that demands attention: Software development teams should explicitly value learning and set aside time not only to learn, but to grow their learning skills. With learning, rather than knowing, as a core value, team members are given implicit permission to ask for help, to admit that they are not experts, and to take time to research. Unless the team is encouraged to learn throughout the development lifecycle, they are doomed to repeat the mistakes that all of us inevitably make.

"A typical software project can present more opportunities to learn from mistakes than some people get in a lifetime." --Rapid Development, p. 29, Steve McConnell

Posted by Dave [Link]

More McConnell
Wednesday, December 3, 2003

I just finished Rapid Development. Like it's predecessor, Code Complete, it contained a lot of hard-won wisdom that (in my opinion) every software developer should read. It no longer surprises me when Steve's writing overlaps philosophically with XP. Like Steve's wisdom, the XP practices grew out of years of hard-won experience. That said, when I read the following quotes I wasn't surprised, but they did make me smile....

"Refusing to allow changes assumes that your customers know what they want at requirements time. It assumes that you can truly know requirements at the outset, before design and coding begin. On most projects this isn't possible. Part of the software developer's job is to help customers figure out what they want, and customers often can't figure out what they want until after they have working software in their hands. You can use the various incremental development practices to respond to this need." --Rapid Development, p. 336, Steve McConnell

"Today, the most successful products are often those that had the most change implemented the latest in the development cycle." --Rapid Development, p. 337, Steve McConnell

"Software development is a tough, time-consuming business. For 30 years we've been told that the magic that will enable us to slay giant schedules and budgets is just around the corner. For 30 years it hasn't come. I say, enough is enough. There is no magic. There is no point in waiting for it. The more we wait, the more we deprive ourselves of valuable, incrementally better solutions to many of our problems. There aren't any easy solutions, but there are easier solutions, which can provide modest improvements individually and dramatic improvements collectively." --Rapid Development, p. 368, Steve McConnell

Posted by Dave [Link]

JDBC Development without a Database
Monday, December 1, 2003

I am the architect on a small J2EE project. It is our WebSphere pilot project. The database schema is small, with only a few associations. The development database instance hasn't been created yet, but I needed to start developing the skeleton of the application.

Not surprisingly, I started with a test. Because the database schema is simple, I opted for the Active Record pattern. Using the com.mockobjects.sql package, I was able to drive the design of the application's domain objects...without a database.

Once the database is ready, I am looking forward to swapping ConnectionFactoryImpl with ConnectionFactoryMock and seeing how many SQL typos I made.

Posted by Dave [Link]


[Archive Index] [Main Index]

Powered by Greymatter