Code Control Freaks vs Magic
I am a code control freak. If I don’t understand every aspect of how something works I can’t get comfortable using it. I don’t know a lot of programmers so I don’t know how common this is in the community. At work I program in ASP.Net using Visual Studio 2005, however, I only use it as a text editor (for the syntax highlighting and intellisense). I am not comfortable with the web project front-end since there is way too much magic going on in there. I don’t want to click a button and have the software generate a bunch of web pages, change some configuration settings and update the database. “Why?” you ask; because what if something goes wrong? I would have no idea how my own application actually works or where to begin looking for bugs. If you surf in a couple ASP.Net forums you will see a lot of users posing questions that show a definite lack of understand about how things work.
Magic in programming is nothing new, every time you use a library you are expecting it to perform the job correctly. You don’t know how it does this and if it fails you don’t know how to fix it. Don’t get me wrong, I love libraries and believe they make our lives thousands of times easier. I do, however, promote the idea of understanding everything possible about a system before turning it loose in a production environment. We’ve all been bitten by the devil in the details, guaranteed.
Today it seems that frameworks are becoming the way of the future for web development. The complexity of reliable cross-browser JavaScript has made it near impossible too know enough to write your own robust AJAX application so prototype and script.aculo.us just make sense. Ruby on Rails is the framework that seems to be the run away favourite with certain groups and is constantly being mentioned on digg, slashdot and others. Recently I have been looking into learning symfony a PHP Model-View-Controller (MVC) framework.
Frameworks utilize magic very heavily as I have come to learn in the last week. When you create a new project using symfony you first create a directory for it on your web server then you run three commands. The first generates the project, the second generates the application and the third generates a module within the application. Each command generates a host of directories and files auto-magically. This is where my comfort level drops to zero. Once I learn a bit more about how everything works and what files do what, when I will gain some comfort but currently it looks insurmountable.