What follows is my response to a Flash developer who emailed me a few days ago asking for advice on what he should do with his career. He feels that Flash is dying and that he needs to make a change and upgrade his skills. He said that he's applied to a number of jobs requiring C++ and Java because that's what he studied in school, but so far has been getting no love from that direction.

If you sense that Flash is in it's death spiral, then you're right to start thinking about moving on to something else. The best way to do that is to move straight to the cutting edge because it will consist mostly of very new technologies that few people have much experience with. That's good news for you because you'll have much less competition and won't be going up against developers who have N+ years of experience with said technology who can look down on you and call you names. Also, because the technologies you're going after are so new you'll have time to get up to speed while the demand in the marketplace builds. The other big benefit is that it's the cool, tech oriented companies that will be looking to hire people with experience using these cutting edge technologies, and those companies will probably pay better, treat you better and be much more fun to work at.

In terms of technologies, I think the new web stack is going to be the Javascript centric - jQuery, Backbone.js, CoffeeScript, Node.js and MongoDB or JBCNM for short. Well, maybe that acronym could use some work, but you can bet it's the future and since Javascript is a kissing cousin to ActionScript, you should feel pretty much right at home. You can skip CoffeeScript for now if you want, but on the front-end jQuery is the de facto API for the browser DOMs and from what I can tell, Backbone.js is emerging as the leading framework for the single-page MVC web app. Yes, there are others like Knockout.js, Spine.js, Batman.js and even my own soon to be released and tentatively named IveBeenDoingThisShitSince2005.js, but my advice is to just settle on Backbone.js. If some new framework comes out of the woodwork and begins to win mindshare, it probably won't be that much different and will be easy for you to learn because MVC is ... well MVC. Plus, it won't happen over night. By the way, my advice of going after the cutting edge falls right in line with one of my favorite sayings which is "Skate where the puck is going. Not where it's been." (Wayne Gretsky) While Python, Ruby, etc are all great technologies used by a lot of smart people (notice how I say people rather than folks - I hate the term folks!), the real energy and excitement is happening with JS, NoSQL and related technologies. You can bet that's the future, or at least the very near-term 2-4 year future, which is all you should really care about at this point. If the JS stack starts to die out in 2016, then just send me another email and I'll look into my cracked crystal ball for the "New Direction".

While jQuery and Backbone will give you what you need on the front-end, Node.js and MongoDB will do it on the server-side. I know what you're thinking, "Holy, crap, that's a lot of stuff to learn!" Well, yes and no. It is if you were trying to master all of them at the same time, but mastering them shouldn't be your goal at first. Your goal should be to get up and minimally functional with them so that you can start building a project. The good thing about Node.js is that it's Javascript too, just like jQuery and Backbone.js, and MongoDB stores it's data as BSON, which is like binary JSON or something. So, it's Javascript for everyone! And that should make the whole learning process a lot easier.

Yes, you need to build a project because the best way to learn a technology, or technologies in your case, is to building something with it, and the best kind of something to build is something that you want to use yourself. But you want to keep it simple so that you can actually finish it. Maybe try something like a single-page CRM or a task-manager or whatever. It would be great if you could come up with something kind of unique as who knows it could always grow into a sellable product, but don't get too distracted with that idea at this point because you'll start thinking too big and then about finding a co-founder and/or maybe funding and then doing a much of market validation crap, but that's all really beside the point at this stage and will just waste your time. You just want to get coding now so you can learn how to use these tools. By the way, if you're having a hard time coming up with an idea, try to think of a lot of ideas, like five ideas per day for a week and then at the end of the week pick the one you're most excited about. It's like Linus Pauling famously said, "The way to come up with a great idea is to come up with a lot of ideas."

The other thing you absolutely want to do is chronicle your learning process as a series of tutorials called something like Fullstack JS for the Flash Developer: Part I, II, III, etc. Don't worry about writing great prose or planning the whole thing out. Part I could just be about installing the libraires and getting the various Hello Worlds to work. I remember learning MFC (Microsoft Foundation Classes- C++) back in the day and the way you learned to use the framework was by working through the building of a simple drawing application called Scribble. It was very effective because it really helped you put all the pieces together. But the point is that if you write up these tutorials you'll get all kinds of love on HN and all kinds of SEO and guess what, you'll be viewed as an expert in fullstack JS, which will be awesome because you'll get tons on job offers and freelance work if you want it. If you don't write up and publish what you're learning then no one will know that you know it and when you tell them that you know it, how will they really know. You want the GOOG to know and you want people coming to you. For more details, read my post How to Increase Your Luck Surface Area. Oh, and the best way to learn something is to try to teach it and this is exactly what you'll be doing by writing the tutorials.

Two additional benefits to building a project and writing about your learning process is that it will show that you can communicate and that you're smart and can get shit done. You see companies, especially thoughtful ones, write about this stuff all the time (Jason Fried from 37 Signals and Joel Spolsky from FogCreek in particular) and they're not saying it just for the fun of it (well, maybe a little bit for the fun of it). The reason that demonstrating your writing ability is so important is that most people suck at communicating ideas, either via speech or text, much less conveying complicated, unfinished ideas, which is the hallmark of the tech and startup worlds. For example, look at what I'm writing here. I barely know what I'm talking about, it's a complete mess and you're probably totally confused. But at least I'm trying and you should too because showing that you can do it will be a big differentiator for you. In terms, of Joel's "Shit and Gets Smart Done" (yes, I know I got that backwards), well that should be pretty self-evident, but in case it isn't or more because I just like to type I'll expand on it. Most people don't get anything done. They talk a lot, or maybe not, but they email and Twitter and read Hacker News or the Onion and play around with stuff, but they don't actually ever release anything and the reason is that it's hard. That's why you always hear the advice about doing the smallest thing possible that will work. It's because even that is practically impossible for most people. So, yeah, building a simple project that you release into the wild (you know the whole "Show HN" thing) and publish your learning process will go a long way. Oh, and by sharing on the web you will apparently win karma, which is some kind of universal, fiat currency that I hear is awesome and is sort of the new Bitcoin. Boy, did that shit crash fast!

If you do what I've suggested here, I can almost guarantee you success in finding a high-paid job or freelance work (if that's what you prefer), working with some hot new startup. But you have to do it. Come up with a plan and execute. Plan the work and work the plan. Since I don't want you to get stuck at this stage, here's your plan. Shoot for writing one tutorial per week and use that as your guide. Who knows what part 7, 8 and 9 will be, so just focus on Part 1 - Goodbye Flash, Hello, Javascript! The way you do that is by sitting down and installing each of the technologies and taking notes while you're doing it. Once you have everything installed and have a Hello World for each one, rewrite your notes as a blog post, and then rinse and repeat. During this first week you can contemplate what your project is going to be since you won't need to know the answer to that during the installation process. My guess is by the time you get to part 12 or so, you'll have more opportunities than you know what do do with, and if you don't then just email Uber because they're desperate to hire smart people who can learn quickly and get shit done. Just tell them I sent you because I could use the karma.
Shared publiclyView activity