I have been reading the book: Agile Software Development by Alistair Cockburn
It is a truly interesting book that first speaks about the role of communication in Software Development, how critical communication is for the success of any software project, how all communication is imperfect and how we still manage with it. Here is an interesting extract from the book about Software Modeling or Software Specs. refuting the principle that software development is only about “model building” Alistair says:
“Some successful project teams have built more and fancier models than some unsuccessful teams. From this people draw the conclusion that more modeling is better. Some successful teams have built fewer and sloppier models that some unsuccessful teams. From this, other people draw the conclusion that less modeling is better. Neither is a valid conclusion. Modeling is a part of team communication. There can be both too much modeling and too little modeling. Scrawling on napkins is sufficient at times; much more detail is needed at other times”
I feel that while making Software Specifications beautiful and accurate we fail to see what purpose of the document is in the first place. I have written quite a few Software Specifications. Every document begins with the section “Purpose” where the purpose of the document is written. Here is an extract:
“The purpose of this document is to establish clarity between the development team and the project sponsors for the project that is under consideration. The document will strive to remove all ambiguity on what the deliverables are. This document will enumerate and discuss all the various features this software will bring to its users. If there are multiple user categories, the document will discuss each of them individually. Wherever possible a pictorial representation of the user interface is made to aid the understand of the user. However, these interfaces are subject to changes if the development team finds better alternatives.
This document will also aim to give the developers access to the exact software requirements. This document does not contain any implementation details but only the functional requirements of the application. However an effort will be made to present the requirements in a format so the development team finds it easier to implement.
Further, the document aims to furnish enough detail to the application architects and leads to prepare detailed use-cases and therefore make development schedules and release plans for the entire application.”
The above extract brings three main objectives of software specs into the foreground:
- Bring clarity between the development team and the project sponsors on the exact deliverables
- Help the designers develop a good design serving the requirements
- Help in making development schedules and release planing
These three, I believe are the core objectives of the requirements documentation.
The genius of his master’s voice.
Well getting on top is tough. But what happens when you get there? There are instances in life where you can get to the top very fast. So you are working for a start up. Within a couple of years you proved yourself to be one of the top performers. What next? So you started a company and worked hard and got somewhere. What you dreamed years ago has finally come true. What next? What happens when you reach the top slot early? Most people have a set of core competencies that are defined in the early years of their career. It is very unlikely that they will change very soon. For example if you are a marketer, and a serious one at that, there is very little chance that you will turn to programming after becoming the head of the marketing department. You will continue to sell. If you are a senior project manager for a construction firm, there is very little chance that you will jump to insurance. You will probably not get into client relations or other functions that are not related to construction at all. Before you make that leap from one job description to another, one needs to stop and think. In every vocation there comes a time when one has done enough of job X and has explored it enough. Now he wants something new. It happens naturally. The problem arises when you are already on top doing what you are doing. Then you don’t know what to do next. Then one just goes on increasing the volume of one’s work instead of choosing higher directions. Form handling 2 projects to 10 projects. Form handling two business units to 15 business units. Though this is career growth, in the long run it is stagnating, uninteresting and less fun. I suspect this happens with most young entrepreneurs, leads in small companies and senior management where the next career path is not very well defined. If you are facing something similar, read on.
In most achievers there is a need for a challenge. Their creative juices flow out of the impossibility lying ahead. Take the challenge out and you will kill the performer. Then they will become below average performers. Achievers need to be challenged. Continuously. But if you are on top, there is hardly anyone to challenge you. You need to challenge yourself. So here is the recipe: Replace yourself at what you are doing and do something that nobody around has ever done before. This advice comes in two pieces. One replace yourself. Two do something new. And it is imperative you do them together. Doing one without two is not safe and two with one is Herculean.
Replace Yourself: If you don’t want to stagnate, you need to do new things. But you cannot just stop doing what you were doing before. Somebody, somewhere has to still do those tasks. So get somebody junior to do your job. Throw open your tasks to a couple of guys and start teaching them. Teaching is an inevitable part of leading. To lead well and to lead from the front, you need to do things nobody else could and then teach them to others. This way your whole unit is constantly learning new things. It is on a continuous learning cure and having fun learning them. Replace yourself slowly, gradually. Gently pass your responsibilities to the juniors.
Do something new: The reason you are on top, is because you are good. But good people can’t escape from getting better. You will have to learn new things. Select your next big target and go ahead. Select something that is realistic but challenging. And go full blast.
Caution! It is important to be very good at your job before you change your job role. Make sure you have done what you are good at long enough before every change. Career skills take time to master.
All the best! Go ahead and create your self the most unique job in the word.
User Stories are stories narrated by users about how an application or parts of application should function.
Enhancements
It is comparatively easier for users to write User Stories when they ask enhancements to an existing application. For example while asking for enhancements for Microsoft Outlook, a user may ask for more fields in the address book. A user story could be “We need a secondary email address field in the address book”. In a good user story the user would also say how this new field be used. “And the application should try to email the secondary email if the first email fails.”
New Feature
When the user needs a feature that is absent in the existing application he can point to examples in other popular applications that do something similar. For example, “We like Gmail’s Search Email function. We would like to have something similar to search projects.” And follow it with some improvements if required. Like “And we would like to search based on Date of Creation or Estimated Date of Completion”
Original Idea!
When a suitable example does not exist, it is best to write down one’s thoughts as clearly as possible and discuss it with the developers as the story is being written. This way the users and the developers are more likely to understand each other.
“Thoughts are things” Napoleon Hill once wrote. Like bricks and steel and mortar that make buildings. Just like a brick which is red, shatters when dropped and weakens in water, thoughts have properties. Anger subsides after shouting, encouragement strengthens resolve, love reduces stress and ambition reduces love. And to observe one’s thoughts, just like we observe things, requires self control. Then one can understand his mind.
One can spend every moment in two ways. Thinking positive thoughts or negative thoughts. In psychology and especially in hypnosis these are called Positive Auto Suggestions and Negative Auto Suggestions. And every situation whatever you think you become.
All softwares come with release number. Here is how I think it can be numbered. Every release will be denoted by a four digit release number of the format A.B.C.D where
A = Application Life Cycle Number
This number is a function of the number of complete Software Development Cycles the application has witnessed. One complete Life Cycle includes Development + Testing + Deployment + Usage + User Feedback + Incorporation of Feedback + Support. This number will start from zero and will move to 1 after completion of the Beta Testing stage. Every time the application complete one complete life cycle this number will be incremented. An increment in this number will reset all following numbers.
B = Feature Set Number
This number is a function of feature set of an application. It denotes the number of Major Features the application is supporting. A major feature is an independent functionality providing a unique benefit to the user. Every time a major Feature is added (or removed) to the application this number is incremented. An increment in this number will reset all following numbers but will leave the preceding numbers unchanged.
C = Features Revision Number
This number is incremented if the functionality of an existing feature is modified, enhanced or re-written after the previous major release. An increment in this number will reset all following numbers but will leave the preceding numbers unchanged.
D = Bug Fix Number
This number is incremented after every bug fix for the last major release. An increment in this number leaves all other numbers unchanged.
Any release where the first two numbers i.e. A or B change is called a major release. If the last two numbers i.e. C and D have changed it is called a minor release.
One my favorite Lucky Ali songs
Fleetwood Mac was a great band. One of my favorites. Take a look at some of my favorite numbers from them.
Well, we just finished work on a Project Management System for Registered Accessibility Specialists in Texas USA. It was exiting thing to work for. Just take a look at the features.