Many of you may recognize the reference to a well known movie in my post title. Yes, I am a huge Hobbit and Lord of the Rings fan. However I used that title not to discuss the merits of the movie but to look back on my own “Unexpected Journey” as a Software Developer. I thought the best way to look back upon that journey would be in the form of my answers to these few questions:
1. How did you get started in app development? What’s your background?
My career as a software developer started way back in 1985 on a Commodore 64. I returned home after being homeless on the streets of New York City, only to find that my parents turned my old room into their home office. While looking for work during the day I played games on the Commodore 64. Unsatisfied with the games available on the C64 I set out to create my own. Along the way I discovered that I can do so much more with that modest home computer than just create and play games. I discovered the Assembly language and I was hooked – “Phenomenal cosmic powers. Itty-bitty living space”. From that point on I set out to learn all I needed to know about creating applications that would benefit first my parents and then the community.
My first full-time programming job was at Providence Hospital in Washington DC using an RPG-like language (so long ago I don’t remember the name). A few years later I got a position as a Technical Trainer at Howard University. I taught the teachers how to use the “cutting edge” applications of the time (MS Word, MS Excell, etc). During that time I also created a small application for the Howard University football team using FileMaker. This was my first, but short lived, introduction to the world of Macintosh computers.
Years later the world was introduced to the drag and drop, point and click, graphical interface known as Windows 3.1. Not long after that pivotal point in computer history I was introduced to the drag and drop, point and click, integrated development environment known as Powerbuilder. The idea that I could create applications by designing the interface was a Eureka moment for me. I was hooked and spent the next 10+ years developing exclusively in Powerbuilder. During those 10+ years I worked hard to create highly visual applications for organizations such as Providence Hospital and the State Department. I started and ran a Powerbuilder users group as a way to give back to the development community. I taught Powerbuilder classes at the Dept. of Agriculture. Powerbuilder was king and I was loving it! Towards the end of this period I entered a contract with the National Institutes of Health (NIH) to create and support existing Powerbuilder applications. This was in 1999 and I began to see how pervasive and powerful the world wide web was becoming – I could create applications that the entire world can see! I then met a man who would change my development career forever.
In the late 90s I started to become disillusioned with the path Powerbuilder was taking. Sybase bought Powersoft and it seemed as though developers such as myself were abandoned. While workin at NIH I met a developer named Scott who was a ColdFusion developer. I was intrigued with the concept of creating server-side code that would deliver web content to the browser. I was hooked and thus began my conversion from client-server development to web-based development. Although I continued to support existing Powerbuilder applications I dove head long into the world of ColdFusion web development. I created dozens of applications using ColdFusion but I missed the rich GUI application interface builder that Powerbuilder gave me. So I began to learn Flash. I focused on creating Rich Internet Applications using Flash on the client and ColdFusion on the back end (I couldn’t escape the client-server paradigm) . Again I spent the next 15+ years creating highly visual web apps not only for NIH but also other clients. During that time I became a certified ColdFusion developer, gave hundreds of presentations at user groups, and gave several presentations at local developer conferences. I also engaged myself in other related technologies and platforms such as Flex. Upon the release of the Flex Builder IDE I thought it was uncanny how simular Flex Builder was to Powerbuilder. The spirit of Powerbuilder lives again! I though I would be spending the rest of my career developing Flex applications with a ColdFusion/MS SQL back-end … until I started working with my next and still current client.
This client hired me to be a part of their Research and Development team. I created a few prototype applications using Flex with Erlang on the back-end. I was asked to use my knowledge and skills as a game developer (so man years ago) to create bleeding edge, 3D representations of their vision using Flex and Away3D. We soon found these tools to be too limiting and not scalable enough for what we needed to do. We needed an app that was cross-browser, cross-platform (desktop, laptop, and mobile), and cross-OS (Windows, Mac, iOS, Android, etc). So I put Flex aside and eventually reclaimed my knowledge in web development technologies.
2. Why did you choose to create the kind of apps you’re creating (health, games, education, etc.)?
My inspiration for the applications I’ve created came first from my mother’s need for applications that would help her run her business and then later from my role as a husband (of over 20 years) and father of two. Throughout my career I have created and supported all kinds of applications, from puzzle type games, to serious productivity, to educational apps, and even a large singles dating site. No matter what I create I always ask these two questions from a user’s point of view, “Why should I use this application?” and “Would someone in my family use it?” The answer to these questions drive the design and development of all the applications I have ever created and continue to build.
3. What are some of the obstacles you face as a developer that you wish you could change? Are there resources you would recommend?
One of the biggest obstacles I have encountered during my career as a software developer is the development community itself. A proliferation of software platforms, frameworks, and libraries have given us unprecedented freedom of choice. However with that we have lost some degree of standardization and synergism. Poor or lack of documentation just seems to exacerbate the situation. I’ve spent a good part of my career having to read, understand, and modify other developer’s code, many times with no apparent structure within their own code. So many times I’ve seen code that is not modularized or componentized resulting in what is commonly known as “Spaghetti Code”. I admit to, at times, being guilty of such “crimes” myself. I don’t wish to see a reduction in the choices we have in our development tools nor do I wish to take away any personal expression of development styles. I only ask that we ALL consider the fact that there will always be someone else who will be working in “your code” (or some version of it) long after your gone.
4. Some of the latest technology is exhibited at CES. What would you like to see as the best new technology at CES 2022?
Wow! 2022 is like a technological lifetime away. I believe that by 2022 a great deal of the power to create and deploy applications will shift to the users themselves. Tools and platforms will arise that will allow the non computer programmer to design and build applications. These application will communicate, collaborate, process, and live in all kinds of devices and objects, including those you would never think of having computing power. Imagine a hardware and software solution that delivers highly localized, pertinent information to you through an small earpiece no matter where you are in the world. Or being able to exchange digital information with another just with the shake of your hands and immediately access it through special glasses that create a virtual interface in front of you. Can you tell I watch a lot of science fiction movies? It’s not science fiction, it’s becoming science fact. We’ve already started living in the world of Star Trek with cell phones as communicators and medical tricorders. I am still waiting for my Jet Pack and Hover Car though.
5. What do you, or app developers generally, need most in order to have continued success?
I believe that the most important factors for continued software development success are: Support, Collaboration, and Focus. Support – This includes documentation and forums that are created and maintained not only by the tool creators but also by the development community itself. Collaboration – It has been proven time and time again throughout history that we as a society thrive and benefit more by working together instead of against each other. Focus – I believe that software designers and developers we should seek to maintain focus within their apps. Do one thing well and excel at what you do, my mother taught me. I’ve seen so many applications and technologies grow to become so much more than it was ever intended to be. The result is a bloated, uber tool that does everything good but nothing well.
Well, if you’ve gotten this far I can assume that you either read my entire post or you “skimmed” through this post to get right to the spoilers. Sorry, no spoilers here. We must all take our own journey and discover and learn from those experiences along the way. I hope to chronicle my continuing journey in the posts of this blog – to seek out new software and new platforms and to go where no software developer has gone before (cue rise in music).