I will try to explore my relationship with IT / software / computers / computer science / software engineering or whatever the best term is to describe it. I am in a mode of looking back with content, and making small changes, learning a bit more.
As often, thinking in 'opposites' comes most natural to me:
Self-study versus formal education. The IT and software industry is young and - I believe - had originally been populated by people without a formal training in computer science as this did not yet exist as an academic discipline. The community was open to outsiders with no formal training or unrelated experience. As a former colleague with a psychology background put it: In the old times, anybody who knew how to hold a computer mouse correctly, was suddenly considered an expert.
I absorbed the hacker ethics of demonstrating your skills rather than showing off papers, and I am grateful about the surprisingly easy start I had in the late 1990s. I just put up a sign in a sense, saying Will Do Computers, and people put trust in me.
I am not 'against' formal education though. Today I enjoy catching up on computer science basics by reading classics like Structure and Interpretation of Computer Programs.
Breaking versus building things. I have been accountable for 'systems' for a long time, and I have built stuff that lasted for longer than I expected. Sometimes I feel like a COBOL programmer in the year of 2000.
But I believe what interested me most is always to find out how stuff works - which also involves breaking things. Debugging. Reverse Engineering. Troubleshooting. All this had always been useful when building things, especially when building on top of or interfacing with existing things - often semi-abandoned blackboxes. This reverse engineering mentality is what provided the connection between physics and IT for me in the first place.
It was neither the mathematical underpinnings of physics and computer science, or my alleged training in programming - I had one class Programming for physicists, using FORTRAN. It was the way an experimental physicist watches and debugs a system 'of nature', like: the growth of thin films in a vacuum chamber, from a plasma cloud generated by evaporating a ceramic target bombarded with laser pulses. Which parameter to change to find out what is the root cause or what triggers a system to change its state? How to minimize the steps to trace out the parameter space most efficiently?
Good-enough approach versus perfectionism. 80/20 or maybe 99/1. You never know or need to know anything. I remember the first time I troubleshooted a client's computer problem. I solved it. Despite knowing any details of what was going on. I am sort of embarrassed by my ignorance and proud at the same time when I look back.
In moment like this I felt the contrast between the hands-on / good-enough approach and the perfectionism I applied in my pervious (academic) life. I remember the endless cycles of refinement of academic papers. Prefixing a sentence with Tentatively, we assume,... just to be sure and not too pretentious though I was working in a narrow niche as a specialist.
But then - as a computer consultant - I simply focused on solving a client's problem in a pragmatic way. I had to think on my feet, and find the most efficient way to rule out potential root causes - using whatever approach worked best: Digging deep into a system, clever googling, or asking a colleague in the community (The latter is only an option if you are able to give back someday).
Top-down, bottom-up, or starting somewhere in the middle. I was not a typical computer nerd as a student. I had no computer in high school except a programmable calculator - where you could see one line of a BASIC program at a time. I remember I had fun with implementating of the Simplex algorithm on that device.
However, I was rather a user of systems, until I inherited (parts of) an experimental setup for measuring electrical properties of samples cooled down by liquid nitrogen and helium. I had to append the existing patchwork of software by learning Turbo Pascal on the job.
Later, I moved to the top level of the ladder of abstraction by using *shock, horror* Visual Basic for Applications, ASP, and VBScript. In am only moving down to lower levels now, finally learning C++, getting closer to assembler and thus touching the interface between hardware and software. Which is perhaps where a one should be, as a physicist.
Green-field or renovation (refactoring). I hardly ever had the chance to or wanted to develop something really from scratch. Constraints and tough limiting requirements come with an allure of their own. This applies to anything - from software to building and construction.
So I enjoy systems' archaeology, including things I have originally created myself, but not touched in a while. Again the love for debugging complements the desire to build something.
From a professionals' point of view, this is a great and useful urge to have: Usually not many people enjoy fiddling with the old stuff, painstakingly researching and migrating it. It's the opposite of having a chance to implement the last shiny tool you learned about in school or in your inhouse presentation (if you work for a software vendor).
In awe of the philosophy of fundamentals versus mundane implementation. I blogged about it recently: Joel Spolsky recommended, tongue-in-cheek, to mention that Structure and Interpretation of Computer Programs brought you to tears - when applying for a job as a software developer.
But indeed: I have hardly attended a class or read a textbook that was at the same time so profoundly and philosophically compelling but also so useful for any programming job I was involved in right now.
Perhaps half of older internet writing reflects my craving for theses philosophical depths versus the hard truth of pragmatism that is required in a real job. At the university I had been offered to work on a project for optimizing something about fluid dynamics related to the manufacturing of plastic window frames. The Horror, after I had read Gödel, Escher, Bach and wanted to decode the universe and solve the most critical problems of humanity via science and technology.
I smile at that now, with hindsight. I found, in a very unspectacular way, that you get passionate about what you are good at and what you know in depth, not the other way round. I was able to possibly reconnect with some of my loftier aspirations, like I could say I Work In Renewable Energy. However, truth is that I simply enjoy the engineering and debugging challenge, and every mundane piece of code refverberates fundamental truths as the ones described in Gödel, Escher, Bach or Structure and Interpretation.
Once upon a time this category was intended to comprise what I had learned about philosophy. I had even aspired to study philosophy. Then came the dawn of the web and of unconventional philosophers of web culture.
I had also followed common wisdom, and my first FrontPage-generated business website had a section called Philosophy.
What's left of that, or what has been my conclusion?
I believe - in a pang of cheeky self-assurance - that I ought to have my own philosophy. Experience, business and otherwise, should be good for something. My philosophy does not focus on the grand questions of life. I might have had an argument with my former self, the idealistic student of science who aspired to change the world as a physicist, a profession I pictured as a cross-over of hands-on MacGyver theorist-philosopher-mathematician, ad-hoc-inventing smart tools whole mulling upon deep insights on universe and everything.
The unexciting truth is that my personal philosophy is explained best by summing up the different roles I have ever seen myself to take on, no matter what my job title was. None of them was about making profound changes to the world or being any sort of thought leader.
1) The Reverse Engineer
I have been told that I dismantled (tech) stuff already at a time I have no conscious memory of. I wanted to know how things worked, and I found a way to get there. Some of these activities morphed into a career later, the obvious one having been IT Security - the stereotype field for lone maverick nerdswho reverse engineer stuff. Even as a white hat hacker and so-called security consultant you have to indulge in the relentless black hacker's mindset - or you become a security bureaucrat, ticking off checklists and following rules. (Which dies not mean you should not know the rules).
But I could as well have turned into a tax advisor or lawyer, given my pleasure in finding out how such systems work.
I disagree with Keep To Your Core Skills, and I have often used 'wasted my precious time' by 'not delegating'. I hope or believe - delusionally - that 'actually' everybody has this pleasure of finding things out ((c) Richard Feynman). I am wary of marketing (tech) stuff to allegedly dumb or stressed out end-users who don't want to understand anything about underlying technology. Perhaps I am talking to less than 10% of people, but after all this is about my personal credo.
2) The Mediator
One of my first ever fantasies as a child that came close to something like a career was being kind of a negotiator or diplomat. I am not kidding: I dreamt about settling peace treaties between Mickey Mouse and his sinister opponents in his cartoon world.
This has impacted any of my jobs, but it finally surfaced expicitly when a client booked me 'for another mediation', which was in fact the follow-up of a very technical meeting.
I had considered yet another training or degree, in coaching, psychology, or the like. However, I am glad that I never left technology for good (see 1). There is a paradox: People want such 'tech project psychology' services. However, they will not buy it if labelled as such yet happily use them if they come as a hidden by-product of technical consulting.
3) The Communicator
Maybe principles 1) and 2) can only co-exist if you bridge them with a lot of talking. During most of my career 'teaching', 'training', or 'lecturing' had been part of my official duties or a side-project done in moon-lighting fachion. I stopped teaching when I became a moonlightung student again. I have also realized that I am not cut out for
over well managed, structured, quality-assured educational systems. I suck at keeping to my own agenda, and I beg for being carried away by hard off-script questions.
I was not the best class-room teacher, but I think I was good at informal, jam-session-style train-the-experts sessions.
Projects I remember most fondly were those where clients were not only interested in The Tech Guy Who Will Fix Everything but also in my pontifiating on fundamentals, even if that was not required to get the job done. But as I said above (1) - I believe it's always worth it.
4) The Organizer and Automator
When I was a child, I was not called upon to tidy up my room: Not only was I self-motivation to clean it - Mr.Monk-style - but I rather re-organized my cabinets quite frequently. It was Feng Shui of Decluttering meeting obsession with structure, and it has not changed to this day.
I have extended these principles to the virtual world as soon as I had 'data'. Writing a tool, script, program to automate something is second nature. Some sort of software development has always been part of my jobs - just as teaching was, but I found out only recently that I like data analysis and programming much more.
Proficiency with interpreting and manipulating data, and with using or fixing software is part of our culture and should be trained and valued just as other basic technologies and skills. And of course I believe that we, each of us, really needs them! But perhaps it is just my bad luck or my high standards... Every time I just to use and application or service as a normal end-user I end up with low-level troubleshooting.
I am aware of the picture of the obsessed nerd that I have painted here. I don't underestimate subtleties and human nature though. But nowadays soft skills are so often praised to the skies and people with 'big ideas', rather than nitpicking detailed persons, so as Subversive Element the contrarian stance comes natural to me. Even the most empathic coach who tells burnt out IT guys not ot overdo perferctiomism will be very happy if a neuro-surgeon or airplane engineer are totally obsessed with flawless technology.
I am a true professional: I am the total antithesis of a dilettante and an amateur. (Ha! Mike Daisey! Greetings from ElkeS)
An expert is a specialist and proud of not being a so-called generalist. Generalists is what the cowards call themselves: Those wimps that found the exit from permanently living in emergency mode, from really knowing it all and having to know and to fix it all. But I am not like that. I am the hero of troubleshooting.
But I am putting my hand on machines. I am wearing rubber gloves. By sheer thought power only I am able to penetrate into the nervous systems of these modern NOMADs. This is like in CSI – you remember the close-ups of blood vessels or electrical wiring. Then I track down and kill the enemy made from zero's and one's.
I am Trillian, I am Lara Croft, I am Ms. MacGuyver. And I put pizza into the microwave oven like Sandra Bullock in The Net. [Insert here: Something on the Improbability Drive, 42 or HAL].
I should not have any contact with human beings; I should not be human myself. I should live as an avatar only. I should inherit my mind to the world – to be uploaded to the internet. And as a compensation for all those heroic deeds I receive: Money, fame and glory without limits. People that owe their lives to me. And flowers. And an e-mail with some managers on CC. Until the next tsunami approaches the shore.
How did I ever end up in this geek paradise?
And where is the exit, the shut down button?
Get me out of here. Please.
I have studied physics and worked in Research & Development for some years before I turned to IT. I cannot call myself a professional scientist any more though I have been involved in science / the scientific community a bit here and then. (Edit 2019: Links broken.)
Natural sciences, physics and mathematics in particular are what I consider to be the core of all sciences. The way of thinking that I learned to apply to theoretical and real-world problems during my studies still influences the way I tackle any problem.
These are the results of my dedication to science:
So I do still love the following:
- Clarity and precision, 0 or 1, yes or no.
- Translating real-world problems to formal, self-consistent, preferred mathematical representations.
- Really understanding what I am talking about as a result of theoretical investigations, intensive learning and hands-on experience.
As a logical consequence I am not overly tolerant when it comes to
- So-called politically correct way to convey facts by adding lengthy explanations, most often as a result of too much soft skill centered psychological training (Well, I think we should probably change the warp core threshold value before the spaceship crashes - but only if you don't mind and this does not hurt your feelings too much)
- Vague, inexact theories of life, the universe and everything, especially if these theories are inherently inconsistent.
- Having to listen to somebody explaining (for example) quantum physics to me if this person has read one popular science book on the subject.