Jason is working on his fancy new application from the ground up, and I’m feeling pleased at his progress. On the other hand, I’m not a guru of object-oriented design or design patterns, so I don’t want him to get the idea that this is the way to do things all the time. There are much more experienced people having a debate on this very topic, how ModelViewController (MVC) isn’t particularly object-oriented.
So that got me thinking about methodology and professional accreditation.
I don’t program to a particular methodology just for the sake of it…I’m far too lazy for that! I do, however, try to code to past experience and future maintenance, because I’m also far too responsible to let bad things happen if I can help it. So the criteria I follow is to build a foundation that has:
- A clearly-established set of parameters, approaches, and organization that expresses and solves the stated problem in its real context of use.
- A clear system and workflow that allows quick rock-solid prototyping, easily “populated” and “skinned” by non-technical content writers and artists.
- A flexible architecture that can, within design parameters, be extended without a lot of fuss.
- A self-documenting, clearly-expressed development logic. Elegance in implementation makes maintenance and collaboration easy.
Most of this is the hard up-front work, thinking things through before you design. OOP and MVC are just a way of expressing one of many solutions. Do you fit the problem into what the pattern does, or apply the pattern to the problem? You should be able to do both, and pick the one that makes life easier for everyone who has to touch the code or work with the finished build.
I’m about to start reading The Pragmatic Programmer to see what I’m missing. I sometimes am concerned about my lack of fluency in programming jargonese. Once at a pitch meeting, the president there asked about some kind of programming methodology that I wasn’t familiar with, and I had to say that I was not familiar with what that methodology consisted of, and started to describe how I approach things in general. Not the answer he was looking for, I imagine, as he cut me off and asked another question. Oh well :-)
That did get me thinking that I should have a greater familiarity with “professional software engineering practice”. It might even be worth the 150 bucks to become a [Macromedia Certified Flash Developer][mcdf]. For your money, you get to take a multiple-choice quiz over 75 minutes…score 70% or better and you’re in.
Would this actually open opportunities of the kind I’m looking for? I don’t want to be a professional software engineer, after all…I want to make cool stuff and work with cool people! These are not mutually exclusive of course, but something in the back of my head is telling me that it’s the wrong path to go down. I am open to counter arguments.
Looking at the course syllabus, it looks like they use a lot of regular Macromedia components. I haven’t used them at all, preferring to make my own. The sample exam questions are interesting to look at, covering some esoterica that I didn’t know the answer to right off the bat. Maybe I should study up!