Thursday, August 27, 2009

You Guys Rock

A lot of you disagree with me on my Flash assessment and your comments have been great. Unfortunately, I really do need to get back to my vacation. Do please feel free to keep knocking down my arguments in the comments, though.

I want to leave with this definition that I tweeted a minute ago, because this is the crux of my point in the last point. I'm really not hoping Flash dies, but I do fear for the hammer developers in the Flash world because there's at least some chance of the platform becoming obsolete. We can argue all night about how great those chances are, but given the current environment, the chance is at very least greater than zero.

A "hammer developer" is a developer who has only ever learned one language and development framework. With only one tool in their box, every problem looks like a nail. It's the hammer developer that's responsible for sites like Disney's, where even basic things that HTML has been able to handle for years (like navigation bars) are done in Flash.

Hammer developers are the ones who have the hardest time when a technology does become obsolete. Even if you love Flash, don't be a hammer developer. Seriously. Diversify your toolset, even if you love one particular one. No toolset is guaranteed to be around forever.

And, yes, hammer developers exist in every developer community. I'm only singling the Flash community out because the platform sits in a unique position at this point in time. Flash has a lot of baggage from a different era and I'm not sure Adobe really understands what must be done for Flash to remain viable. Maybe they do, but are you willing to bet your income on it?


K. A. Barber said...

We all have the gene. Grasping on to the familiar and comfortable is all too human of a thing to do. I broke myself of this nasty personality flaw after the tech bubble burst. I told myself I would never pigeon hole myself again.

I love flash just as much as the next developer. Some of the things you can do along with the ease of doing it is very seductive. I still use it for prototyping and proof of concept work and occasionally someone will ask for some custom flash (kiosk,educational material).

I have starting using processing more and more as it matures as a free alternative especially when I am teaching someone some concept work. Its cheaper for the learner. I could see the price of the flash IDE becoming a barrier to entry.

Keep flash in your toolbox, there is nothing wrong with it, just don't let it so consume you that you cannot see the merits of other technologies.

rritchey said...

I couldn't agree more with this. People need to be proficient with many tools, especially in the RIA and web devign space.

Processing is a wonderful and fantastic tool.
The problem with the price of the Flash IDE is that Adobe doesn't advertise their learning prices well enough. You can get the CS4 Master Collection for $900 if you, or someone you know works at or attends an educational institution, and the CS4 Web Suite is only $600. Still a steep price, but significantly cheaper than just buying the suites new from a commercial standpoint. Even so, of course, I haven't upgraded to CS3 or 4 yet because of the steep price point. I purchased CS2 for $200, and Flash/Dreamweaver from Macromedia at the time for $100 each. Altogether that is $400, quite different than even the student pricing for CS4.
Flex 3 comes in at the low price of Free, though, so there is no reason ANY student can claim that the price is too much to start developing for the Flash Platform with Actionscript.

Manny said...

I think it’s beneficial to be a hammer developer when you are learning how to program for the first time. I just found Flash devilishly easy to produce content because it took care of quite a few things I didn’t need to know. Over time, all the unknowns started to make more and more sense and next thing you know, you’re a developer.

I’m assuming most of your colleagues have a background in computer programming whether self or school taught. Majority of flash devs don’t see themselves as hammer developers but more like incubated developers. Some are learning how to code for the first time and they need a safe and relatively easy environment to do it in. Others have since sharpened their skills and creating libraries and frameworks that benefit the community.

I believe it’s what happens afterwards, that will label you as a hammer developer.

Jeff LaMarche said...


Great developers come from all walks of life, but I simply can't recommend picking one tool and only using it. It's important to know what's out there. It's important to recognize the weaknesses in your preferred tools (and they all have weaknesses).

If you're a "Flash Developer", for example, then you're always going to suggest Flash to solve a problem. But Flash is not always the best solution. It's not even always a good solution. But if it's all you know, it's the only solution that will come to your mind. It'll be the only one you're comfortable with.

Learning to learn new languages is also an important skill if you're going to make a career of software development.

I’m assuming most of your colleagues have a background in computer programming whether self or school taught. Majority of flash devs don’t see themselves as hammer developers but more like incubated developers.

Umm... I believe that's essentially the problem. Whether they realize it or not, they are doing software development. And though there are great Flash/Flex developers, there are an awful lot out there polluting the web with crappy code because they don't understand the basic underlying concepts of the industry in which they are functioning as paid professionals.

Jeff LaMarche said...

K.A. Barber -

I don't think I have that gene, actually. When I left for college in 1988, I already knew two variants of BASIC, Pascal, and 6502 assembly, and was starting to learn C.

The first 19 years I wrote code (and I wrote a lot of code in that time - coding nearly every day from 1980 until I got my first real programming job in 1999), I made no money from it, had no realistic expectation of making money from it, and was simply learning it because it fascinated me and I thought it was neat.

But I never felt like I had found the one true and final solution. I never felt like there wasn't cool shit out there to be learned. I was constantly looking for new languages, new tools, new ways of coding. I don't think I could even count the languages and environments that I've dabbled in over the years.

And to this day, it often strikes me just how much I borrow from things I first saw in other languages. It also strikes me that in the last decade, I've made my living working in many different languages, environments, and operating systems. My real skill is not the languages that I know, but my knowledge of what tools are available and a willingness to use the right one, even if it entails diving in and learning it.

Matthew Fabb said...

While I agree that not all projects or problems can or should be solved with one tool, I don't think there's anything wrong with becoming a specialist in one area such as Flash and only working on jobs in your speciality. A lot of medium to large companies work that way, where they will hire someone as a Flash developer or a .net developer and have them work with other developers in that speciality doing nothing but focusing on one technology.

Actually, in the world of Flash is big enough that you often get people specializing in just one area, Flash games, Flex development, Flash video, 3D work, etc.

Of course suggesting Flash for everything is obviously wrong, and I think it's very good to realize and understand what else is capable in other technologies.

In following the Flash versus Silverlight versus HTML5 versus JavaFX articles on the web over the past couple of years, it's been interesting to see that so very few people have an solid understanding of all these technologies. I mean I've yet to see a single good well researched article that actually compares these technologies feature per feature. Everything I've read is always slanted to that developer's background and the opposing technology is will with errors and bad assumptions. However, on the flip side of things, ecosystem for all these technologies has gotten so huge, with a wide range of features, frameworks, toolkits that it's a lot to keep up with everything going on with one technology.