Sunday, 23 October 2016

The Programmer's dilemma

When faced with any new task, that isn't the writing of software the first question that any self-respecting programmer will ask is "Can I write some software to do it", if the answer is yes, then a junior with perhaps as little as 5 years under their belt, will proceed to write it.
Towards the end of their first 5 years, they may begin to realise that spending 2 weeks writing a small utility that automates a process that takes 3 hours by hand needs some justification.

The will after some time come up with an inequality like the one below.

Time to write app + (time to prepare app + time to run app)* times job needs doing < (time to do by hand*times job needs doing)

and an app to do it, as, of course, that is the only way to get reliable results, basic arithmetic is not a software developer's strong point, computer science is, after all, a branch of mathematics.
Of course, this is only Version 1 of the software and its inadequacies will become apparent somewhere towards the beginning of gamma testing when it begins to indicate that software you actually want to write is not viable.
The obvious flaw in the calculation is that it does not take into account the number of similar tasks that the application could be rewritten to help with and the time saved in writing these. 

They will after some time come up with an inequality like the one below.

Number of similar app * ((Time time to write app-Time saved if first app written)+((time to prepare app + time to run app)* times job needs doing))  <
Number of similar app *(time to do by hand*times job needs doing)


again, of course, this will need to be developed as software Version 2. 

Well of course soon you will see the flaw that writing this app or a version of it for different types of task, which have different numbers of preparation tasks and post run tasks, is not fully catered for, and is going to need to be handled by some similar but different software. This means that Version 3 will not now be an application but will be a Library or Generic class with some demonstration builds, 2 of which will be implications of Versions 1 & 2.

To make it even more even more generally available Version 4 will be a set of Excel macros, while version 5 will be an Excel clone. This is actually how all truly useful software is conceived and developed any other way just leads to things which would be better done on paper. All good software is the results of Software Developers or at a push, computer scientists solving their problems while trying to do other things that interest them, most of which are writing programmes. If people start trying to develop software to fix other peoples problems we will end up with it being fitted nasally.

No comments:

Post a Comment