A student recently asked me what he could do to further his career, and inquired as to how I got to the point I am at on my own. This is a subject generally reserved for informal chit-chat among developers at conference social events and after user group meetings, and is one that is very important to each of us.
It also brings up the fundamental question of whether or not there is a proven, easy-to-follow formula for career success as a CF developer.
The truth is that there is not any set formula to achieving success, as we each define success differently. Success for some is measured solely by their financial compensation and status. For others, success means happiness on the job and with their life - perhaps they place more emphasis on the people and environment they work in every day as well as on their vacation and other "personal luxury" benefits. Still others describe success purely by notoriety and demand - on both their achievements and their reputation.
For most of us, our career objective is in reality a combination of all or some of these goals. Obviously, everyone values their paycheck and most of us are hoping to see our salaries increase over time. Of course, money does you no good without a personal life and liberties to enjoy that hard-earned money outside the workplace, so some emphasis must be placed on quality of life. For many developers their job is just their job, and they don't take any interest in public reputation or pride in their achievements, so long as the money and quality of life is satisfactory. Those who do measure success this way most often do so knowing that a good reputation and great achievements shown on paper also translate to better pay and negotiating power when discussing compensation with employers and prospective employers.
Though the goals and path necessary to achieve these goals may differ from developer to developer, I do have some sound advice and career exercises that will aid you whatever your goals may be.
Financial goals are best determined by evaluating where you are now, and determining where you want to be in, say, five years. If what you want is to retire in five years, then you need to do one of two things. You can work for a company you believe is going to go public, get bought, or do so well publicly that the pay-off will be enough to retire on. You also need to assure yourself that you have an employment contract with a company like this that guarantees you enough interest in the company that your interest will be worth enough to retire on. If you are fortunate enough to find a company and position like this, you are on your way. The other approach is to develop a commercial product yourself in the form of off-the-shelf software or a Web site that will generate revenue through advertising, membership/services fees, and/or being bought.
This is a lot easier said than done, but if you have a good idea, the payoff could be substantial. With either of these approaches you also need to put a value on security. Consider yourself blessed if you are employed by and have interest in a company that not only has a good chance at being bought or going public, but that also offers job security. A very large percentage of these companies are at a higher risk of folding and never realizing their dream. Developing your own product or Web site is an even higher risk if you're completely self-employed, and a good approach would be to keep your day job and work on said project on weekends and evenings until you feel comfortable that the project will succeed.
If your expectations aren't so high that you are planning retirement just yet, there are several ways to improve your worth and command a better salary. In today's job market, a ColdFusion developer who knows object-oriented programming concepts and how to apply them in CF is worth quite a bit more and is in more demand than a developer with twice the experience but who doesn't have OO experience. Learn about OOP and master CFCs and the techniques for developing OO CF apps, and emphasize this on your resume. Knowledge and experience with a framework(s) carries weight with some companies and is another thing to highlight on your resume, though most companies that are looking for a "framework developer" tend to accept inexperience with a framework if the hire knows OO. Learning Flex 2 or Java certainly also helps to make you more marketable - in particular the market for CF developers who also know Flex is a rapidly expanding one. ColdFusion Developer Certification doesn't generally carry much weight in my experience, but it does look good on paper and some employers and contracts do require it - and getting certified doesn't take too much time, effort, or money. Aside from having decent knowledge with whatever database an employer is using, most of the other technical skills that set a developer apart from the pack are more related to management. Knowledge and experience with a source control system like subversion tends to carry weight with employers, as does (in fewer circumstances though) experience with Ant for deployment.
Speaking of management, being in a tech/team lead or architect role generally comes with a higher salary, as well as more responsibility. So does project management, though emphasizing project management and/or looking for project management positions does mean that you are committing to a career path that will most likely take you away from day-to-day coding and into a path of management and executive management. If that is a career path that you find appealing, by all means pursue it - there will always be a demand for PMs, and their pay tends to be really good. If you have experience leading/managing projects or development teams, definitely emphasize this on your resume and in your interviews.
If your goals are more focused on quality of life, by which I mean vacation, low stress, etc., it's a bit more difficult to state a formula for achieving your goals. Be aware that working for an employer as an internal employee who builds internal applications certainly does tend to mean more moderate hours and less stress surrounding deadlines than working for a solutions company where you are developing applications for clients. This is on an employer-by-employer basis, but is a practical piece of advice. Be aware that pay is not always as good in these positions, but again - that's on a case by case basis. Whether your goals are solely financially driven or include aspirations toward public notoriety and other noteworthy achievements, the best way to attain either/both is to work on large, complex applications. Applications that require a large team, that have high public visibility, and/or that require pushing ColdFusion to its limits tend to be the ones that developers learn the most working on, and also carry a lot of weight with employers. Who you've worked with (i.e., being on a development team with a reputable developer) also tends to carry a lot of weight and gives you an outstanding reference. Other credentials that impress employers include community activity - speaking at user groups and conferences, teaching classes, having a popular blog, and writing/tech editing for magazines (CFDJ) and books. When I explained this I was immediately asked why teaching and community activity makes one more desirable to employers since it doesn't really mean you know more. The truth is that I'm not sure (unless the employer values these things) but it does look good on paper and it lends credibility...and for many employers it's a clear sign that you have good written and oral presentation skills...something that many companies look for in their IT staff but is very hard to find. I definitely advise developers seeking to make themselves more marketable to write and present, and if you are offered the opportunity to teach or to become a certified instructor, definitely don't pass up the chance unless you really have no desire to be an instructor.
Many of you may be saying to yourself "that's all fine and good, but I don't have access to all that at my current job, so what should I do?" The answer is quite simple. If you're ready to leave wherever you are currently employed, take a look at the points above and do whatever you can to make yourself more marketable, then begin the job search. If you like where you are but don't have the opportunities to "raise the bar" at work, my advice would be to first see if there are opportunities at work that you're missing. The next time you have the chance, take that leadership role, assist the PM to better understand what he or she does, try coding something in a more object-oriented fashion or in a more advanced manner than usual, mentor the new member of the team, go out of your way to do something with CF that you've never done before, and above all try to enjoy what you're doing. Not thinking of your job as a job, but as a craft - as an interesting and challenging role that only years of strenuous exercise will perfect (and that's fun to do) will motivate you, make you happier and better at your job, and will show around the office as well as in interviews. The truth is that the most successful developers love what they do. If nothing else - get more active in the community. Join CF-Talk and some other list servers, volunteer to give a presentation at your local user group, submit applications to speak at a conference and attend every conference you can whether you're speaking or not, e-mail me with an article idea, even volunteer to contribute to one of the open source projects (or create your own). Just get involved.
To those of you who are interested in bettering your career and aren't committed to staying with the same employer you're currently with, the same rules apply but you also have the added benefit of being able to begin interviewing with companies. Hopefully, my advice here will help you better understand what it is you should look for in a company as well as in an offer. Assuming you have all the skills and credentials to get the job, there are still two things that many developers forget to do when going after work. The first is reviewing their resume - keep it concise and focused. When you're being evaluated for a CF developer position, nobody really cares if you know Quick Basic. Second, remember that attitude is everything, so be confident, have fun, and have a positive attitude about everything that's said when you're on an interview.
Ultimately, what you should do to further your career really does depend on your current skills and credentials as well as where it is that you'd like to see your career go. Whether it's a cushy government job with all the security in the world or a private contracting position working with bleeding-edge technologies on large scale applications with really high pay and a ton of risk, there is always something you could be doing to better the odds that five years from now you will be exactly where you want to be. I hope that this editorial has inspired and assisted some of our readers to get there.