Just In Time Design
We don’t perfect design in our programming until we’re sure we’re going to keep it.
Here is a link to the article from 2003 that impressed me, which I mentioned in the video.
We don’t perfect design in our programming until we’re sure we’re going to keep it.
Here is a link to the article from 2003 that impressed me, which I mentioned in the video.
I decided about a year ago that it was time to write an educational game to teach math. None of the languages I knew were an optimal choice for this. I’d been programming in SAS for 30 years and it’s an excellent choice for processing the data that come in from pre-tests, student answers and…
As The World’s Most Spoiled 14-year-old reminds me often, I am old. I remember SAS version 5. I also remember SAS 6.12 which is noted for being the last version of SAS to run on the Mac. Several years ago, I was at a SAS conference where the soon-to-be released version 9 was under…
I was working on something for a client when The Invisible Developer walked into my office, looked over my shoulder at the code and said, “So, you’re a PHP programmer now?” I answered, “I’m a whatever-language-we-happen-to-need-at-the-moment programmer.” A year and a half ago, I took a look at Codecademy and was underwhelmed. It’s gotten mixed…
Sometimes the simplest things can make life easier. When I start exploring a new data set, the first thing I do is the Characterize Data task. With even modest-sized datasets this produces a lot of output. For example, the data from Spirit Lake: The Game, with about 80 variables and 88 subjects produced 93 pages….
I have long suspected that the main role of other people on this earth is to annoy me. Take FIPS codes. FIPS stands for “Federal Information Processing Standard”. Does no one know the meaning of the word “standard” ? A FIPS code is a useful thing. For counties it is a FIVE digit code. Got…
In assessing whether our Fish Lake game really works to teach fractions, we collect a lot of data, including a pretest and a post-test. We also use a lot of types of items, including a couple of essay questions. Being reasonable people, we are interested in the extent to which the ratings on these items…
Transcript (with a couple of ‘ands’ taken out and sans the hand waving):
What I wanted to talk about, though, was just in time design and programming. I read something from IBM about 10 years ago, and I was really impressed because I thought they were kinda ahead of their time, and I was surprised that it came from a big company. The idea is that you do programming, you do design, as you need it. Often people will see things that I put on my blog, things that I’m working on, and say very insightful correct comments that “you need to do this”, “you need to do that”. And they’re absolutely right: the reason we haven’t done it, whatever it happens to be, is that we’re a really small company. So if we’re, say, working on the storyline, and we’ve got the movies done, and they go from the movies to an input page, where they have to answer a math problem, and then they go to study something before they take a quiz to go back into the story… each of those parts needs to be done. Yes, there’s probably better ways to do the quiz than SurveyMonkey – one of the things I spent a lot of time doing was replacing the way we had originally done the quizzes – but until we’ve tested out whether that kind of design is what we want to do, working on perfecting each individual part of it is probably not the most cost effective use of our time. And cost-effective use of our time is something my next video blog is about…
What an incredibly nice thing to do. Thank you.
Ah, the Kaizen of programming. I agree iterative development is the way to go because it allows all kinds of feedback loops to be baked in. The downside is every new iteration with the client gives them a chance to feature creep the hell out of it if they feel they have the chance to (which could be a good or bad thing depending on the circumstances).
On large scale projects, it’s not uncommon at all to prototype a product in Ruby on Rails then go back later and rewrite it in Java for performance (if it really needs to scale). Twitter did this.
Iterative development is the _smart_ way to do it.
However, if you post a blurb of code on your blog specifically discussing its problems, be prepared to hear what’s wrong with it, regardless of your stage of development. 😛
Honestly, I *appreciate* hearing what is wrong, because there is no guarantee that when we get to that state of development we will think of everything.
On the scope creep – it also prevents us from the opposite. I’m working on a project now where I can think of all kinds of cool stuff but maybe the client wants bare bones.
AnnMaria: my pleasure. My hands are happy and it turns out to be fairly easy to transcribe with html5 video and 0.5x playback on youtube :).