What I Learned from Working in Failed Platforms

Recently, Adobe announced the end of Flash (sort of) as well as the end of their Edge tools and services. This marked a milestone of sorts for me – the end of a number of products that played important roles in my career (for instance, I was the Flash Community Manager at Adobe around the time of the infamous Steve Jobs letter).

It also seemed like a good opportunity to discuss the often hard earned lessons these experiences taught me about the most important skill a developer can have to thrive in this industry – adaptability. In this article, I want to share a little of the experience of a career littered with failed technologies and the lessons gained through these experiences.

As developers, we’re a passionate bunch. I’d say that, as a group, we can be much more intense about our work than the average person. This passion is part of what makes the developer community so exciting, but it also can lead to a belief that my platform is the best platform. Maybe it’s part of doing a job where every problem has a thousand possible solutions that makes us so certain, sometimes, of the particular solution we chose.

We’re often so tied to our particular platforms or solutions that we even add them to our title. I’m not just a developer, I’m a web developer, a Java developer, a .NET developer, an iOS developer, etc. Sometimes, we’re so certain that we’re even willing to narrow that down to a particular tool on a particular platform. I’ve often heard people refer to themselves as a Rails developer or an Angular developer, for instance.

But what happens when this all goes south and the technology (or technologies) that you’ve tied your career to, your title to, and perhaps even part of your identity to, suddenly becomes inviable?

It Can’t Happen to Me

In the here and now, it can be hard to imagine your beloved languages, platforms or frameworks becoming irrelevant or completely going away. But we work in a fast changing industry and my own personal experience has proven that things can, sometimes, change literally overnight. Before I get to the lessons, let me share some of my story.

I started as a hobbyist developer back around 1996.

yoda

First I started toying with basic web development with HTML and then a little bit of Flash (which didn’t even have variables at the time). Eventually, I decided that I wanted to do this for a living. I had a friend who convinced me to take a Fast Track to ColdFusion course – ColdFusion was hot back then. This led to the first of many full-time positions as a ColdFusion developer at companies as well known as Hasbro and Sun Life Financial.

I loved ColdFusion and the ColdFusion community (the latter I still do). I spoke at conferences about ColdFusion. Wrote articles about ColdFusion. Even ran the ColdFusion User Group in Boston.

I was, truly, a ColdFusion developer – meaning, my entire career depended on the success or failure of ColdFusion.

The thing is, ColdFusion was not a growing community. From the days at Macromedia and then at Adobe, it was constantly hampered by rumors that it was being eliminated – though, in fact, new versions are still being released to this day.

princessbride

Tired of fighting about ColdFusion’s future and whether it was still relevant or not, I decided to move much of my effort to Flash and Flex. You may laugh today but in 2006, Flash had a strong, growing and vibrant community, and Flex was leading the long list of "rich internet application" solutions like Silverlight and JavaFX.

Just as I had been on ColdFusion, I was "all in" on Flash and Flex (and eventually AIR), writing, speaking and even founding a conference in Boston focused on the technologies. These efforts eventually led to my being hired by Adobe as a Flash and Flex Community Manager in 2010 – yes, when Steve Jobs posted his famous (or infamous) Thoughts on Flash.

While the atmosphere in the community and at Adobe was intense, nothing changed immediately. The Flash community was still active and strong. Companies were not yet ready to abandon Flash entirely, and Flash on Android seemed like it might actually become viable option.

Then, one day, this happened.

nothing2

Well, not literally. But there was a massive reorg. Mobile Flash was dead. Flash itself was now focused on gaming and video exclusively. Flex was no longer being developed. Adobe was investing heavily in web standards. And my team was almost completely eliminated.

I went from one day focused on Flash and Flex to the very next day, on a different team, focused on very different technologies.

Sadly, in my short (ok, not that short) career, the list of technologies that have come and gone is long. Flash, Flex, AIR are gone. ColdFusion survives but seems to be fading further. All their related frameworks (Fusebox, Mach II, Cairngorm, RobotLegs, etc.) gone… Did I mention I worked in Director and Lingo early on? Let’s forget about that.

Sometimes it feels as though I was deeply involved in every failed technology during the past 20 years. But the experience taught me some valuable lessons – lessons that I often feel many developers today have not yet had the opportunity to learn. At the risk of sounding like a crotchety old man, I’d like to share them.

oldman

Lesson #1 – Be Open-Minded

Articles or attend sessions that pit technologies against each other can be fun – why React is better than Angular; why Ruby is better than Python, etc. But it’s important to keep them good natured. This means that, even as you advocate for your preferred platform/language/technology, you also keep a healthy skepticism about it.

In other words, the other options don’t "suck" and other people aren’t "stupid" for using them. It means that you understand that every developer and organization has a different speed at which they are comfortable adopting new technologies – and no one is an "idiot" for being a couple versions behind or for not updating to the latest, hot framework.

Being open minded, means being civilized in our discussion of technologies, knowing full well that our preferred choice now could be a dead choice in the future. This is important because the very people you disagree with today may be your colleagues tomorrow.

When the Flash changes came (i.e. around the time of the reorg), the community effectively split into three groups: 1) those who were prepared to move on to web standards and did so quickly; 2) those who were taken by surprise but gradually, if somewhat reluctantly, made the transition and 3) those who were angry and refused or fought the transition. I can practically guarantee that the first two groups fared better in the long run – in fact, many of them became leaders in the JavaScript community (including my colleague Cody Lindley), bringing some of the unique expertise that the Flash community had in the areas of animation and interactivity to the JavaScript community.

Lesson #2 – Try New Things

Quite frequently, we fall into a choice and then rationalize that it is the "best" option after the fact. Then, once we become deeply immersed in a particular solution – once it has become, for better or worse, part of our identity as a developer – it can be hard to see its shortcomings or the benefits that alternatives may offer. This can make us myopic and put us at risk if the day comes that our "best" option is no longer a viable option.

Despite what some job postings might imply, you don’t need to be an expert in everything, but you should at least venture into new territory from time to time. For example, create a small, fun side project in a language you don’t know. Or try working through the getting started guide of a framework that you’ve been hearing a lot about. Or take a video course about a tool that you’ve never used before.

The goal isn’t to change your mind or move in a new direction, but to keep you aware of how the landscape around you may be changing.

Trying new things can also prevent us from getting overly dogmatic about our choices, which can help lead to a successful career. For instance, I have spoken at one of the main ColdFusion conferences, cf.Objective(), which is now dev.Objective(), over the years, even long after I’d basically stopped doing ColdFusion. Many of the speakers and even the attendees at that conference in recent years were ColdFusion developers who had found great success in areas outside ColdFusion development. Their willingness to try new things opened the opportunities for this success, while still allowing them to maintain the ties to a language and community that they still have a strong affinity for.

Lesson #3 – Don’t Paint Yourself Into a Corner

The most important lesson I’ve learned is to not let your career and your identity become too tied to a single technology. I used to believe the depth of my knowledge about a single tool/language was a competitive advantage. Today, I think that, while depth of knowledge about a single tool/language has its merits, these can be more than offset by how much it limits your options.

Nowadays, I often jokingly refer to myself as the Frog Pond, a popular splash pool in Boston Common – I cover a lot of ground but am not very deep in any one area. I rely upon my ability to learn more about whatever I need to know rather than rely upon my encyclopedic knowledge of one topic. This gives me the confidence that I can adapt however I need to in the future – just as I’ve been forced to in the past.

Put it this way, you want to be able to go wherever the best options are available, regardless of the technology. Today, everything seems to be moving to JavaScript – the front-end, the back-end, mobile development, desktop development, IoT…and the momentum may seem unstoppable.

But, even as it may seem hard to believe today, there was a time when Java seemed equally unstoppable. I thought that I’d have to learn Java if I ever wanted to have a decent job down the line. Fast forward to today and, while there are still plenty of Java jobs, I think that it’s safe to say that few people are arguing that Java is the future.

More importantly, by not painting yourself into a corner, you also give yourself the option to not follow the trends. There are needs for a lot of different types of developers and, if you’re open minded, willing to try new things and not painted into a corner technology-wise, you’ll be best prepared for whatever opportunities might come your way.

Epilogue

At this point, I shared much of my career history with you. Obviously you know that I ended up at Telerik, but I just wanted to add how I think this fits into the overall picture I’ve painted here.

One of the things that I loved about Telerik when I was first introduced to the company was that it’s products were not prescriptive. Sure, they were most known for .Net, but if you want to use Kendo UI with Java or PHP, that’s fine. If you want to built mobile apps on the Telerik Platform with Angular, that’s fine, but if you prefer something else, that’s fine too.

The lessons I learned from my work in failed platforms was part of what drove me to Telerik because, in my opinion, Telerik’s tools and platforms are what I believe every developer should be – adaptable.

Comments

  • Pingback: Inevitable Change | Geaq()

  • Charlie

    I do think that it is possible to choose some development tools and platforms that retain relevance over the long haul. UNIX and C continue to serve their fans in mobile nearly as well as they served people in the ’70s using ttys and paper tape.

    I direct people who want to learn how to program to the original manual for AWK – after reading the 40 pages in chapter 2, they grasp control structures, regular expressions, simple file processing, and pipes (to some extent). Emerging from awk, a novice has deep skills in flat file manipulation, and is primed for JavaScript, PHP, Java, or C.

    Basing a career on technologies that have staying power can lead some to COBOL, which may not meet with universal approval in this audience.

    • remotesynth

      Yes, some tools and platforms remain relevant for a long time. In fact, even those that aren’t relevant can sometimes still offer a good living (even many of those I discussed in this post). And the experience as a developer always helps, pretty much regardless of language – a good developer is generally a good developer, regardless of what platform/language he develops for. In fact, that’s exactly why I am not advising that you base your career on what has staying power, but actually basing it on the idea that perhaps none of it has staying power – so best to be adaptable and open minded.

  • ChubtonePickups

    Excellent piece. You are preaching to the choir brother! I think I still have one of your Flex Camp Boston t-shirts. When I look at my ng-conf t-shirts I remind myself I need to look at some other frameworks (or wear better clothes)

  • ChubtonePickups

    Excellent piece. You are preaching to the choir brother! I think I still have one of your Flex Camp Boston t-shirts. When I look at my ng-conf t-shirts I remind myself I need to look at some other frameworks (or wear better clothes)

    • Jen Looper

      I have a Flex Camp t-shirt too! Are they collectibles now?

  • Velho Joel

    I hadnt any idea what you were talking about.. Flash has been garbage and it will always be. Thanks to Adobe for at last shutting down this major security hole.

    • dawgbone

      Way to read the article.

    • timaiday

      There were companies wrote everything in Flash and quickly discovered that search engines can’t index their websites. Nike was one of them.

  • Akinori Kul

    Great article, you are totally right about being open minded, it’s so easy to criticize Flash (@Velho Joel:disqus) but at that time it was really the best language to program interactive website, play videos and sounds.

    • remotesynth

      Yeah, Flash is such an easy target nowadays that many people forget how important it was to the development of the web platform. There was a time when web standards sucked – they weren’t solving the problems that people wanted solved like interactivity, animation, audio/video, asynchronous data loading, single-page applications. Flash (and later Flex) made a lot of these things possible. Thankfully, the need for Flash went away as web standard finally got back on track with HTML5, but Flash filled that void for a long time (and, I’d argue, even managed to push the web forward at a time when it was somewhat stagnant).

  • X Files

    “One of the things that I loved about Telerik when I was first introduced to the company was that it’s products were not prescriptive. ” – did you perhaps mean the products were not restrictive ?

    • remotesynth

      No. I meant prescriptive. My point is that they do not tell you how to do things. For the most part, you can use whatever language you want with whatever framework you want and still use our products.

  • thorne

    Great article!
    It is pretty rare to find someone who has the presence of mind to state what is has become obvious to some of us. No technology is permanent!
    More important than “Just” knowing the platform you are working in very well is the attitude of “How can this be done better?” and, what can I do to find that way. Make that your daily mindset and you won’t get pinned in a corner.
    P.S.
    Anybody still alive that remembers Forth?
    I was a C zombie till C++ showed me the light.
    I loved ColdFusion but realized it was dead when IIS was released as a free part of windows nt.
    I hated .ASP because it wasn’t really a platform, but it worked ok if you could stand it.
    I knew flash was going to die when mobile tech wouldn’t adopt it.
    I was a Silverlight snob until mobile tech wouldn’t adopt it.
    Current stack is WPF, WinForms ( yeah I know…. ), JavaScript, AngularJS, C# , MVC, ASP.NET, TypeScript.
    Long live ColdFusion…………

    • Steve Sadler

      Yes, I remember Forth. It’s still alive at a company I use to work for. I wrote the original multitasking subroutine threaded Forth interpreter/compiler that’s used in their industrial controllers. It’s obviously changed/upgraded over the years but they’re still using a version of Forth. If you’re interested you can check them out: http://www.opto22.com

      In regards to change, I’ve actually seen very little in the last 20 years. I’m an embedded engineer who works almost exclusively on small systems (small amounts of RAM and FLASH). Everything for me is still C/C++ and RTOSes.

      • timaiday

        You’re lucky 2 b an embedded engineer. They use the same language forever because nothing can beat c/c++ on those chips.
        The rest of us have to deal with a new language almost every year.

        • Joel

          Could be worse – you could be a web developer and have new frameworks pretty much every other day!

      • timaiday

        You’re lucky 2 b an embedded engineer. They use the same language forever because nothing can beat c/c++ on those chips.
        The rest of us have to deal with a new language almost every year.

  • brianm101

    Perhaps the most important things are:
    Don’t get hooked on a fad or a technology owned by one company. Flash always seemed bad news – sorry!
    Once you know one language and technology others often come easier.
    A good bet is to learn one C derived language, preferably C++ as its the hardest (!) then anything from C# to JavaScript (if you are so unlucky!) is your play ground with minimum relearning.
    Why ‘C? The clue is in in its long history and spread. ‘C’ derived languages where actually around before ‘C’ itself (possible proof of time travel!) and they have been good for nigh on 40 years, so unlikely to disappear in the next 5 or even in your working lifetime (hey Cobol programmers still can eke out a living of sorts).

    • remotesynth

      Hmm…your statement that Flash always seemed like bad news makes me think that perhaps you haven’t been around as long as I have. The web platform was bad news for a while. Before HTML5, the standards were terrible, inconsistent (across browsers) and not really improving. Flash filled a void for a time when the web, on its own, just couldn’t cut it for either interactivity or real web application development. When Flash’s time had passed everyone just made a leap to saying Flash and plugins were always bad…but that was never in fact the case.

      Also, I should reemphasize that the lesson here isn’t to pick something that will last forever but rather to assume that nothing will last forever. Sure, C is probably worth learning, but not necessarily because it should be the basis of your career simply because it is likely to stick around.

      • brianm101

        Actually was around when the dinosaurs still roamed the internet!

        Flash, Cold Fusion etc, all seemed too proprietary and locked in. HTML4 and
        Javascript was still pretty universal even in the days of Neanderthal
        programer, provided you didn’t try to do anything non-standard, clever or
        uttered the words IE or Netscape.

        Probably the best one can do for life as a software engineer is to get a good broad base science
        education, especially in maths and physics. Computing science degrees are
        probably less useful (strange but true) unless you want to be in academia. A
        good science education is about as close as you can get to learning that
        will last you through your software career.

        • thorne

          I always feel funny when someone says… If you want to be an Engineer go get a degree in Social Sciences ( or some other socially acceptable off subject degree). Actually I have found that if you want to be a software engineer… You should do software engineering. I spend about 10 or 15 hours a week on what some would call “Continuing Education”. I.E. Reading articles about what it is I do and everything related. ( which these days is everything )
          Just an example…… Try to get a job with a resume that shows you have developed several of the systems the interviewer is looking for. … Ok go and try to get the same job with a degree in math and physics. Even if you wrote those systems for free, if you can walk the walk and talk the talk you have a MUCH better chance of landing the job.
          You are what you practice……….

          • brianm101

            There is a difference between education and experience. Totally agree you need experience, but education in a science or engineering degree gives a broader understanding of a lot of the things professional software engineers have to deal with. Have found in the many years of recruiting and managing software engineers, that those coming from an engineering degree background grasp the concepts of a project a lot faster than those from a computing science degree.
            Of course either background still requires continuing education and learning!

            Should add talking about more engineering related software (real time and usually safety critical) rather than ‘web type’ software which is probably somewhat of a different skill set.

  • TechPro

    Totally agree! Sometimes I think why the heck I chose programming as my career. We have to keep up with the technology changes, cross trained, etc., I felt frightened to the core when I was told that a “man can be successful only based on his ability to see the longest distance in the future”. With so much advancements in the last 15 years, there were atleast 4 version in .NET or Java or other languages. I started with Visual Basic 5, 6, .NET 1.1, 2.0…4.5. Sometimes my mom says I chose a wrong career that is giving lot of stress, Unlike a teacher or banker or production, programming requires to squeeze the brains and retrain all the time. I was very much going through a phase where I wanted to exit this field.

    Much to my relief, this article clearly provides me the confidence that what we are undergoing, beliefs, expectations are true for the most. Thanks Brian.

    • remotesynth

      I agree. It is tough when you have to regularly “reinvent” yourself. I think many of us (myself included) have felt burnt out by it at some point in our career.

  • 100% with you. You totally described the ‘biggest web development war’ on my opinion, that happened from 2003 to 2011. We had no other option than to be with some technology until we can decide what to do. You are absolutely right with the 3 Lessons you mention. If you like check this video too ‘Tour De Flex * An abandonded City’ https://youtu.be/G7etKQbP1Q4