So this time I want to actually talk about what software development is like to me. I think there are multiple levels, and each one can be compared to other activities. Lets try to divide up the activity into a couple of sub-activities:
- Business Ideas - Creating a viable business plan, including high level Products.
- Product Ideas - Converting an idea into something on the screen. Often this is words describing the idea with some detail. Sometimes it involves producing screen shots showing what the application would look like.
- Writing Code - Converting the Product Ideas into logical steps, sometimes reorganizing those steps into sub steps.
- Writing Test Code - Converting the expectation of what the software should do to a series of steps to see if it fits those expectations.
- Create Plans - Converting an Product Ideas into high level attack plans.
- Create Tests - Converting Test Plans into a set of steps to test the product, sometimes reorganizing those steps into sub steps (E.G. A test).
- Testing - Creating instances of either Written Tests or Test Code. Some test code will cause more Code to be created (or deleted).
- Shipping Bytes - Moving the Tested code into other environments.
- Support - Making those Shipped Bytes work together, including sometimes modifying the data being used.
Alright now, the question is, with all these activities, what analogies can make sense? Well, let's "test" the legislative analogy. What is legislation and what do legislators do anyway? To take a quick quotes from those wiki articles:
A legislature is a kind of deliberative assembly with the power to pass, amend, and repeal laws. ... In most parliamentary systems... However, in presidential systems... In federations... Because members of legislatures usually sit together in a specific room to deliberate, seats in that room may be assigned exclusively to members of the legislature.- Legislature
(Another source of law is judge-made law or case law.) ... Legislation can have many purposes: to regulate, to authorize, to proscribe, to provide (funds), to sanction, to grant, to declare or to restrict. Most large legislatures enact only a small fraction of the bills proposed in a given session. Whether a given bill will be proposed and enter into force is generally a matter of the legislative priorities of government.- Legislation
So let me see, a bunch of guys create logical rules, which can sometimes be amended by another group by interpreting the rules or sometimes excluding large parts of the rules. They create these rules for all sorts of purposes, depending on what is required by the system they are in for the people they represent. These rules, sometimes known as code. Well how well does that match?
A business comes up with ideas, like a government comes up with ideas, either from the populous or by situation or etc. They start coming up with rough ideas of what this should look like, and a small number of those ideas are then written as code. These "coders" all have their own desk and often have separate infrastructure to actually enforce the ideas by deploying their code. In the US, this is called the 'executive' branch (or was it the ops team?). In my experience, legislation often has a time for public comment, which is a rough comparable to test, however, it is never exactly like the production environment, so bugs occur. Thus the legislature creates patches... er... amendments to fix it or if they don't fix it, often the judicial branch modifies the system by pulling out bad code until the coders get time to fix it.
I don't want to stretch my analogy too far, nor give it too much force, but there does seem to be a lot of comparable things between the two systems.
"So what?" you say. Great question... and we are out of time! Seriously, I will address this in a third and final post which I will put up really soon.
No comments:
Post a Comment