Web Software Architecture and Engineering – Life on the Bleeding Edge

No I’m not going to speak about the lack of CF developers. Quite the opposite, I think there are plenty out there. The quality? Well, that’s what we’ll mention here.

Over the past 8 years, at my current position as an executive who also develops actively, I’ve reviewed probably over 300+ resumes, and phone interviewed over 200+ CF folks alone from all over the world. There are some things you learn along the way as a hiring manager – how the market for talent works, the general capabilities of CF developers, and what their typical strengths and weaknesses look like.

I did want to mention two recent resumes and hiring experiences that both went south. This is advice for all CF folks, as I’ve waited to write this to make sure nothing I said would be personal or negative, rather that I could put a positive spin on things and give advice.

As a developer, there really needs to be a focus on self-improvement. In most cases, I don’t find that – I’m surprise how many people “settle.” For me ColdFusion enables each and every day to accomplish an overall vision I have for the projects that I work on – ColdFusion is not the goal in and of itself, nor is the pay check that drives me. I couldn’t work in an environment which gave me access to ColdFusion, but restricted my ideas on how to improve the projects I worked on, or paid me a high salary – but denied me a voice.

Very few developers (roughly 2% from experience) have anything to show for self-improvement. Have they kept up on blogs, read books, attended a conference, tried new techniques, improved their understanding of object-oriented (if not aspect-oriented) programming? What drives them? The answer I usually get is that they are interested in new techniques and approaches, it’s just that their work environment never provided them the opportunity to do so. This to me is a red flag – I expect any serious developers to have their own work environment at home, and work on their own pet projects on the side.

But I tend to forgive the developers, and blame the management in those companies for not fostering innovation. How often do folks meet to exchange ideas in your department, present on new findings, and are given time to develop new ideas on their own? As a manager, I think less about micro-managing or macro-managing, but finding opportunities for my folks to shine. I want to always market my team to the rest of the company as a high performing, well motivated team.

And that’s what sets our company apart, and that is also what leads to problems in hiring. I often talk, in the first round of interviews, about my philosophy, how the team is run, and how we’re simply different. This gets people VERY excited and I get them thinking about how they can contribute to this environment, what skills they bring, and what they’d like to learn. I often tell them that they can expect the first 90 days to be like a tidal wave – we use so many bleeding edge ColdFusion techniques (the rights ones, not all), that it can be very overwhelming.

The problem occurs when people come with years of experience, but that doesn’t translate to necessarily years of accomplishments. You may have worked for 12 years as a ColdFusion developers, in senior roles even, but if you have never touched a framework, then that is a problem. One year of experience here, I often say, is worth 3-5 at other places.

If you are serious at getting better as a developer, then you have to find an environment that is going to support (and push) you. That in itself is worth a lot.

And that’s where the problem is. I recently got two resumes from folks – who each had 12+ years of CF development experience, but I could not say they were truly senior (in my perspective). Regardless, I was willing to offer opportunities to them as Senior folks, with the understanding that they would be able to pick up all the exciting things I talked about.

And then… the focus turned to salary. Do you want to guess what both of them were asking for? Well, here it is – $130K-$135K annually plus benefits.

I was dumbfounded. I am no position to offer that kind of salary to anyone. Heck, even I don’t make that kind of money, and I’m a Director! You have to do your research: we’re a small company (less than 50 folks), and you have to add the value given by a supportive work environment.

I’m not saying we can’t attempt to meet your needs, but seriously… You know that old saying – you dress for the position you want, not the one you have? Well, that applies to CF developers as well. If you feel you’re worth a ton of money, then exhibit the qualities of a world-class developer. If I asked you to rate yourself on the scale of journeyman to master – where would you fall? Do you have experience leading a sophisticated team – often times filled with people who are smarter than you? No. Have you worked with OO frameworks in CF for 9 years like me? No. (I celebrate my 9 year anniversary with Mach II next month!) Are you a master of both the back-end and front-end languages? No. Do you have the communication skills to interface with all sorts of different stakeholders? No.

So what then qualifies you to ask for that much? Well – the answer usually is: “I can make that much consulting.” Well, if you want to pay for your own health insurance, forgo benefits, and work in an environment that really is not going to make you a better developer, and for a company that isn’t truly committed to ColdFusion as a development platform of choice, then go ahead. But if you want to earn a real salary, and be given the opportunity to prove yourself, and work your way up the ladder, then I’m here to support you and am all for that. But be real.

There is nothing at my company that say that you can’t make that kind of money, with benefits and possible bonuses, it’s quite possible. But you’ve got to also have the pedigree and focus to enable that. If you’re overly focused on salary, then I’m sorry – I have something to offer that is worth so much more.

There is probably more to say, but I’ll stop here. I’ve probably already said too much.


Comments on: "Hiring Woes in the ColdFusion World" (31)

  1. I’ll do it for 95!

  2. I agree with you on all points here and it frustrates me no end when I’m hiring. I have to say tho’ that I don’t think this problem is unique to CFML developers – I’ve seen the same thing in the Java world (although I think it is percentage-wise a bigger problem in the CFML world than in many other technologies).

    I look for developers who’ve learned other programming languages, have published open source projects, preferably have an active blog where they share their knowledge and experiences. Even a relatively junior developer who has those things on their resume is likely to be a better hire than a “senior” developer without those things.

    CF developers who’ve been at this for more than a decade without picking up new skills (OOP, frameworks, unit testing, automation, etc) have really painted themselves into a corner in my opinion…

  3. Isaac Sunkes said:

    There are a lot of CF developers out there that never improved their skills as the language grew. They never moved to or used CFC’s, they never worked in a MVC environment, and most likely never used an ORM. Your right, it is no excuse to say “my old job never gave me the opportunity”.

  4. Excellent post. I feel your pain. Like Sean stated, I feel very strongly that this mentality crosses the CF boundary into other languages. Why CF is often singled out and harped on by the naysayers is that CF allows so much flexibility to developer applications the way that works for you…is that many CF developers use this as a justification to excuse the need to self-improve.

    I’m constantly bewildered by these handfuls of developers (CF or otherwise) whom, when presented with solid, proven best practices, continue to defend their own kludgy, hacky, backwards way of doing things–simply because “the language lets me”.

    I’m always happy to hear when new (and seasoned!) developers learn new techniques, refine their abilities, and blog about them/share them with us, so that we can learn and refine as well. Likewise, it is sad and depressing when those same techniques and strategies are ignored (or even worse, called into question!) just so that developers can go back and do things the same old way…

    …and often, in terribad form.

  5. Good post, and so true!

  6. You put the finger on bloody wound. For all mentioned above, Companies migrating to different technologies. We have been looking for senior CF for four years either we end up moving to .Net or hiring juniors’ doing better job than seniors.

  7. Well written Sami, you did a great job of articulating the management perspective.

    There’s both defeatism and entitlement going on out there.

    Everyone in any position needs to take ownership of their career. And if opportunities to grow and learn aren’t being handed on a silver platter, you need to create your own opportunities to grow and learn.

    In the tech industry, there’s no such thing as staying level skills wise. Everyday, whatever it is that you know is becoming obsolete. Maintaining status quo is a career path towards obsolescence.

    • Couldn’t agree more.

    • I agree Tariq. Even where I work now, which has a dedicated training budget for every developer and makes sure we get training, books, conferences and so on, I still buy additional books for myself on a wide variety of topics and I go to additional conferences out of my own pocket, as well as attending user groups covering technologies I want to learn more about. Anyone who blames their lack of advancement on their employer is just being lazy, I’m afraid.

      • I have started hiring grads or people from other fields. I encourage my team to read blogs, blog themselves, attend the ColdFusion usergroup and I send them to conferences. If your a strong programmer moving to CFML is not that hard. I look for the right person for the job not a person with X technology.

      • This is a path we may consider. I know a lot of recent grads out of work, or stuck in jobs that don’t respect them. At the same time, I’m trying to hire for a Engineering (ColdFusion) Manager who could take the lead in training new folks.

  8. Well-stated! Even as a part-time developer I’ve made time to read about new technologies and improve my skill set. I attend user groups, online meetups and conferences, and hell, I’m even going to speak at a conference this year. Admittedly I have shortcomings too (everyone does), but if a person is passionate about something it should show. There’s no excuse for someone who codes full time to not show that kind of initiative.

  9. The resumes that I see all look pretty much the same. When interviewing a candidate, I often get the same feeling: “Yeah, they’ll probably be good… it’s hard to tell.”

    I think if I were looking for a senior developer, I’d ask them to give me a link to a project they’ve built themselves. It doesn’t have to be huge; just something that solves a problem that the person encountered and tackled. I would checkout their source and read through it, and then I would invite them discuss.

    I’d ask why they made certain choices. If they were to start over, what they’d change? What metrics were used to show that it worked as well as it could? What’s the next enhancement planned? Have any other users downloaded the project? If so, did they contribute changes? Did you incorporate them? What other feedback have you received, and how did you respond? Can you explain the project to another developer?

    The way a person answers the questions above would tell me far more than the names of the last four companies for whom they worked and a list of the products they used.

  10. @Paul: Definitely. We’ve found going after smart adaptable and motivated Jr Developers of any dev background and easily grow into CF. We’ve also tried Sr. Developers of other languages too, but find that they feel they’ve “invested” so much into their platform of choice that they don’t want to leave it. Which is a strange mentality to me – I’d pounce on an opportunity to learn something totally different. You’re literally getting paid to learn, that’s the definition of awesome in my textbook.

    • @samihoda and @tariq I agree Sr CF devs are very hard to come by in Melbourne, that being said I have introduced quite a few people to CF so in a few years we’ll have lots. Mater of fact I’m meeting a 1st year Uni student next week to get in nice and early and offer part time training/work.

  11. A fantastic post, Sami, and I’ve also encountered the same or similar issues. Reading a blog or subscribing to an RSS feed isn’t enough. If you’re a developer worth their salt, you’ll make a little time (at least, given family time etc) to play around, learn new things, try new languages, approaches, techniques.. simply reading what others do isn’t enough.

    To me, a developer isn’t someone who can build extraordinary enterprise level applications from the ground (although that would be nice).. a developer is someone who can understand what code is doing, whatever the language, who can adapt it so suit their needs and requirements, and most importantly, who is open to learning.

    An honest blog post, thank you.

    And if I wasn’t in the UK and potentially out of bounds, I’d love to work with you, It sounds like your company has the right approach.

  12. Well written post. This problem has been once of the contributing factor for a few places that I know of, who have dropped CF as a development platform. It’s sad.

  13. I just did a favor for a friend who took over the IT department at a small company there. He has developers there with 10 years of experience, in the same job as a CF developer making 95k.

    A code audit revealed SQL injection issues, XSS issues, No framework or any sort of organization structure. CF Debugging left on in CFadmin, terrible encapsulation issues, settings hard coded, you name it.

    Never did any training, never did any conferences, etc, etc.

    If he ever loses his job he’s going to be in for a real shocker – he’s at the level that I would hire a kid out of school with zero experience for 45k

  14. Dinosaur L said:

    Hello, I am one of the CF developers (with 10-years experience) you pinpoint in this article that is now looking for a new job. Have built a few CF websites (and even a credit card transaction gateway) successfully; but didn’t use much of OOP and frameworks. I was the only CF developer left with my last company, and gradually was phased out too (but those CF sites are still running on a daily basis!). But I’m good with other front-end and back-end (SQL Server, Oracle) languages too, and relish in communicating with clients and end-users, and don’t ask for 90K salary.

    So, if I want to make myself stand out from these bunch of complacent CF developers, what news skills should I equip myself with, in terms of priority? Also, any other non CF-skills I should acquire too – that’ll make myself more employable?

    Any suggestions will be very much appreciated.

    • Learn Git. Start coding socially – meaning: take the initiative to comment and suggest improvements in public CF code. Try out your stuff and share. Experiment. Keep a tech blog about what you’ve learned to force yourself to push yourself publicly. It’s your job to find the balance between reading, learning, experiments, and connecting with other developers. In just a couple months, you’ll notice a world of difference.

    • Contribute to an open source project, start learning a framework. It all comes down to competition. You need to find out what kind of job you want, figure out what kind of skills are required, and make sure you can demonstrate those skills to someone in a position to hire you.

  15. Regarding the “I can make that much consulting”…

    In my experience; companies budget between 25%-35% of an employees salary in benefits. So if you make a salary of $70K the company is setting aside $17.5K to $24.5K to pay for your benefits. I’m sure that percentage varies from company to company.

    If you can make $100K consulting, then the “salary” range I’d expect would be in the $70K-$80K range.

  16. For many years I have believed the greatest investment we can make is in ourselves and I live that, spending $10-$15k a year doing just that. In return I am privileged to have a healthy revenue from a job I enjoy immensely working with clients of the highest ilk. Unfortunately (in some ways) software development is an area with low unemployment relative to other vocations and I do not see that changing any time soon, unfortunate in that it creates hubris and a lack of realism in so many. Sami, thanks for the blog piece, oh and to echo Sean’s earlier comment this is not just the CF world I see it with my clients in the Java, .NET and PHP domains also.

  17. Other Sides said:

    I agree with everything except the ‘everyone can spend their free time coding’ attitude. That mentality makes it harder for people (especially women) to perform when they also are taking care of parents, kids, spouses, their own health issues, etc. If it’s not supported in the workplace, some people do not have the privilege and luxury of spending their time on work; plus asking people to spend their free time on work often leads to an unfair burden being placed on their support system, who then could no longer develop their skills. If a workplace is truly committed to pushing employees to learn and grow, they need to give them some time to do that; otherwise you’re saying that the only people hirable are privileged people (who, from the sound of it, are more vested in their own needs versus having any loyalty).

  18. Don’t know how I missed this post when you wrote it, but I love it. I have helped interview candidates for years and have seen way more people with years of “experience” but so little knowledge or drive to improve. Our company stopped looking exclusively for CF developers and began hiring .NET and Java programmers with solid OO and MVC experience. Picking up ColdFusion is no biggy for them. Another practice we instituted was a coding exercise that gives them a chance to play with some sample code (a small MVC app written in CFScript using ColdBox) It gives us a lot of insight into how they solve problems and learn and we regularly have a job candidate perform better on the code exercise with zero ColdFusion experience than other candidates with 10 years of CF under their belt.

  19. Well, I really like this post because you mention some good points which I always remember in my mind.

  20. I went into some detail about the contract vs employment scenario in a blog last year at http://www.coreybutler.com/post/2050431362/contract-to-fulltime-employment. As Sean mentioned, it certainly isn’t specific to CF.

    However; I do think some of what is mentioned in this blog is slightly misleading as far as consulting goes – particularly the part about not being in a dedicated environment. It is entirely possible to make yourself a better developer when consulting across different organizational landscapes. It just takes some self-motivation. Personally, I accelerated my growth through consulting because I took the time to learn other technologies & selected most of my clients wisely. I have worked with so many companies I lost track. The beauty of it is each of them was different… even when I return to a client. While consulting typically means offering guidance, in my case the teacher often learned as much/more than the students. The sheer variety of problems/solutions made me a more creative developer.

    I guess my only complaint about this is the inward focus on a specific company culture. There is an intangible value to an individual in working with multiple companies. However; I agree with the point that those who are using consulting money as a salary negotiation tactic need to be real about what they’re REALLY asking for.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: