I started programming computers way back in the mid-80s. I studied Computer Science (CS) and combinatorics & optimization (C&O) at Waterloo. For one of my later co-op jobs I ported a symbolic algebra calculator for a couple of years and had a great mentor who finally taught me how to code effectively.
Once out of school, I worked in the financial industry for a while, writing calculation engines, multi-process caches and did other systems programming. I switched to consulting (to get enough money to go traveling) and then eventually found myself as the CTO of startup.
That experience broadened my perspective on building software, so when I finished I decided to write a lot of it down even though I had never really written anything other than research reports before.
The difficulties in trying to get that book published lead me to start blogging about similar issues. The Programmer's Paradox was the name of the original book and my second blog attempt.
Over the years, and the many different experiences, my attitude towards programming has changed a lot.
I started out seeing the process as more of an art-form, but generally, as I gained more knowledge and a deeper understanding, I came to realize that even with the difficult systems, most of what we are doing was well understood at some point.
Software development is rather unfocused as a profession, which often causes us to ignore the fifty or so, years of built up experience and understanding. Once you've been building things long enough, the smaller problems are no longer as challenging, the answers are more obvious. It's the big issues that people keep ignoring that become important.
If I am trying to get say anything significant with these posts, it is that we are constantly forgetting that so many people have walked this path before us. I was guilty of that when I started, and I know a lot of programmers who fall into the same trap. As long as we continue to re-invent the basics, over and over again, we'll never be able to push past our current limited state of development. It's a problem that has changed little in twenty years.
If you have any questions, comments or experiences please feel free to comment. One of the best ways to solidify your knowledge is by trying to communicate it. It all sounds reasonable in your head until you try to write it down. That has certainly been a big lesson I've learned while blogging :-)