Coding is dead !
Does this sound like a strange thing to say ?
I don’t think so and here is why. As a long time WIN32 programmer (using PowerBasic) I at times have tried to look into other programming languages used by the mainstream. I purchased an older version of C# just to play with and decided to watch some beginner videos online to see if I can make sense of how to use it. Remember, that I am a coder. When I say coder, I mean coder. I can build complex applications even without the need for a Visual Designer or a Code editor with a ton of wizards and intellisense. Now I am not against the use of Visual Design tools. A good RAD visual designer makes UI layout quick and easy and is a must for most development, particularly when an app has a lot of forms in it. But for a simple app with say one form and a limited number of controls there is no reason why a programmer shouldn’t be able to code the entire thing by hand without the need for a Visual Designer. I also feel that library code should be as small as possible so one does not have to always resort to some kind of intellisense based code editor just to be able to use the language.
The sad thing is though is that Microsofts current mainstream programming languages (aka. Visual Studio) are less of a coders tool and more of an application builder where the user does more drag and drop and select from lists (intellisense) than actual coding. Just watching a few videos online trying to learn C# is quite daunting. I have to pose the question. If developers spend more time dragging and dropping and selecting namespaces, classes and methods from drop down lists than actually writing code, how good is the code they eventually have to write ? Personally, I feel that the art of coding may be dying. But does it have to be ?
I find that before using a RAD development tool, a programmer should be able to write a workable app without such an environment. One should be able to write an app using just a simple code editor (no intellisense required) and a minimal help document for reference. One should fully understand how the app really works at a low level, but also how the code execution really flows. Where does you app start ? How does the app create a window and populate it with controls ? How do those controls send events to the app ? How do you respond to those events ? How do you make the controls do something ?
The overuse of OOP has turned programming into a complex mass of classes and objects so that programming itself seems to disappear.
Now you might say, but what I suggest is impossible, nobody would be able to build anything in Windows ! Not only is what I suggest possible but I and my customers do this.
When I designed EZGUI (GUI engine for use with PowerBasic), I designed it do one could actually hand code an entire app. I actually have some customers who prefer to hand code the entire app and they do a very good job of it. I did also add a Visual Designer to the mix, but only because a RAD tool like a visual designer really does make sense, but not as the only option, but simply as an addon for those who need faster development. Yet being able to handle code the app helps one learn how things really work. You understand the code flow better too.
There is another advantage to learning how to hand code things. Programmers who are simply glued to a RAD environment will tend to have too great of expectations of the design environment and will more likely be poorer coders. Why ? Because instead first considering how to write some quick code to solve problems, they will tend to expect more from the RAD tool expecting it to do all the work. Nothing surprises me more when an end user requests some new feature for the RAD environment which could easily be done with justa few lines of hand written code. If a RAD tool has to solve all problems so programmers don’t even want to write just two or three lines of code, then definitelly “coding is dead” and maybe this is part of the problem with programming today.
I am curious too. Those who strongly defend object oriented programming as the only way to code, do they say this because OOP is so proficient when it comes to coding or possibly do they say this because of one of two other reasons. Reason #1, they want the language and libraries to do all the work, so rather than write some code themselves they simply want a new object to be created to solve their problems (aka. don’t want to write any code themselves). Reason #2, maybe the idea of writing everything using classes and objects is more preferable since so much thinking has to go into design of the object first and this means that actually writing code is a much slower process. One can take all day to create that amazing object class, which only does some simple task, where a procedural programmer who is a real coder would have written 50 or 100 lines of code to do the same task in about 30 minutes.
Ok, maybe what I am saying is a bit strong and surely there are many good coders out there. Yet I do wonder about the state of programming today, when a seasoned procedural style programmer like myself finds even the simplist tutorials on a new language just totally confusing. I really do not see what all the fuss is about with todays managed languages. Visual Studio is not friendly to new users. Who came up with XAML anyway ? Have we been forced to go back to scripting languages again ? (XAML is a form of scripting and a very complex one at that) ?
Yes. maybe coding is dead !
Coding can be fun ! Coding is powerful ! Coding can actually be fast too !
Coding need not be overly complex either. It is possible to define a library for coding which is small in size, easy to understand and does not require documentation the size of an encyclopedia.