søndag den 12. juli 2009

3 features could double the speed of software development

If the following 3 features was implemented in modern programming tools, then I would be twice as productive as a software developer:

§1.
When testing the software in debug mode and I hit an exception then the debugger should record all the steps and states that happened previously and I should be able to step back to any give step before the exception accrued and continue debugging from there.
It should also automatically set a break point at the line where the exception occurred and automatically jump right back to there. (today VS2008 jump to the catch statement when it hit an exception and the memory state is broken so that I cannot go back to before the exception occurred and get a view of the memory state of all objects.

§2.
When I create a new method, the software IDE should automatically generate an set of test cases for this method. Then I should be able to right click on the method and go directly to these test cases. And it should be easy to add new test input. Even if it is complex. (I.e. a DataSet or a Bitmap or a custom class)
Next the test cases shall be able to test the new method even when the entire project do not build. As long as the new method builds and the underlying classes etc. that it depend on builds.
I should not need to run the test cases manually. They should run in the background automatically every time I change something that relate to each method and the output (ok or not ok) should be listed in the same view as Errors and Warnings. Today VS2008 run the compiler in the background when developing VB.NET applications and continuously show a list of errors in the source code. I just want the same thing for method test cases.
When I am in debug mode, then I shall be able to right on a function call which has just completed and "Add to test case" and then the IDE shall automaticlly add that input/output as a new test case. Similar whenever an exception is caught in debug mode, then the IDE shall automatically add the test case of the function call, which resulted in the exception.
We would need this feature anyway if we want computers to be able to write their own software in the near future.

§3.
There should be an automatic refactoring feature. A tool that would be able to inspect a peace of source code and then be able to refactor it such that the same code was not written twice any where in the current project. (not one liners of cause, but it should inspect for patterns)
Then if some "stupid" programmer on my team, had copied my code from one method to another and just changed it a little in the second method. Then the computer should be able to automatically change this, such that the code would only be there one time. And me and the stupid programmer's code :-)), should be refactored to call the new common code snippet with parameters, which would allow them both to function as before.
- Next it should even be possible to also include one or several databases of code snippets in this pattern search. Such that the pattern search is not only done across my own project but also across one or several databases. (public or private)

--------

I think a small team of 3 - 5 programmers per feature above would be able to implement these as describe in approximately one year.
OK, so if it is true that these 3 features would save millions of hours for software developers around the world each year. Why are these features still not in our tools in 2009??

My conclusion is: Because we, mankind, have not found a good way to collaborate and push software innovation forward in faster and faster cycles each year.
One of the reasons for writing this blog, is because I want to present some of my suggestions on how we can collaborate and innovate much faster in the software industry.

Ingen kommentarer:

Send en kommentar