"Various studies have shown that in addition to being more effective at catching errors than testing, reviews find different kinds of errors than testing does ... Thus, even when testing is done effectively, reviews are needed for a comprehensive quality program."
Steve McConnell, Code Complete: A Practical Handbook of Software Construction, 2007


"IT projects are supposed to generate business benefits in the form of either increased revenue (make money) or decreased costs (save money). All other benefits, e.g. increased customer satisfaction, reduced order cycle time, reduced risk or better regulatory compliance, ultimately end up being a lever for one or both of these categories."
Michael Gentle, IT Success!, 2007


"It is teamwork that remains the ultimate competitive advantage..."
Patrick Lencioni, The Five Dysfunctions of a Team, 2002


"Most managers are willing to concede the idea that they've got more people worries than technical worries. But they seldom manage that way. They manage as though technology were their principle concern."
Tom DeMarco, Timothy Lister, Peopleware: Productive Projects and Teams, 1997


"... the quality of the people on a project, and their organization and management, are much more important factors in the success than are the tools they use or the technical approaches they take."
Frederick P. Brooks, The Mythical Man-Month, 1995


"Deliver frequent, tangible, working results"
Peter Coad


"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
Martin Fowler, Refactoring, 1999


"The best software designs look simple, but ... it takes a lot of hard work to design a simple architecture."
Grady Booch, Object-Oriented Analysis and Design, 2007


"Information Technology is 80% psychology and 20% technology"
Jeff De Luca, www.nebulon.com


"...if you sit back and reflect for a moment, you'll notice that producing and maintaining software is not a random series of events. There are patterns, and these patterns offer an opportunity to take control of our products, our organizations, and our lives."
Gerald M. Weinberg, Quality Software Management: Volume 1 Systems Thinking, 1992


place
Software Development and other stuff
My notes on software development collected over a number of years covering topics such as analysis, design, process, and tools, plus other bits and pieces.

Analysis and Design
Good software design mercilessly strips away unnecessary complexity and hides necessary complexity behind simpler facades, encapsulating it within the most appropriate abstractions.

Analysis pulls apart a problem into its constituent components so that we better understand its structure and function. From that understanding, design adapts and applies patterns, techniques and strategies to shape the structure and function of the software that provides the solution we require.

One of the keys, therefore, to designing elegant software solutions is building an intimate understanding of the problem needing to be solved. There are a number of different ways to analyse a problem, but object-oriented and component-based approaches have dominated in enterprise software development for approximately the last fifteen years. After all, every team working in .Net, Java or Cocoa has some sort of object model at the heart of their software.

And for the initial, object-oriented analysis and design of enterprise software, I have found no better technique than Peter Coad's 'modeling in color' especially when further informed by the patterns and strategies from Nicola, Mayfield, and Abney's, Streamlined Object Modeling and Eric Evans's Domain-Driven Design.
Read more about analysis and design...

Process
Software development process is all about the way a team works together and interacts with all the other interested parties and teams in developing a piece of software.

The software industry has invented, proposed, debated, refined, celebrated, criticised, and derided numerous different processes, methods and approaches to team-based software development over the last forty years. After the waterfall processes and structured methods reigned supreme in the 1970's and 1980's, formal use-case and object-oriented analysis and design approaches dominated the 1990's. Then, at the turn of the century, Kent Beck's eXtreme Programming was the first of a wave of more informal, self-styled agile approaches to become widely popular.

In the last few years, eXtreme Programming's popularity has declined dramatically and Ken Schwaber and Jeff Sutherland's Scrum has become the de facto starting point for teams wanting to adopt a more agile approach to software development. Jeff De Luca's Feature-Driven Development (FDD) is cited in some studies as the third most used agile approach despite far less publicity surrounding it. In practice, most teams starting with Scrum, inevitably end up incorporating ideas and practices from both eXtreme Programming and FDD, and frequently from the Poppendiecks' Lean Software Development and David Anderson's Kanban too.

However, despite all this innovation, hard work, and debate around different software development processes, methods, and approaches, none of them has been able to replace the importance of building a great team of good people. No process, method, or approach, agile or otherwise, can make up for a fundamental lack of ability, experience, or character within a team.
Read more about software development process...

Tools
What makes good tooling for agile teams? Most agree it includes tools for performing automated builds and testing.

In addition,like anyone involved in software development, I have had my favourite tools over the years. These have included Together (the original LiveSource UML modeling tool and still unsurpassed despite terminal neglect by Micro Focus), and StarTeam (the potential to be one of the best CM tools available for agile development).
Read more ...



"Information Technology is 80% psychology and 20% technology"
Jeff De Luca, Nebulon

"Deliver frequent, tangible, working results"
Peter Coad

I'm Stephen R. Palmer, a software development consultant at hybris, and www.step-10.com is my personal web site. By the way, I am not trying to be pretentious; the middle initial is simply to distinguish me from all the other different Stephen Palmers. There are many of us out there doing all sorts of interesting things but most of it is not me!

Steve and his better half

The majority of stuff on this site relates to my two main professional interests, that of analysis and design of complex enterprise software systems and related software development methods - in particular Peter Coad's 'modeling in color' technique and Jeff De Luca's Feature-Driven Development (FDD) process. Other topics covered include software development tools I love and loathe, the pragmatic use of UML, and, for something completely different, places I have lived in, worked at, or lived near.

My professional experience ranges from near real-time electricity power station, transmission cables and sub-station monitoring systems to enterprise-wide agile transformation and service-oriented architecture projects; from complex commercial lending systems in Singapore to global commercial insurance systems in Rhode Island, and from UML training in the UK to agile coaching in the Netherlands.

As this is my personal website and developed more as a hobby than anything else, the views expressed here are my own and do not necessarily coincide with those of my current or previous employers. I'll also apologise in advance for the occasional misspelling, poor use of grammar, and broken link - it's all 'fixed in the next release' :-)

WARNING: Site under heavy reconstruction at the moment!