How To Instantiate a Programmer
In the world of comics, every superhero and villain has an ORIGIN STORY. It's a specific event or combination of events that culminate in the creation of a Superman. Or a Batman. Or a Lex Luthor.
Superman's parents knew their planet Krypton was going to end in a cataclysmic destruction, so they prepare to launch their son, Kal-El, in a spacecraft targeted for the planet Earth. The unique characteristics of our sun, give the extraterrestrial baby, superhuman powers.
When his small spacecraft arrives on earth and crash lands in the little town of Smallville, two humans, Jonathan and Martha Kent discover his spacecraft and become his adoptive parents, and he becomes Clark Kent. When Clark Kent gets older and discovers his true origins, he realizes he's not meant for a normal human life. He realizes he can use his superpowers to help others and save lives.
Batman has his own origin story. As a young boy, Bruce Wayne, son of millionaries, Dr. Thomas and Martha Wayne, watches in horror as his parents are gunned down in a darkened alleyway. This single event drives Bruce to use his family's wealth and resources, to fight crime in Gotham City as the Batman.
Of course, we're talking about the world of comics here.
But it made me think about how I ended up in the world of software development. Frankly, I'm still a little bit surprised I ended up where I am. I never intended to become a software developer. I actually majored in English Lit and aimed to end up in the world of journalism or public relations
But looking back at my life, I've discovered I have my own software programer "origin story". And I have a hunch that most, if not all other software developers, have their own origin story as well. And getting a better understanding of this, may be key to encouraging more people to get into the field as well.
I believe that my love of programming computers goes back to the first time I encountered one of the first commercial arcade cabinet machines back in the late 1970s.
It was called Space Invaders. I saw it while I was walking with my mother in a shopping mall. It almost beckoned itself to me, with its flashy, brightly lit monitor and the hordes of little digital aliens that marched their way down to the little videogame player you controlled with the joystick controller and fire buttons.
I've never seen anything like it. It absolutely entranced me like few things ever have, to this day. I begged and cajoled my mother to give me quarter after quarter, to play it.
I was actually a kid in the golden age of arcade videogames. I feasted on other great classic games of the day... Galaga, Donkey Kong, Pac-Man, Centipede and many others.
Every weekend, I would beg my parents to take me down to the local shopping mall where the local videogame arcade hangout stood, and I would feed the coin slots with my allowance of quarters, and play till the quarters ran out.
As I got a little older, I started to wonder how these games were created. It seemed incredible to me that people could create these wonderful and engaging games out of thin air!
My childhood coincided with the dawn of the personal computer age. Before personal computers, access to computers were pretty much limited to universities and the military. They were big, hulking mainframe systems, that filled up entire rooms and needed an army of staff to keep them cooled and up and running.
When Steve Jobs and Steve Wozniak introduced the first Apple personal computer to the masses, the personal computer revolution began in earnest. Soon, computers were available to the masses.
Programming a computer was no longer limited to the digital "priesthood" who serviced those hulking mainframe systems.
Having gotten a taste of those incredible arcade videogames, I wanted to know HOW those videogames worked. And the personal computers coming onto the market were the gateway to that knowledge.
Again, I begged and cajoled my parents to get me one of those personal computers. After torturing them with incessant pleas on my part, they finally gave in, and my mother purchased an 8 bit Commodore 64K computer.
As the name hinted at, it came with 64K of onboard ram and the CPU ran at 1mhz. Absolutely jurassic, even compared to the lowliest computers and smartphones we have these days. But it was programmable!
It even came with a built in BASIC language interpreter. You could literally start coding, using the BASIC programming language, and see immediate feedback of your creation.
I started to create rudimentary videogames that didn't even involve displaying graphics. Like number guessing games. Hangman games. It taught me things like control structures, like if-then statements, loops and using variables....things that are still as relevant in a programmer's toolbox today, as they were 30+ years ago.
My love of videogames was probably the key trigger behind my programmer "origin story". It encouraged me to continue learning about the field of software development.
In college, I took an introductory course in computer programming. I learned about logic gates, and things that happened on the computer processor at its very most basic level.
I used a programming development environment on a Macintosh called Hypercard, which allowed you to design user interfaces, using drag and drop controls. It also taught me how event driven programming works, which all modern operating systems and applications continue to use to this day.
Suddenly, I realized that maybe you don't have to be a computer genius to enter the field of software development. What it takes is the DRIVE and ENTHUSIASM to push you to continue to learn new things.
Conclusion
There's been a lot of stories and commentary about the lack of minorities and women in the wide field of technology. It's still a real world problem that won't fix itself. As a developer down in the trenches of professional software development, it doesn't take a professional statistics taker to see that it's a real problem ... all I have to do is look around at other coworkers and see it's a field definitely male and white dominated.
There won't be some "silver bullet" solution either. It will take time and dedicated effort to encourage more women and minorities to enter this field.
We certainly have the technical tools .... I'm actually envious of how rich the technical resources exist these days for today's software developers. We have the resources of the entire internet available at broadband speeds that were unimaginable back when I was a kid. And computers and smartphones that are far more powerful and connected than even the fastest supercomputers of the day. And computer languages and developer tools that are completely free and there for the plucking by anyone who wants to start down the path of learning how to program computers.
But that's only half the equation.
If my own personal experiences have taught me anything, we're all going to have to think about how to ignite "software developer origin stories" for women and minorities as well.
There's been a lot of talk revolving around introducing more computer science in public education. Companies like my own, are hosting hackathons that are bringing in lots of young women and minorities and exposing them to what is possible.
The key is to find that "trigger" in someone that ignites that passion for technology. Mine was videogames. For others it will be something else. Planting that seed of enthusiasm is key.
Uh oh, just got paged about a bug...where the heck is my cape?
You should always use dependencies, programmers hate being newed up ;-)
What few point out on the subject of diversity is that the first computer programmer ever was a woman. Everything we do today is descended from Lady Ada's work.