Truly Functional Specs
Ok. So, the folks at 37 Signals have posted their thoughts on functional spec docs, and interface driven software design. Being that I am currently studying as well as implementing this school of thought, I felt the need to give this post a whopping AMEN. Big-timer spec docs (SRS) add bloat to a project, and extra zeros to the budget of the customer with NO guarantee of an increased return on investment. This is a fact I’ve observed over and over in my software development history.
I’ve done several projects in the past where I was the only developer, and using a spec doc to communicate what I was going to do (no matter how detailed it was) never fully commnicated to the client what they were getting. Nor did it stop me from having to make revisions that were VERY painful because I was so glued to my spec doc. The spec doc alone is not sufficient.
This doesn’t mean that spec docs are useless.. on the contrary I think they are necessary for development teams to set limits and diirection for themselves. But when communicating the developent of software to a client, nothing quite brings the point home like an actual HTML mockup that they can see and click… even if the clicks don’t do anything. On the developer side, seeing a set of storyboards should help a developer to observe patterns and common widgets in the interface that could be made into reusable components in code.
Also.. let’s look at new ways of writing Software Requirements Docs. How about a little PHPDocumentor tutorial writing or JavaDoc class docblock writing? Can’t we stop taking extra time to write these huge MS Word docs, and start preparing our codebase with the requirements and contracts of the application so that we are quicker to implement or write the framework necessary to get where we need to go? I definitely think that unless you are writing a RFP (for Accenture or a company of it’s stature), 100 page Word docs to explain what you want an app to do may not be the most efficient use of your time. Especially when you think about the time you may need to spend editing the doc for the inevitable twists and turns that the software development process will take from Alpha to Beta to Gold.
A quick look at UML will tell you that the strategy that 37 Signals recommends for development is not that much different from the flow of modeling an OOP application using UML. Use cases come first, and use cases are flowcharts that are best visualized with storyboards initially. Out of a well defined use case, classes are developed.
Software architects must remember that while code is very technical, there is an aspect of design in every application. That design takes place at the code level, but also at the interface level. And, design and clients mean revisions. Wouldn’t you love to save yourself some time coding by going through a few UI revisions and walk throughs to get to a functionality that the client is pleased with. Of course… this doesn’t mean you won’t have revisions once the code behind the interface is installed. However, it does mean that you will have had a chance to envision the code behind the interface, and communicated any limitations or benefits you can see to the client. This can be incredibly valuable and a great time saver for you and you client.
My advise to coders, remember that clean code is only 1/3 of the battle. Client satisfaction and user experience are the overwhelming 2/3 of the equation that will always determine if your software development process is successful or not. Splitting your architecture efforts between a technical spec doc and a user interface/use case storyboard will make you more well rounded and a better developer in the eyes of your client.
Dev Life Cycle, Viable Software January 2008 August 2007 July 2007- 23: BarCamp Nashville and Remarkable Wit profiled on BigSight.org
- 21: Remarkable Wit - Plan, Build, Share
- 21: Passing Through Limitation
- 19: Getting Very Excited About BarCamp Nashville
- 29: links for 2007-05-29
- 28: links for 2007-05-28
- 27: Crop Circles in Tennessee?!?!
- 27: Toronto… I miss you.
- 27: links for 2007-05-27
- 26: There’s a Lot of Good Stuff Going On…
- 26: One Week Until Generation TN Conference
- 22: My Baby Graduated From KinderGarten
- 18: Envisioning a Mission
- 17: My Most Popular Post
- 10: Long Time No Post
- 06: Back to fighting weight
- 30: Checking In, Hope All Is Well
- 27: Strong Urge To Organize and Simplify part 2.5
- 27: Vote For Trees
- 26: Strong Urge To Organize and Simplify part 2
- 25: Gen TN: Inform, Interact, Inspire
- 25: American Idol Is Awesome
- 16: Have Mercy.
- 13: Valleywag on Podcasters, Harsh.
- 11: AppleTV lives up to the Hype
- 11: Can’t Trust People In Business
- 10: MySpace Sucks as a Social Tool.
- 08: My MySpace Updated
- 08: Blades Of Glory Was Great
- 07: To Rent or Buy?
- 06: Holy Free 411 Batman!
- 06: Justin.TV at Technorati, Marcus at home.
- 06: Strong Urge To Organize and Simplify
- 05: LinkedIn Connected Me With A Grade School Friend
- 05: Souls Of Mischief In Nashville, April 13th
- 04: Django: So far, so good
- 04: Does Nashville Twitter?
- 03: Python Points of Interest
- 03: Python? Really?
- 02: The Pro::PHP Podcast is dead, Long Live the Pro::PHP Podcast!!!
- 02: The Joost Experience is Great
- 31: Buck The World is Dope
- 30: Tags Trump Categories
- 30: Positive Thoughts and Making Decisions
- 30: Renting 2216 Bryce Cove
- 30: Twitter “on time”
- 29: Do I have a problem?
- 29: London has a problem.
- 28: UFC owners purchase Pride FC, because they’re better at selling the sport.
- 28: On the iPhone, the prelude
- 28: This SubPrime Thing Is A Mess
- 28: Tech Celebrities and the Blogosphere
- 28: What am I doing right now? (And not doing)
- 27: Conferences Fuel Culture and Economy?
- 16: On…
- 20: Will I Ever By A Personal Computer That Isn’t From Apple Again?
- 14: What’s next Tennessee… Apartheid?!?
- 12: I think I was depressed.
- 12: Hip Hop is the soundtrack of my life.
- 29: Tristan would vote for Harold Ford, Jr.
- 15: City At Night Magazine : Get a Nightlife ℠
- 15: Our House for Rent
- 18: Very Fortunate
- 18: Back to Mac
- 09: Ciaran does Lunchables
- 18: I want one
- 31: Timing Is Everything Part 2
- 31: How many technologies can you spew?
- 26: Pretty Excited
- 21: Stop the Zend bashing… it’s old.
- 23: PHP folks, meet ART.
- 20: Time Heals
- 18: Pro::PHP Webcast with Brion Vibber of Wikimedia
- 18: Ciaran Got A Spider Bite
- 18: Emma is Best In Business for 2006
- 17: A Quick Note On The Wedding
- 15: What A Month And A Half
- 27: Being Sick Sucks.
- 21: Nothing is more exciting or more frightening….
- 12: On Growth - Part 1
- 08: The Greats Go In Threes
- 08: My Nashville Blog is a Metroblog
- 08: Know Thyself Entry 1
- 08: Pro::PHP Podcast: Microsoft on PHP
- 26: I Want the PPC-6700
- 26: Microsoft Teaches PHP, JSP and ColdFusion With “Cross Training”
- 23: I Wish For A Global Community
- 22: My Sprint Mobile Phone
- 21: The PHP Argument
- 14: New Developments
- 12: Shani Davis
- 11: RIP J. Dilla
- 11: HBO: Don’t TiVO Us
- 10: A Successful Show
- 10: EBay Podcast Auctioneer
- 10: PHP|a’s Pro PHP Podcast Update and Call for Interviews
- 09: Last FM has no quality control
- 08: Web 2.0 is Getting Silly
- 06: Joining the REIN IT Committee
- 06: Alaskan Girl: Wrestling State Champion
- 05: Squible is an inevitable next step
- 05: Great game, suspect calls
- 05: blogs.zdnet.com Runs Wordpress
- 05: Memes Disrupt the Mainstream
- 04: Hmm… Flex is Free.
- 04: Iceman and The Natural
- 04: Should Om Buy a MacBook Pro
- 04: I am a Nashville Kats Fan
- 03: MySpace and Universal provide Video on Demand
- 03: Online Entertainment is the new Great Leveler
- 03: Mobile Apps In A Hurry: Flash Lite to PHP?
- 02: Free Sun Workstations… Sort Of
- 02: We’re not REALLY gonna give Oil up
- 02: Rapid AJAX versus Flex Flash Remoting
- 02: No More Wire Hanger TVs
- 01: Headed to see the Nashville Kats on Friday
- 01: Dish Network and LifeTime, BF4E
- 01: embarq.com
- 13: emma is hiring
- 29: Zimbra looks like the REAL Exchange Killer
- 15: Hmmm… PEAR Podcast.
- 02: Get Cerebral with Davey Shafik
- 18: So You Wanna Be A Podcaster?
- 16: Web 2.0 Achievable in the Enterprise
- 13: Juvenile Demands and Criticism of Open Source Development
- 08: Back to Work
- 01: Interview on LinuxWorld about ZCE
- 31: Pro PHP Podcast Progress
- 24: The First All PHP Podcast Is Now Live
- 16: Blog Nashville: What Happened While I Was There
- 16: Interviews with Tech Heads at SugarCRM, PriceGrabber and United Press International about Enterprise PHP Development
- 02: Seeking Technical Editor
- 29: Free Markets, Open Economy, Open Source Software and the Internet
- 19: Int’l PHP Mag: ‘PHP 5 Tried For You’ Tackles Event_Dispatcher
- 14: Maximizing Profits and PHP Programming
- 05: Text_CAPTCHA article now on OnLamp
- 05: Refactor vs. Rewrite
- 05: PHP Security Consortium’s First Newsletter
Objectified PHP
So, what makes PHP 5 an official object oriented language now? Some say reflection, others say iterators. Type hinting is certainly a nice touch, and namespaces would make packaging much better. Truthfully… there isn’t anything that makes PHP 5 a more official OOP language than PHP4. All of the differences are in the new things that the language supports, but PHP 4 had the primary requirement: Classes . The same old PHP 4 objects run just fine in the Zend Engine 2, with maybe the exception of the way that ZE2 does pass-by-reference in functions and methods by default. In truth, PHP5 won’t be any more object oriented than PHP 4 if the developers don’t aspire to get a better understanding of the precepts and concepts of object oriented programming itself.
In many cases, that may mean venturing out of PHP into Java, C# and Python for the ways that object oriented programmers have been doing things with long term OOP languages for years now. This is a pretty far departure from a previous position that I held, which was that PHP is all I really needed to learn. This just isn’t true. I know that because I’m writing a PHP book now, and I know from my own research that PHP tutorials and books often share a certain school of thought. That thought being, objects are really no big deal.
When you consider the points that many PHP developers harp on… they may be right, in context. Performance is usually posed as a reason for staying object free. Development time is also an often touted reason. And then there are always the developers who haven’t learned design patterns yet and are simply having a hard time seeing the real advantage of methods over functions. All of these reasons are nice in theory, and work on simple applications that don’t require teams of 5 or more developers based on sheer scale alone.
This school of thought with a very light emphasis on software design has consistently been a weak point for the PHP community. PHP has too many popular and functional applications that have terrible software design and will eventually reach a point where they will either have to be rewritten, or they will be replaced with a much better designed application in the same product space.
This is gonna sound weird, but programming languages are almost like parents. Some languages are strict, and some are relaxed. Stricter parents often produce more disciplined, but boring children Relaxed parents often produce less disciplined yet interesting children. Java is a strict language that has produced many a disciplined, yet boring programmer. (Note: This is not an absolute rule, an elite programmer will excel and show creativity in even the most constrained development environment.) If Java is the uptight anal parent, then on the flipside, PHP is the overly-friendly, hippie parent. PHP has produced some incredibly creative, undisciplined coders. This is undeniable, and it’s the biggest problem facing PHP’s entry in the enterprise today. The enterprise will choose disciplined, boring code over exciting, chaotic code anyday. Again… not an absolute rule, but more often than not this is the case.
PHP programmers simply must become more knowledgable about programming in general, and object oriented programming in particular in order to make sense of the great new object model in PHP 5.
PHP January 2008 August 2007 July 2007- 23: BarCamp Nashville and Remarkable Wit profiled on BigSight.org
- 21: Remarkable Wit - Plan, Build, Share
- 21: Passing Through Limitation
- 19: Getting Very Excited About BarCamp Nashville
- 29: links for 2007-05-29
- 28: links for 2007-05-28
- 27: Crop Circles in Tennessee?!?!
- 27: Toronto… I miss you.
- 27: links for 2007-05-27
- 26: There’s a Lot of Good Stuff Going On…
- 26: One Week Until Generation TN Conference
- 22: My Baby Graduated From KinderGarten
- 18: Envisioning a Mission
- 17: My Most Popular Post
- 10: Long Time No Post
- 06: Back to fighting weight
- 30: Checking In, Hope All Is Well
- 27: Strong Urge To Organize and Simplify part 2.5
- 27: Vote For Trees
- 26: Strong Urge To Organize and Simplify part 2
- 25: Gen TN: Inform, Interact, Inspire
- 25: American Idol Is Awesome
- 16: Have Mercy.
- 13: Valleywag on Podcasters, Harsh.
- 11: AppleTV lives up to the Hype
- 11: Can’t Trust People In Business
- 10: MySpace Sucks as a Social Tool.
- 08: My MySpace Updated
- 08: Blades Of Glory Was Great
- 07: To Rent or Buy?
- 06: Holy Free 411 Batman!
- 06: Justin.TV at Technorati, Marcus at home.
- 06: Strong Urge To Organize and Simplify
- 05: LinkedIn Connected Me With A Grade School Friend
- 05: Souls Of Mischief In Nashville, April 13th
- 04: Django: So far, so good
- 04: Does Nashville Twitter?
- 03: Python Points of Interest
- 03: Python? Really?
- 02: The Pro::PHP Podcast is dead, Long Live the Pro::PHP Podcast!!!
- 02: The Joost Experience is Great
- 31: Buck The World is Dope
- 30: Tags Trump Categories
- 30: Positive Thoughts and Making Decisions
- 30: Renting 2216 Bryce Cove
- 30: Twitter “on time”
- 29: Do I have a problem?
- 29: London has a problem.
- 28: UFC owners purchase Pride FC, because they’re better at selling the sport.
- 28: On the iPhone, the prelude
- 28: This SubPrime Thing Is A Mess
- 28: Tech Celebrities and the Blogosphere
- 28: What am I doing right now? (And not doing)
- 27: Conferences Fuel Culture and Economy?
- 16: On…
- 20: Will I Ever By A Personal Computer That Isn’t From Apple Again?
- 14: What’s next Tennessee… Apartheid?!?
- 12: I think I was depressed.
- 12: Hip Hop is the soundtrack of my life.
- 29: Tristan would vote for Harold Ford, Jr.
- 15: City At Night Magazine : Get a Nightlife ℠
- 15: Our House for Rent
- 18: Very Fortunate
- 18: Back to Mac
- 09: Ciaran does Lunchables
- 18: I want one
- 31: Timing Is Everything Part 2
- 31: How many technologies can you spew?
- 26: Pretty Excited
- 21: Stop the Zend bashing… it’s old.
- 23: PHP folks, meet ART.
- 20: Time Heals
- 18: Pro::PHP Webcast with Brion Vibber of Wikimedia
- 18: Ciaran Got A Spider Bite
- 18: Emma is Best In Business for 2006
- 17: A Quick Note On The Wedding
- 15: What A Month And A Half
- 27: Being Sick Sucks.
- 21: Nothing is more exciting or more frightening….
- 12: On Growth - Part 1
- 08: The Greats Go In Threes
- 08: My Nashville Blog is a Metroblog
- 08: Know Thyself Entry 1
- 08: Pro::PHP Podcast: Microsoft on PHP
- 26: I Want the PPC-6700
- 26: Microsoft Teaches PHP, JSP and ColdFusion With “Cross Training”
- 23: I Wish For A Global Community
- 22: My Sprint Mobile Phone
- 21: The PHP Argument
- 14: New Developments
- 12: Shani Davis
- 11: RIP J. Dilla
- 11: HBO: Don’t TiVO Us
- 10: A Successful Show
- 10: EBay Podcast Auctioneer
- 10: PHP|a’s Pro PHP Podcast Update and Call for Interviews
- 09: Last FM has no quality control
- 08: Web 2.0 is Getting Silly
- 06: Joining the REIN IT Committee
- 06: Alaskan Girl: Wrestling State Champion
- 05: Squible is an inevitable next step
- 05: Great game, suspect calls
- 05: blogs.zdnet.com Runs Wordpress
- 05: Memes Disrupt the Mainstream
- 04: Hmm… Flex is Free.
- 04: Iceman and The Natural
- 04: Should Om Buy a MacBook Pro
- 04: I am a Nashville Kats Fan
- 03: MySpace and Universal provide Video on Demand
- 03: Online Entertainment is the new Great Leveler
- 03: Mobile Apps In A Hurry: Flash Lite to PHP?
- 02: Free Sun Workstations… Sort Of
- 02: We’re not REALLY gonna give Oil up
- 02: Rapid AJAX versus Flex Flash Remoting
- 02: No More Wire Hanger TVs
- 01: Headed to see the Nashville Kats on Friday
- 01: Dish Network and LifeTime, BF4E
- 01: embarq.com
- 13: emma is hiring
- 29: Zimbra looks like the REAL Exchange Killer
- 15: Hmmm… PEAR Podcast.
- 02: Get Cerebral with Davey Shafik
- 18: So You Wanna Be A Podcaster?
- 16: Web 2.0 Achievable in the Enterprise
- 13: Juvenile Demands and Criticism of Open Source Development
- 08: Back to Work
- 01: Interview on LinuxWorld about ZCE
- 31: Pro PHP Podcast Progress
- 24: The First All PHP Podcast Is Now Live
- 16: Blog Nashville: What Happened While I Was There
- 16: Interviews with Tech Heads at SugarCRM, PriceGrabber and United Press International about Enterprise PHP Development
- 02: Seeking Technical Editor
- 29: Free Markets, Open Economy, Open Source Software and the Internet
- 19: Int’l PHP Mag: ‘PHP 5 Tried For You’ Tackles Event_Dispatcher
- 14: Maximizing Profits and PHP Programming
- 05: Text_CAPTCHA article now on OnLamp
- 05: Refactor vs. Rewrite
- 05: PHP Security Consortium’s First Newsletter

