…so who is this guy?
May 24, 2010
Preamble: I will focus on the developer aspect of my personality in this blog. There is much more, but this doesn’t concern you. So lets this done, shall we?
—
I was a kid when I started programming those computers, utilizing some obscure BASIC dialect (in a graphical environment called “GEM” on an 8086 PC) in the 80s of the last century.
Obviously, I had no idea whatsoever I was doing, but… I learned the language without having a manual, I just had a short article about the BASIC language in a book about computers (a colorful one) and a few demonstration programs that were shipped with the interpreter.
However, soon after I managed to write my first “shoot the blue circle down with the red triangle” – game, an uncle of mine gave me Turbo Pascal 4.0 as a “summer is over, but take this for consolation”
gift and I could finally start learning a real programming language, that forces one to utilize at least a minimal set of structured techniques.
It almost feels like dialetictical materialism (note: I dislike the real world implications this philosophy has brought with itself, but the idea itself is sound, as long as it stays in the theoretical domain, so please try to differentiate between a theoretical thought and beliefs)… progress as a liberating process.
This was my first epiphany – while I thought “omg Turbo Pascal gives me executables and cool console programs” the REAL power it gave me was total structure. Usable and clear control statements, procedures, functions, variable declarations and “units” (modules, a bit like static classes, because TP 4.0 had no OOP yet).
Yes, it was liberating, being able to finally understand what the code was doing and being able to reuse bits and ideas.
—
The same thing happened a few more times, later in my life. First came OOP (with C++), then component based development (mostly COM), distributed stuff, design patterns, design by contract, agile development and (closely related) test driven development, to name a few.
My latest discovery was functional development… with a legacy that includes languages like Haskell and the amazing OCaml, F# arrived on the scene as a functional language that, for the first time, provides a full language infrastructure (first class virtual machine, full blown runtime library, user friendly development tools) we know by the name of “.NET”.
—
So, what am I going to do with this blog now?
My intention is to offer a different view on programming. Getting away from all kinds of so called “anti – patterns” and “code smells” (in fact, it IS possible to create complex software that doesn’t even have a single moment of bad style, malpractice and doesn’t smell, not even a tiny bit).
It is, however, a question of discipline and the willingness to reflect upon ones own methodology.
But it’s worth the effort. Even if some of the things that I will present here (and I will NOT present anything that I don’t practice in the most zealous way) may seem futile or dispensable at first.