It is absolutely amazing all the stuff that can happen in two months. That’s how much time has past since I officially became a member of management. We’ve had 2 major software releases, plus 2 more minor ones (and if the phone call i received from my boss on the way home today is any indicatory, we’ll do yet another minor one tomorrow). I’ve finalized 3 design specs and have two more on the verge of receiving signatures. We’ve now got 4 releases running in parallel, with one more receiving its final round of testing. It has been a wild ride.
With all of that, I’ve had one thing riding in my mind for a while… design. The primary function I perform is taking the requests given to us by the user community and transforming those into something like a map, which the programmers use to navigate from where we are now to where we want to be in the future. I make a blueprint, showing where proverbial the walls, rafters, electrical outlets and doors should exist, then let the programmers figure out where to place the individual nails that hold it all together. I can advise them on the intent of what I produced, if they feel there is a conflict with existing code or there is a more efficient way to reach the same result.
With all this work, the last two months have been more hectic than the entire prior year, and we’re not even a quarter of the way through. Our schedule is solidly booked until the end of 2009. At least I know it is job security, even though it is also a great deal of responsibility and even more, opportunity.
As I said mentioned the first blog of this year, I have a lot of design work to do this year, to prepare for all the work that will need to be done next year. We’re going to use a phased approach to move from our current text based system into a graphical, touchscreen system. Its a huge transformation, one in which I feel amazingly fortunate to be a part.
That said, I also feel woefully unprepared. The manager that left at the end of last year, left an amazingly large gap of knowledge. Soon, I’ll be moved into his cubicle, reinforcing the image that some have of me being his replacement. I’ve had 6 years of analyst experience and only a couple of that have seen me doing major design work. Now, I will be the lead designer of an entirely new system, which must still be completely backwards compatible with the old system.
What this means is that I must do several nearly contradictory things at the same time…
- Design for the future without disrupting the 2800 stores that use this system every day of the week.
- Shoehorn new functionality into a system that isn’t designed to do anything like what we will be doing one year from now.
- Lay a solid foundation that can be extended as the years progress, without moving too quickly away from the existing code base which has served us well for many years.
- Do all of this with half the time and half the resources that are required to do it really right.
If the speed and workload scare me, what excites me is the design. The more I have allowed my mind to focus on the future of our little system, the more ideas have been floating to the top. I spend my evenings searching the internet for primers in system functional design. I spend my nights falling asleep to images of users tapping the screen in novel ways; orders loading in record time. It makes for really wonderful dreams, when you know something really amazing might be just around the corner.
Today, I ordered my first book on interactive design. I am seriously stoked about cracking it open and learning. I also took a look at the MIT Open Courseware website in hopes of finding some amazing material on system design. Sadly, what I did find was woefully incomplete when compared to some of the amazing class material I have seen there in the past. I guess complaining really isn’t an option when MIT is giving its knowledge away for free!
The most interesting thing I found online was an article that discussed usability and the 10 general rules for how it is done right. What made me really happy was that, while not articulated nearly as well as the article, these were the considerations that were already flowing through my mind as I dreamed about what this new system would be. Most of the reason I feel the way I do about systems is that I have spent so much of my life using poorly designed, or what I have heard of as ‘design by committee’ work. Sadly, there is often no one around who is willing to stand up and say, “That’s stupid and here’s something that is better.” Almost anyone can say the first half of that sentence, but very few know how to say the second half.
What’s more, I want to be in a position to say not just one thing that is better, but a whole list of them. This is something I have known for years, but just recently found out that my favorite company also does the same. In the end, one person should be responsible for the design. Many, many, many people should give input and that input should be taken under advisement, but when the design is done, it should be the job of one person to bless it and be responsible for making sure that vision is achieved. I want to be that person.
So what am I doing to make sure I get there? Here is a list of the things that have been rolling around in my mind for a while. They are in no particular order, but are what I want our system of the future to be. Obviously, these are open for adjustment as I learn, but as of now, here are the things I want:
- WOW!!! This is the first word I want to hear out of the mouth of every person when they first see the system. If it doesn’t knock them off their feet, it is a failure. Period.
- If a new team member can’t take an order on the system with a maximum of 15 minutes of training and an experienced team member cannot take an order with no training, the new system is a failure. Period.
- The second thing I want anyone using the system to thing is, “This really reminds me of our company.” I want familiar images, colors and icons to be carried throughout the system. Regardless of what part of the system the team member is using, it should scream that it was made for them, as they are an employee of a team.
- Consistency. Our current system does a good job of this, but there are a few places where I can’t help but ask, “Who thought this up???” I have hesitated in the past to try and change many of these places because our team members know how they work and changing will likely be more painful than things remaining as they are. The future is a blank slate, and I get to decide how processes could be best implemented.
- Flexibility. Our current system is very easy to break and is difficult to change, mostly because of the technology that powers it, but also because of the way in which it was implemented. As is the case with this new system I will be designing, the current system was given half the time really necessary to bake a quality product. The people working on the existing system did an admirable job, given their restraints, but the programmers we have now are probably more mature in their adherence to standards.