Chris Donnan : Programming – Brooklyn Style
software, trading, family, fun
Posted patterns and principals on Tuesday, September 19th, 2006.
I am approaching my final day on my current project. I am leaving another software effort at an investment bank tomorrow. I was writing up some documentation for the people ‘picking up the torch’. The person I spent my time with today was great. He is bright and experienced. He asked great technical and business questions. The gentleman that I am refering to does not have the same experience set as I have obviously, so there needed to be some context set up. Much of the work that I have done was done out of my core software development values and beliefs about what is important in software to me.
One thing I find interesting is that I am often put in a position of validating my core software development values when working with new people. Thankfully, given time to put my money where my mouth is – they are eventually convinced
. Why did I do A or B? Why do I have such and such a pattern or recurring theme in my work? Why were certain decisions made or evolved towards. Here is a quick list of items that we discussed. This is sort of a random list -but these are things that are worth valuing.
- Value delivering high quality software to the client rapidly
- Deliver iteratively – work closely with the clients/ users to make the software be what they want/ need
- Value common metaphors in your software design so that it is not all ‘ad hoc’ in structure.
- Remove dead code
- Value readability and understandability
- Value the DIP because of its ability to support the OCP (see Principles and Patterns)
- Boldly refactor the code as it is appropriate
- Make a repeatable logical seperation in your solution
- Give classes, methods and components single responsibilities
- Tolerate NO redundant code
- Start as simple as possible, complexify as needed and continually maintain with refactoring
- REALLY value composition over inheritance
- Inherit to be reused, not to reuse functionality from some super class
I think there are a few folks that have summed up core software development beliefs that I have come to share. Robert C Martin deserves much credit. I think one of the best papers out there for software developers is Principles and Patterns. I cannot say how many software developers I have refered this paper to and how many of them have come back to me in the future to tell me how much it affected them. Integrating these values into your beliefs about ‘what is important’ as a software developer – will better your ability to deliver effective software solutions – I promise. This paper will give a name to the some practices you have learned over the years and if you are lucky show you some things you have been missing.
These books:
Martin Fowler – Refactoring: Improving the Design of Existing Code
Eric Evans – Domain Driven Design
Joshua Kerievsky – Refactoring To Patterns
Andrew Hunt and David Thomas The Pragmatic Programmer
Mary and Tom Poppendieck Lean Software Development
These people have said it before me. There are plenty of other excellent books that I have talked about. I am a huge book lover. That said – these books are the ones for core values. Get the underlying themes for these books and you will be seeing software more deeply. Understanding the impetus for when to do what, when to apply what pattern is what experience as a software developer gives you. Patterns are all well and good, but understanding why they exist and the principals behind them is the link that many software developers are missing.
My advice – focus on core values and principals. When you understand core principals in software development – your solutions will have a new level of maturity. Applying patterns is easy. Typing code is easy. Making lsustainable solutions that scale and are maintainable is a whole different challenge. Building from core principals will make the difference.
-Chris
No Responses to “Core Software Development Values”
Comment on this post below
You must be logged in to post a comment.
You can leave a response, or trackback from your own site.








Interesting Finds: September 19, 2006…
…