Grady Booch, Object-Oriented Analysis and Design, 2007
Designing good software is a constant battle with complexity. Great software designers mercilessly strip away all unnecessary complexity. Unavoidable complexity they hide behind simpler interfaces. The best software designs are ingeniously simple or at least present a perception of simplicity to their users. The elegance of such solutions can be truly delightful.
Designing elegant solutions requires a deep understanding of the problem being solved. In the past, specialist analysts and designers built a complete, detailed understanding of the whole problem during long analysis and design phases at the beginning of a project, communicating the results to the rest of the project team through large, formal documents or formal models described in the Unified Modeling Language (UML). These days, it is more likely that the whole team will sketch out an initial, overall, high-level understanding of the problem together as part of a short discovery or exploration exercise, using UML informally if at all, adding detail and increasing understanding iteratively as development proceeds guided by a modern, agile approach.
Coad, LeFebvre, De Luca, Java Modeling in Color with UML, 1999
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, and debated, refined, celebrated, and criticised many 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, eXtreme Programming was the first of a wave of more informal, self-styled agile approaches to become widely popular. This was closely followed by Scrum and Feature-Driven Development (FDD) and then later by Lean and Kanban.
Despite all this innovation, hard work, and debate over 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.
Seve McConnell, Code CompleteL, 2002
What makes for good tooling for modern, software development teams? Most agree it includes tools for performing automated builds and testing, includes version control of source code and related resources, and a modern integrated development environment(IDE) for individual developers such as IntelliJ IDEA, Eclipse, Visual Studio, or Xcode.
However, when it comes to project management, requirements management, and design, general consensus is much harder to find. Most tools in this space present poor user interfaces, suffer from feature-bloat, and provide discipline-specific solutions that do not reflect the cross-functional nature of many modern development teams.
Good software development teams excel at selecting the right tool for the right job at the right time. And sometimes the right tools are sticky notes, index cards, flip chart paper, or white boards. Other times the right tool is a traditional, single-user, PC application, or a collaborative, web-based product.
Saint Paul of Tarsus
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
in color' technique and Jeff De
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.
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' :-)
Arthur Conan Doyle, The Hound of the Baskervilles
Growing up, I lived in a number of towns and villages within the Area of Outstanding Natural Beauty (ANOB) of East Devon in the UK. Since then I have been fortunate to live and work in a number of different and varied places, from the old, industrial towns of Stoke-on-Trent in Staffordshire, UK, to the gleaming skyline of Singapore, in South East Asia, from the snow-capped mountains outside Calgary, Canada, to the old colonial architecture of Providence in Rhode Island, USA.
These days home is back in East Devon, the seaside town of Exmouth to be precise, while work continues to to take me all over the world.
About once a year I type some of the names of these places into yahoo, etc., and see what pops up. If I am
not feeling too lazy, I'll combine some of the things I learn with personal observations and
memories into a web page or two with a few photos. This stuff is always a 'work in progress' and never as
complete or polished as I'd like to make it but I enjoy tinkering with it when I have the time.