Let me restate something from yesterday...
You cannot wait until you have everything before you start coding, because you will never have everything.
But, this idea leads us back to the Second Tenet of Software Development:
Everything the program is supposed to do must be known by the software developer.
As a software developer, you cannot just start typing code. Well, you can. And, unfortunately, many software developers (and dev groups) do. But it is generally a terrible idea.
I mean if you literally know nothing about the project and you’re already typing code then you have little chance of success. You must have at least the germ of an idea of what you are attempting to create.
Remember, software devs must write code which creates software which :
But, as we said you will never actually know everything the software will do before you begin to build.
Isn’t this all just a paradox? I admit that it does feel that way, but there is actually a way out of this swamp.
Everything I’ve explained so far is why you must have:
A process (method of working)
Structured yet flexible design which allows you to change things as you go
Those two little items look so short & simple on the page but there are entire books within each of them. Many of you with more experience in the IT industry may have bristled when you read the word method.
Please notice that the word is not capitalized and it is not intended to invoke any defined Methodology (ISO 9000, Six Sigma, Agile Scrum).
Jack Ganssle, Embedded Systems Design (September, 2003) said:
One way to identify an amateur organization of any sort, be they accountants, lawyers, craft shops, or software developers, is a lack of process.
I’m talking about a much more basic meaning of the word method.
Dictionary.com defines method, perfectly or our purposes:
“a procedure, technique, or way of doing something, especially in accordance with a definite plan”
For our purposes, in The NextLevel Software Developer, we will alter that definition slightly to show the tight focus we’ll have in this book:
A way of developing a system (software) guided by an appropriate plan.
There are really two problems we need to solve:
- Creating a common understanding
- Capturing appropriate details
The NextLevel Software Developer guides you into a process that will help you resolve both of these challenges by showing you effective ways to capture the appropriate details using specific artifacts and user stories. Chapter 1 will make all of this clear.
There are three things you can do to instantly make your communication more effective:
- use a common language Every role must use the same terms to talk about the desired business solution ( no tech jargon)
- focus on nouns (the things you want in the system)
- focus on verbs (the functionality you want from the system)
As we move through Crafting Software we will discuss these in far more detail and learn how understanding these simple principles can help us understand what we are creating better than we ever have.