Friday, August 22, 2008

A year as a ColdFusion developer... now what?


I don't know where my future is headed, and I need some direction.

Graduated from some university with a CS bachelor degree, I landed myself a job writing CF web app about a year ago. I took the time on the job to learn CF8 inside out, and to understand ModelGlue, Coldspring, Transfer, and common design patterns. I successfully got them all working together while my coworkers were still writing CFM and some basic CFC with no idea why should they care for var scooping. After working there for a year, I quit because I have delivered a decent application, and I found nothing new and exciting to learn. And I want to be surround myself with experts and learn from them, instead of the other way around.

And now I'm unemployed, or in between jobs, that sounds better. I'm excited to learn about Flex/AIR, as it seems it is the most logical path to follow now that I have experience with web development and they work so well with CF and LCDS Express. However, as I being to search for my next job, reality kicks it, CF is just not that popular. Don't you think it is sad to just see feed occasionally titled "1 CF dev needed in XX state", or "2 Flex dev needed in YY state"?

I love Adobe, and ColdFusion. In fact, I should hate them for spoiling me 'cause they make things so easy (most of the time). I guess if I stay with doing web app, and if my future project happen to be not in CF, I will miss CF very much... and start learning other frameworks, in other languages, all over again.. which is normal.. I guess.

I actually not sure if I should continue doing web app, since I've seen so many useful/useless app and service popping up everyday on makeuseof.com, but I wonder if they will actually keep getting users and traffic once the hype dies down. Many of them has no business model behind them, yet they offer service for free which keeps me puzzling. Oh well, last time I check YouTube is still losing Google's money... so I don't know anymore.

There should be another world out there outside of web apps, but... where to begin? I feel so lost... Help...

To all experts in this field, please forgive my ignorance and guide me to a better place in my career path. It would be very helpful to share what you have been through, or any advice to people who are in similar situation like me.

Thank you Thank you Thank you!

28 comments:

  1. Hi Henry,

    It is unfortunately the sad truth behind the legacy of Macromedia. To put it bluntly they "screwed the pooch" when it came to Coldfusion, the basically let it rot everywhere except the USA.

    If you want to continue developing CF applications then look the the USA. I know thats not an answer you are looking for, hell if I lived in BC I don't think I would want to move either. But the cold hard truth is that in Canada, as well as Mainland Europe (germany specifically) you can go months without seeing a single job pop up for a CF developer.

    Adobe is "apparently" working on it, pushing CF hard all over the world, but it takes time and convincing people that what CF was when Macromedia bought it is not what CF is today is an uphill battle.

    When I look at Monster.DE all I see is Java/PHP and a distant third C# or VB. I haven't bothered to look at Monster.ca since I left the Americas, but I doubt it's much different.

    You will have to make some hard decisions one of which may be to leave BC for south of the border, another may be to learn another language and keep CF alive until Adobe wins the uphill battle and the language starts coming back IN.

    ReplyDelete
  2. As a ColdFusion programmer of five years, I understand you issue. For jobs, your options are Java or .NET. Just use indeed.com to view the general job market. Knowing multiple languages will never hurt.

    ReplyDelete
  3. Might I suggest other quality dynamically typed languages like Python or Ruby? All the features you get with CF are available with other tools, and those tools are generally free.

    With Python you've got powerful choices like Google App Engine, Django, and Zope/Plone, not to mention all sorts of sys admin and engineering work (for example, much of the Ubuntu configuration is driven by Python). You can exploit your Python skills on any operating system and both .NET and Java. Of course, there are Python libraries that work with Flex, Flash, and other fun things from Adobe.

    From personal experience, switching from ColdFusion to Python meant joining a bigger job market with some of the smarter people on the planet. Heck, Google has pretty much hired up all the core Python team!

    With Ruby, you get Ruby on Rails. And you get many things with it that match what you get with Python, including the .NET and Java playgrounds.

    PHP does have more jobs, but PHP is 99% web application design. Sure, a tiny minority do command line and desktop GUI work with it, but that is the exception.

    ReplyDelete
  4. You have a basic choice - either learn a web coding framework where you are coding "closer to the metal" than Coldfusion (php, ruby on rails, Java) or try a visual development platform where you are more abstracted from the development process (WaveMaker, Backbase, Coghead).

    ReplyDelete
  5. First and foremost, thank you everyone for your valuable comments and advices. Much appreciated.


    @pydanny: python sounds good, but what should do I need to learn and worked on to proof I have mastered python on a resume?

    @Brixon: how do you justify staying with CF when other languages/platform seem to be more popular and attractive in the job market? Or are you working in the US and there are plenty of CF jobs?

    @Christopher Keene: how would learning visual development platform help?


    How do you guys usually deal with learning a new technology? To me it is a little bit like a chicken & egg problem. The ideal situation would be learning on the job with a project, but w/o any experience in that technology, will you get hired?

    ReplyDelete
  6. Maybe as another twist...you have the experience, see what is out there contract wise and get companies to use CF...create a job market for yourself. With CF8, it should be pretty easy to show them why CF is a better option than other languages. I bet you could even get some good talking points from Adobe...

    On the other hand, if you ever want to come to Chicago, according to Tech Recruiters here, we are a hard to find commodity ;-)

    Eric (10 years of CF Development

    ReplyDelete
  7. @Eric Roberts

    Let's explore that option a little bit...

    CF8 is a hard sell with the obvious overhead cost that other technologies don't have, unless one can developer CF8 significantly faster than someone who can do it in PHP or whatever, and fund CF out of one's own working hrs. Really?

    And then there's the hosting side of things. I believe it is still not easy to get cheap hosting for CF8. Even if there are affordable hosting, setting up Model-Glue/Coldspring on sharehosting will be another challenge.

    Unless the client is really into Flex and LCDS? I don't know, what do you think?

    ReplyDelete
  8. I think people are making a mountain out of a mole hill here... there are currently fewer job postings for CF than for PHP or Java, that's true...

    So what? Reverse-market yourself. Advertise yourself as a freelance developer in multiple locations (craigslist, rentacoder, guru.com, freelander.com, etc, etc.) and work remotely while you're looking for your ideal job. Find the company you want to work for, write a proposal for a job there and go talk to their owner, etc. You'd be surprised that actually works. It doesn't work as well for me personally but that's not because it's bad advice, it's because I'm autistic and didn't know until recently.

    ColdFusion actually recently won the SIIA codie award for "best webservice solution". http://www.infoworld.com/article/08/05/20/Codie-awards-go-to-Red-Hat-Adobe-Salesforce_1.html

    And folks "in the know" like Sean Corfield and Matt Woodward have been talking about their concern for the not too distant future being that there will be a huge demand for CF developers and not very many of us to meet that demand.

    If you want to make yourself a better programmer for its own sake, by all means, spend some time learning different languages and seeing how they approach different problems. But don't feel like the current drought of jobs (which remember always spikes in January) is any indication that the skills you have aren't going to be in demand in the near future.

    ReplyDelete
  9. Setting up Model-Glue / ColdSpring on shared hosting isn't an issue anymore with ColdFusion 8, OpenBD (which is free) or Railo (which is free). The latter two obviously eliminate the question of cost, since they're both free open source servers. And both of them support some form of application-specific mappings which eliminates the problems of setting up Model-Glue or ColdSpring. Railo uses Application.cfc and OpenBD has a cfmapping tag, so you can just set up your own mappings to your copy of either framework... And the shared hosting isn't any more expensive than shared hosting for PHP, so if you have clients who use shared hosting, you can take advantage of the application-specific mappings in Adobe's ColdFusion 8. A $20/mo HostMySite account will do that for you. :) So yeah, none of those objections hold any water anymore. :)

    ReplyDelete
  10. @ike:

    Thank you very much for the update on hosting. Much appreciated.

    ReplyDelete
  11. @ Henry,
    I do not know anything about the international market for coldfusion, but I do know about the general market here in Los Angeles, CA, USA.

    We seem to have a surplus of jobs around here looking for CFers at every stage of developement. I have a lead on several positions that I have been trying to help fill for a colleague, but the only responses I have been getting are telecommuters from other states or nations. (I have no problem with telecommuting, these jobs I have are on-site only).

    It is too bad you aren't in LA. I could have an interview for you as early as next week for a position that needs someone at your learning level.

    As far as 'what can you do'? I would suggest getting onto some of the 'jobber' boards like guru.com and bidding on some of those projects. It will allow you to get an exposure to a lot of different types of companies and can be the beginning of a successful Contractor-for-hire career for you.

    Good Luck to you,
    William Seiter (william [at] seiter [dot] com)

    ReplyDelete
  12. Hi Henry,

    Keep your head up. There will be opportunities for you. With the Winter Olympics coming your way, you will see additional startups pop up around town. Some may be US based companies which need a local presence and use Coldfusion. ;-)

    As for what direction you should travel... That's more of a spiritual question. One of many on the path to self enlightenment. Yes, YOU may yourself, see all of these cool useful useless applications showing up, but are people around us using then? Do they know they exist?

    It seems to me, you need to get in on the ground floor of a web development firm. Forget the single site/business development opportunities, and look for something where you are working on multiple projects for multiple clients.

    You need to search these people out. Go to their office, setup a meeting, drop off your resume, and keep in touch with your contacts with these firms until something comes up.

    This is where you will find that you and your co-workers are in a position to mentor each other. Another bonus about this, your day to day is always changing. There is always a new project coming in and 10% of them are something entirely new in concept. Well at least something you haven't had to create yet.

    Good luck man!

    Regards,

    Casey

    ReplyDelete
  13. Hi Henry,

    I am a ASP.Net Web developer in bangalore,India having around 1.3 Years of experience. I am facing same dilemma on selecting a technology/language/platform as i think u are facing. I don't know much about effects of US recession on Canada's SW industry but it is very visible in india right now thats y m not sure which technology lead me to better career.If you will get any solution of your current career perspective do share with me ..

    thanks
    kartikay,india

    ReplyDelete
  14. Hi Henry,

    Since you mentioned your educational background I want to point out something that a lot of CS graduates overlook. Many of them see a CS degree as a means to an end... with the end being software development. If software development is the only thing you'd enjoy doing, then ignore me, but keep in mind a CS degree does not automatically lead to software development. In fact, if Canadian CS programs are anything like the ones in the US, your program probably did little to prepare you for a software development career. It likely prepared you to be a mathematician with a technical background. If you feel like your skillset is limited and you aren't marketable as a developer, maybe you can try broadening the type of work you'd like to do? Maybe try branching out and exploring other aspects of CS rather than exploring other aspects of software development? Would you be interested in doing research? Maybe try to get a job in academia?

    ReplyDelete
  15. @Tina: Good point! Yes, but what other job/career suits a CS degree other than doing research in academia?

    ReplyDelete
  16. You are right that beyond research and actual development, your options are probably limited. However, you can get a research job outside of academia. It's harder, but they are out there. For example, bioinformatics is becoming bigger and your education has likely given you a strong math and science background. Maybe you can pursue something along those lines? See if the school you went to has any career fairs coming up (it's unlikely, given the time of year, but you never know). When I was in college most of the recruiters at those things had contracts with the DOD and seemed really interesting.

    Whatever you end up doing, I wish you goodluck. I got out of school a year before you and also made the mistake of boxing myself in to a single technology. It was hard work, but I think making a list of goals helped me get out of my rut. I think that's the biggest thing... I was most frustrated when I was going no where and didn't know where I WANTED to go. Eventually I sat down, made myself a list of goals (long and short term) and started doing the things I needed to in order to achieve my goals. It seems like you are trying to do something similar by asking people where you should go next and I commend you for being so proactive :o)

    Tina

    ReplyDelete
  17. @Tina: oh mine.. you've been such great help! Your comment is both informative and insightful. I feel like treating you to dinner! I owe you!

    ReplyDelete
  18. Since sarcasm doesn't translate well over the Internet, I will assume you are being sincere and offer to keep in touch and share rants/victories. Like I said, I was in your shoes fairly recently so I have a feeling I'd be able to relate to whatever struggles you are going through. A support system is always a nice thing to have :o) torooji@gmail.com

    Otherwise, if you are being sarcastic and telling me that my comments were actually useless (I'm leaning more in this direction since I don't think I said anything very insightful)... all I have to say is :oP

    Tina

    ReplyDelete
  19. @Tina: nono, there was no sarcasm, not even a little bit. I'm really thankful for comments like yours. I'm very sorry if I wrote anything that sound sarcastic to you.

    ReplyDelete
  20. My mistake, then :o) Sorry for being paranoid!

    ReplyDelete
  21. So, I'm probably making a bigger deal of this than necessary, but I tend to over think things and think I owe you a better apology than my previous post. I was jerkish to you on your own blog, which isn't cool. I accused you of being sarcastic because you showed genuine appreciation for something I'd said when I should've been gracious. I don't think my previous apology expressed that I really am sorry for doubting the appreciation so I just wanted to reiterate my regret. Okay, now I'll stop harassing you... I promise :oP

    ReplyDelete
  22. @Tina: no worry, we're cool! :)

    ReplyDelete
  23. @Henry Ho,

    To show you've got knowledge of python (or Ruby) on a resume is easy. Release an open source application or create a site using Django (Python) or Rails (Ruby). Hosting is cheap, about $10/month. That or better yet do something creative that can be run from a command-line. In your resume write about your passion for learning new things.

    If you want a job, go to Python/Ruby conferences, which are dirt cheap by CF and Java standards. If you show yourself as an interested student of the language, you'll be picked up real fast.

    Demonstrating mastery of python is hard. A python master knows C very well and several operating systems as well. They understand pythonic practices and how they compare to how you do things in Java or Perl. They tend to have at least several or one large open source project they participate in.

    Some few examples of people I consider Python masters would be Guido Van Rossum (of course), Ian Bicking, Andrew Kuchling, and the core of the Django team.

    Hope that helps and feel free to contact me directly if you have more questions.

    ReplyDelete
  24. Henry,

    If you would consider moving to Cleveland, I could hook you up. We're looking for someone of your skillset. If that doesn't work, there are several other companies here looking for ColdFusion developers. If interested, send me your resume at brianmeloche at gmail dot com.

    ReplyDelete
  25. I manage the Bay Area ColdFusion User Group and I'm always being asked by recruiting companies to post job openings for good CFers in and around the Bay Area.

    In my role as an employer, my hardest task is finding good CFers who understand software engineering. Someone with a CS degree and experience with OO and frameworks should be able to pick and choose CF jobs all over the US (as you've seen from the comments here).

    ReplyDelete
  26. You are actually in a real good position. Take the time to learn other languages. Don't just know ColdFusion. You won't get very far in the job market. Learn Python or Ruby. I'd recommend Python because its more popular. Learn Django. Its a pretty awesome framework. While you are at it, try out Groovy and even Grails. Learn Linux too. It will come in handy.

    ReplyDelete
  27. Thank you all. Just for an update on my status, I have returned to my previous company because they have an interesting project going on and they can really need my help (since they chose CF and spent the $$ to train me as a CFer).

    However, I am wondering if my next job should be something software related but totally different from doing web-related work. How is the market outside of web development?

    ReplyDelete