Mentality of programmers depends on a programming language or tool they use. Should they even try to learn what’s under the hood in a particular framework?
Ten years ago I’ve been programming in PowerBuilder. This is a RAD tool and it does a LOT for you automatically. Creating a simple CRUD application there is a matter of one day (hello from the 90th, RoR). Anyway, I did not care HOW PowerBuilder did it under the hood.
Then I switched to Java and started to spend all time programming this “under the hood stuff “. I’ve learned how to MANUALLY program servlets, JSP, EJB, et al.
Last year, I was working on a project that was using WebLogic’s Workshop 8.1 (not a good tool), which was also providing a lot of auto-generated functionality. But after so many years of writing everything manually, it gave me an uneasy feeling: the tool was instantiating some objects (if I remember correctly they were called handlers) internally, without even providing the Java source code for that. One day we started getting sporadic NullPointerExceptions caused by these internal objects. That time I felt very insecure – nothing depended on me (in my PowerBuilder life this would be perfectly fine – my mentality was different). Tech support guys kept asking me to reproduce the error, but it’s really hard…Neither level1 nor level2 support was able to help me with their own framework
These days Java has fifty frameworks that do the same thing as Struts. This is insane. A couple of days ago I ran into an online posting by a Delphi programmer who wants to switch to Java Web development. He “s asking if he should study Echo2 or Wicket framework. He “s not even planning to learn the basics such as Servlets and JSP. He does not even want to understand how Java Web applications work under the hood. Yet another wannabe framework coder. Yet another dispensable commodity. This was your choice, but do not complain when you lose your job because there are legions of programmers in India having the same or better understanding of what “s going on in a Web application and can do this job for a half price.
Now I’m using another RAD tool called Flex 2 from Adobe. It has an XML-based declarative language called MXML that gets compiled into the object-oriented ActionScript 3, which in turn gets compiled into a bytecode and runs in Flash Player, which is a virtual machine. But the good news is that mxml compiler has a special option to keep the generated ActionScript code. Plus, the source code of Flex framework itself is available as well. This gives me some confidence and understanding of what’s under the hood, and I can debug it if need be.
The morale: use a framework or a RAD tool to make your day-to-day life easier, but know how it works internally…just in case