The stone age developer is me and I just found software development nirvana! From the early 80s to the mid 90s I was a software developer. In the mid 90s to now I have been in numerous management and architecture roles which have kept me out of the world of coding. This week I dove back into coding and have totally embraced how productive the new world is versus the environments that I coded in back in the day. Here is my story.
Back in the Day
I cut my teeth in software development on the mainframe building COBOL programs with IMS and DB2 databases in the 80’s along with some dBase and Clipper on IBM PCs with very little memory. In the 90’s I moved into the client server world and developed in C and Unix. I dabbled with FoxPro on some moonlighting gigs and was just starting to get into the Microsoft world with Visual C++ and early versions of VB before I got into management. Throughout my development days, my working environment was always constrained by access to large databases on large servers and controlled by DBAs and system administrators who cared more about rules than productivity. The Internet was just starting to get into homes and dial-up was the way to connect. The development environments were highly dependent on commercial software being installed on expensive hardware and the toolsets were very limited (and usually expensive too). The languages were very verbose and coding simple functions took many lines of code.
Today it is a completely different story. I am 100 times more productive developing on a simple netbook. I have no dependency on database servers, commercial software, or anything else. My only constraint now is simply time. Take a look at this environment;
- Lamp Stack – Linux Apache MySQL Python
- Django – Python Web Framework
- Piston – Django Web Service Framework
- Unfuddle – Git and Subversion SaaS
- Basecamp – Project Management and Collaboration SaaS
- Amazon AWS – Virtual data center – IaaS
- FileZilla – FTP tool
- Pingdom – Web Performance Monitoring SaaS
- Ubuntu 10 – Operating System
All of these tools are either free open source or pay as you go cloud computing services. What makes it even better is that my entire development environment runs on my netbook which means I can code and test when I am on a plane without having to be connected to the Internet. I have a full functioning MySQL server and Apache server running. I can prototype, build, test, and stage on my netbook. Once I have connectivity I can upload my source to Unfuddle either by using SVN Workbench or command line and then migrate to production once everything is reviewed and approved.
I also can download and try various other open source productivity tools with ease thanks to the Ubuntu Software Center (MySQL Administrator, MySQL Query Browser, various editors, and many others). My colleagues and I communicate via Skype , FreeConferenceCall.com, and our corporate email/calendar is another SaaS solution, you guessed it, Google Apps.
How does a CTO have time to code?
Look at our environment! I have no datacenter, no servers, no 3rd party software to manage. Business continuity and disaster recovery are built into our architecture and managed dynamically in the cloud. Our voice system is outsourced and we all use our own mobile phones (we have iPhones, Droids, and Blackberries – who needs to standardize?). I don’t have time to code a lot because I do have many other responsibilities, but I can knock off the small jobs that need a resource to get off the long list of open tickets.
For those of you who never stopped coding, you are probably saying “big deal”. But imagine being frozen in ice for 15 years and coming out for the first time to see how much the world has changed. Well that’s how I feel in this modern day development environment. I feel like a kid at the candy store. Although, I am a little rusty and am a noob to Python, I can still get stuff done faster than before. I owe it all Python and it’s nimble syntax and my escape from corporate America. The Corporate America that I lived in was very resistant to open source, loved expensive commercial tools that I could not install on my own hardware, and chose to standardize everything at the expense of productivity. In this new world, I have everything I need to develop faster and test better on my dinky little netbook…connected to the cloud. This is nirvana!