The Joy of Programming
A story of 40 years of coding and still feeling like a kid in a toy store.
My programming story begins
I love coding. I started coding in BASIC when I was 11 years old. I am from a fortunate generation, which was the first to have access to personal computers in their homes. I first started teaching myself BASIC on an Epson HX-20. The Epson HX-20 is regarded by some as the world’s first laptop computer. I still regret having sold this wonderful piece of computing history when I was in college.
I spent hours reading the manuals that came with the computer, and wrote my first program which calculated weekly pay with overtime. I was soon experimenting with the graphics programming capability of the computer as well. This is when I discovered the Joy of Programming. I was hooked.
Telling my story
I’m now 51 years old, and after 40 years of coding in 20+ different programming languages, I am happy to say that I am still hooked.
For the past twenty years, I have been telling stories about my career and love of programming to kids between the ages of 15 and 100. I always stress that I will “keep coding until someone pries my cold dead fingers from the keyboard.” This may sound a bit morbid, but gets the point across clearly. Programming is my passion and I am fortunate to be paid to do what I love. Over the past 20 years, I realized that in addition to writing code myself, I love to teach others how to code.
Good stories have heroes
The best way to predict the future is to invent it.
-Alan Kay, 1971
Pictured above is an XO laptop I bought during the One Laptop Per Child Give One Get One program in 2007. The program running on the screen is Squeak Etoys. Alan Kay is credited as the designer of Etoys, which was built in Squeak Smalltalk.
I was fortunate enough to meet Alan Kay while I worked at Goldman Sachs. He was invited to be on a Talks at GS Panel while I was an employee. I love that I can watch this talk and relive this experience at any time. If you don’t know who Alan Kay is, or just haven’t seen this talk before, you can see and hear Alan tell some of his story in link above. Alan Kay was kind enough to sign my XO laptop when I met him the same day as this talk— February 26, 2015.
Good stories often have heroes. Alan Kay is one of my computing heroes. I had no idea who Alan Kay was when I was 11 years old. I didn’t know who Alan Kay was until I was in my mid-twenties. For some reason, I was destined to learn about, be forever changed by and eventually meet my hero.
The 1980s
During the mid to late-80s, I learned a bunch of programming languages including BASIC, FORTRAN, COBOL, Pascal, Logo, Prolog, Dbase III+ and Clipper ‘87. I taught myself Dbase III+ in the mid-1980s, and then landed a job right after high school as a part-time consultant working with Clipper Summer ’87. This helped me pay for my university education at Rutgers Newark/NJIT.
The 1990s
After I finished school, I got a job working as a corporate programmer in the Rating and Underwriting department of Blue Cross Blue Shield of New Jersey (BCBSNJ). I start out programming in Clipper 5.x, and later would learn and program in the Windows version of Clipper which was called CA-Visual Objects. I spent all of my early career working in DOS, Windows 3.1, OS/2 and then Windows 95/NT.
In the mid-90s, BCBSNJ outsourced its IT department to Integrated System Solutions Corporation (ISSC) which later became IBM Global Services. I became an IBM employee overnight. At first, this was a bit scary, but it turned out to be a great opportunity in my career. Working at IBM would lead me down the path of learning the single most important programming language in my career. Along the way, that’s when I would I would discover who Alan Kay is and the impact he has had on modern computing.
In October 1994, I attended a 5 week hands-on immersion program in Object-Oriented Programming with Smalltalk. The program was part one of IBM’s Object Technology University. I spent 5 weeks in Atlanta, Georgia learning OO programming and design with IBM’s VisualAge Smalltalk. The classes lasted 6–8 hours each day, and we were taught by amazing industry experts in OO design and Smalltalk like Ghica van Emde Boas. I spent the other 4 to 6 hours left in the day coding and exploring VisualAge Smalltalk in the lab. I also read my first book on Object-Oriented Design written by Rebecca Wirfs-Brock during the 5 week program. Rebecca Wirfs-Brock is another one of my programming heroes. I consider myself fortunate to have signed copies of both of her OO design books.
Smalltalk cemented my love of programming. It is a beautiful language and immersive learning environment. I needed to share this new found knowledge with the world.
When I returned to work, I endeavored to find a project that I could build using IBM VisualAge Smalltalk. In the mean time, I continued building applications using CA-Visual Objects. I was now able to apply my new OO programming and design skills in this Object-Oriented language. I was energized and I wanted to share that energy with others. So I recommended sending more developers I worked with to the 5 week Smalltalk immersion program. After a year or so, I started working on a project building a Medicare Enrollment system using IBM VisualAge Smalltalk with two other developers who attended the Smalltalk immersion program. We brought in expert mentors from IBM’s Rapid Solutions Group to work with us. We leveraged and learned a persistence framework that they built on the project. It was a great learning experience.
I then went on to re-design and re-implement all of the Corporate Rating and Underwriting Systems I had previously written in Clipper, only now using IBM VisualAge Smalltalk. During this effort, which lasted about three years, we hired an expert consultant in Distributed Smalltalk. He was a mentor for myself and another colleague, and he taught us a lot about how to think about building and testing distributed systems. He also taught us about the history of programming and Smalltalk. This is when I learned who Alan Kay and Dan Ingalls were from him. Dan Ingalls is another one of my programming heroes, who wrote an amazing paper titled the “Design Principles Behind Smalltalk.”
Y2K+
In the year 2000, I decided to leave my beautiful coding life as a Smalltalk developer, to go code in Visual Basic and more Enterprise-popular languages like Java, because that is where the industry was focusing. My former Distributed Smalltalk mentor told me to go learn Java and become an expert in it, so I did. I was happy about the possibility of the future, but miserable that I had to code in Visual Basic and Java. I had traded in a flying DeLorean time machine for a Schwinn Bicycle and a Ford Truck. The bicycle looked new and shiny, but was mostly useless for anything but trivial apps. The truck could do a lot of heavy lifting but required a lot of gas (developer effort).
I joined Goldman Sachs (GS) in 2001. I started off as an application architect, was promoted to VP, spent a year living in London, became the CTO for Controllers Technology, was promoted to Tech Fellow, built an amazingly talented Core Platform Team, created an evolving presence for GS on GitHub, and was promoted to Managing Director. That’s about thirteen years in a sentence. I programmed for 15+ years in Java while at GS, and created a collections library in Java that was open sourced as GS Collections in 2012 and eventually became Eclipse Collections by the end of 2015.
Why did I create Eclipse Collections? After five years of programming in Java, I got tired of repeating the same coding patterns over and over again. I recognized much of what was missing in Java, because I had seen so many advanced features while programming in Smalltalk. I found it challenging to explain to developers at the time what they were missing in Java. So I decided to build a few of the features I was missing from Smalltalk in Java. I have taught many Java developers about Smalltalk, OOP, OOAD, Lambdas, TDD, Refactoring over the years. These were all things I had learned in Smalltalk in the 1990s.
The Joy of Programming
The most important lesson I have taught developers over the years is that Programming is Fun. If you are programming, and you are not having fun, then you may be doing it wrong. It may not be your fault. Ask for help. We are at our most creative when programming is fun. Creativity is play. We need to be creative to solve the complex problems we are faced with today.
I am very passionate about Eclipse Collections, but it’s not because I was ever particularly interested in collection frameworks. It’s because by using Eclipse Collections I can teach a Java developer how to have real fun while programming in the Java programming language. I have met so many Java developers over the years who either became managers or quit programming altogether because the language seemed to beat the love of programming out of them.
It does not have to be that way. I hated programming in Java for the first few years, but I never lost my love of programming. I certainly missed programming in Smalltalk and Clipper because they were so much more fun and productive to work with. I spent several years working on the Java Specification Request (JSR) 335 Expert Group (EG) with industry experts like Brian Goetz, Doug Lea, Dan Heidinga, Rémi Forax, Sam Pullara, Tim Peierls, Bob Lee, Kevin Bourrillion, Andrey Breslav, Vlad Zakharov and a few others. We all wanted to improve the Java language by introducing lambdas to make it more fun and productive to program in. I can look back now and say I helped the JSR 335 EG “invent the future” for Java. Now Java programming is way more fun, and much less pedestrian to work in since Java 8. But there are still so many developers out there who have yet to experience the joy. Help is available!
I still love Smalltalk, and I’m sure I always will. I have now learned to love programming in Java as well. I could have thrown in the towel and chosen a different language to program in, or a move to a completely different profession. I believed programming is fun, and I worked hard with talented experts in the community to help make Java more fun, not just for myself, but for millions of other Java developers.
Sharing is Caring
Do what you love. Love what you do. Get paid for it if and while you can. Pay it forward. Share your joy of programming with others. Motivate and inspire future generations to achieve all they are capable of. Then perhaps you might understand and appreciate the Joy of Programming as I do.
I gave a talk recently at the Pittsburgh Java User Group titled “Smalltalk or Java? Why not Both!”. There is a YouTube recording linked from the following blog. You can see me live coding in a Smalltalk IDE, which is something I haven’t done in a very long time. This is a great example of me sharing my Joy of Programming in Smalltalk and Java with others. If you take the time to watch it, thank you! I hope you enjoy it!
The Future
After 40 years of coding, I have decided to write a lot more frequently. I am on a personal mission to share as much as I can remember about Java, Eclipse Collections and Smalltalk. I am writing 1–2 blogs a month on Medium now. I will have been blogging publicly for the past five years by August of this year. I want to do my part to make the future better, and to keep the joy of programming alive for future generations.
I was given a wonderful gift seven years ago from one of my computing heroes — Alan Kay. The XO laptop he signed for me is something I will always cherish. Alan couldn’t know at the time, as he had just met me, but what he wrote on the laptop felt like a prophesy to me. He wrote “The future will be better. ” At the time he wrote it, my wife was preparing to enter the hospital a month later to have a stem cell transplant in her battle against AML. I needed to believe what he wrote. This signed laptop literally brought me to tears when I brought it home and shared the story with my wife. Alan had shared the gift of optimism.
Everything at any current time in your work or personal life may completely suck. Current events would seem to prove this the case for many, but the optimist in me believes what Alan wrote is true. The future will be better, but only if we work very hard to make it that way. If we work together, collaborate and invest in each other, we can invent a better future.
One of the joys I have learned about programming in Java that I hadn’t gotten to experience in Smalltalk is the joy of working with a large, collaborative and supportive community. The Java community is absolutely incredible. It is the gift that keeps on giving. I am humbled and honored to be a part of this vibrant community. Together, we will continue to make the future better for the entire Java community. The Joy of Programming continues.
If you’d like to read a detailed version of my Java story from the past two decades, I wrote about it when Java celebrated its 25th anniversary.
I am a Project Lead and Committer for the Eclipse Collections OSS project at the Eclipse Foundation. Eclipse Collections is open for contributions. If you like the library, you can let us know by starring it on GitHub.