You haven’t picked come to this website expecting me telling you a sweet story. You’ll probably want to get straight down to business and read about what will help you as a software designer and I respect that. I would want the same thing. But it’s my experience that knowing in what kind of environment we as designers have to operate helps immensely. Besides that we have to lay the groundwork, the foundation on which we can build our designs. Every farmer knows that before you can reap the rewards you have to sow the seeds. And it takes a lot of time, some fine nurturing, and even some beneficial external factors, like the weather, have to cooperate, before we can even talk of reaping anything at all! Designers wanting to deliver a quality product have to operate under the exact same rules. And it’s these rules we find in these first post categorized under “preparation”. It is my sincere belief that the more you know about the environment in which you have to operate, the better you can adjust to it’s hardships. Darwin discovered such a thing almost two hundred years ago and since then there’s hasn’t been a single soul who has come up with something better than the general message he conveyed at that time.
Besides that my own model concerning software design is called “Test Driven Requirements Engineering” (TDR). If you thought that maybe designing had something to do with testing you’re absolutely right. TDR is a method specifically designed for maximum re-usability and one of the areas where a TDR design will be used again, far more intricately than traditional designs, is during testing. I don’t know about you but I like to keep things as simple as possible whenever the occasion arises. So if I don’t have to do the same thing twice I go for it, but you will read all that and much more in the appropriate posts. What’s important to realize here is that, if designing involves something about testing, you obviously have to know something about that area. And although the area of testing is severely highlighted in this design method, it is far from the only area.
I like to compare the first set of posts like driving from a certain point to another one. As a driver your first priority obviously will be driving itself. “Hey, how do I drive this baby, is there something resembling a clutch or do I just floor the gas pedal.” Even then, there are some other areas of expertise you have to master. Like not sitting in the passengers seat when wanting to move, or in the trunk for that matter. Seems trivial enough, but it still applies. Even when everything is where it should be and the driver has both hands on the wheel ready to explore, he still has to know something about the environment. There are things which the majority of people call roads and then there are things which definitely don’t deserve that name. And even then it depends on the vehicle your driving. When driving a monster truck other vehicles suddenly could be called “roads”. Then there are other “drivers” or people trying to fit that description. And we all know what happens when even one of those drivers decides to have some variety and go the opposite direction in the same lane. We have a name for that kind of behavior which I shall not repeat here. I could elaborate the subject further but I think you get the point. In any area of expertise you have to know what’s out there and with every post categorized as “preparation” you’ll learn this.
At times you may get the idea that posts categorized in “preparation” are outside of the responsibility of designers. That maybe it has more to do with the work managers should be doing during a project. Well you’re right insofar that maybe the responsibility of planning and managing is not in your portfolio. On the other hand if you know that the job you are paid for as a designer will unerringly end like the flight of the Challenger because of bad preparations of so called “managers”, isn’t it your responsibility to do something about it? Don’t you have a shared responsibility for the end result? Don’t you and the other project members are, in the end, trying to achieve the same goal? The answer to that question is obviously “yes”. Listen, being responsible is not an excuse for stomping on each other whenever somebody’s wrong, it’s helping each other. In the end you’re not only helping the other members with the subjects discussed in the preparation category, you’re helping yourself by improving the quality of your software design, because you had the ability to anchor it in foundation as solid as a rock, or at least helping the ones directly responsible for this foundation.
Preparation has tangible subjects. And the main one is the one I call the Milestone Framework. The Milestone Framework is subsequently broken down into project phases, characteristics and parts. Each of them of the utmost importance in laying the foundation for your software design.
When we have laid the groundwork it’s time for the theory involved with actually making a design, the main subject of the second category “execution”. In this category you will come to know the beneficiaries of the design intimately and how they help to shape the theory behind Test Driven Requirements Engineering (TDR). They are of course the end user and the developer. If there’s something you have to understand as a designer it’s this, a design has the potential to be much more than just a static representation of a piece of software. It’s a way to structure communication in all sorts of areas if constructed in the appropriate manner. It’s communication between these two stakeholders we have to establish and there are specific things we have to do as designers to ensure this. I call the process to establish effective communication between these stakeholders “alignment” and it will be the most significant process we as designers are to translate into our software design. Alignment is the way for the designer to keep all eyes focused on the goal. Although I may sound like a priest divulging ancient rites I will give specific instructions to make sure you will be able to achieve alignment during your own work.
In many of the projects I’m involved with I see people who have absolutely no idea what they’re up against. I see people wrought with frustration unable to cope with the difficulties at hand. I see people with extraordinary capability discussing every minute detail of some problem, but in the end utterly failing to put one step towards an effective solution. I’ve seen people brake down and cry in more than one occasion. Seen people giving up and staying at home angry at the world. If I tell you that in life you have to set goals in order to achieve them, few will disagree with me. But what each and every individual has got to do when the problems seem to big to swallow is to chunk them down and set separate goals to achieve their attainment. With software projects as a whole its no different. It’s goal setting that spell success or failure for every project. And it’s software designs that make goals tangible, real and achievable. And I don’t mean designs fraught with unintelligible models, tables, numbers and page after page of text written in some language from another planet. I mean designs stripped to the bare essentials, simple, understandable, readable for all the stakeholders, not just the so called experts. My god, some software designs need an enigma machine to decode plus the people who operated it during WWII.
Execution will give you all the tools you need as a designer to put your product together. It covers designing with visualizations, requirements and test driven requirement engineering, testing with test driven requirements and a chapter covering subjects such as management information and time estimation with test driven requirements.
After all this ranting and raving I want to leave you with this message. As a software designer myself I have to practice what I preach. I find TDR giving me new distinctions every single day. I sincerely hope TDR will do for you what it does for me which is giving you the edge as a designer and the knowledge that you have a skill set not only to achieve the task at hand but also having immense fun while doing it. For it’s doing a job with passion that brings you and your teammates to a whole other level.
Related posts: