Whilst reading the feedback to my last, apparently controversial, blog post about learning a new language to improve you own skillset I noticed something about the way we, as developers, sell ourselves and describe ourselves to one another. Every developer I know, even myself is guilty of it, and there is almost an entire industry revolving around this same concept.
So, what is this? In essence, this is our need as developers to label ourselves with a particular technological expertise – for instance, you may be a PHP developer, you may be a .NET developer, you may be a Java developer – which is fine, but very few of us will just describe ourselves as just a developer, or even web developer in preference.
As I have said before on this blog, technologies themselves (in the form of languages etc) are tools – they help us achieve an end game which is the delivery of a product to an end user, be it a web application, desktop application, or even the innards of an internet enabled doorstop. We as developers simply use these tools. We do not swear any form of allegiance to them, and we definitely do not use them in exclusion to others so why do we so often feel the need to label ourselves with them.
For instance, here is a list of all the various development tools I use day to day:
- ColdFusion
- Ruby on Rails
- Javascript
- ActionScript 3
- SQL
- CSS
- HTML
- jQuery
- Flex
- MXML
- XAML
- Silverlight
However, if I were to describe what I am trying to achieve with these tools it’s much simpler:
- Develop and deliver web applications for my customers
So, why would I feel the need, as so many do, to label myself as a CF or Rails developer (or indeed any of the 12 or more items in the list above).
Lets, for example, take a look at a very close relation to us developers, the designer. Now, a designer would never ever describe themselves in terms of the tooling they use, i.e. as a ‘Photoshop designer’ or an ‘illustrator designer’ – but by the end game they are trying to aim at, a ‘web designer’ or ‘packaging designer’ – so why do we do it? Why do we feel this need?
The only area of my activities where I would expect to be describing people in the way we actually do is that of the dark dingy world of recruitment, where I am specifically looking for a particular skill set – I specifically need some Flex skills, or a Javascript guru. However, if I were marketing myself to a recruiter in order to get a new job, surely I would want to keep it as broad as possible to maximise my potential opportunities.
Well, here is where I declare that I do not have the answer, but I am interested in any ideas anyone might have as to why we do it. Why do we have a preference to label ourselves with some sort of technological allegiance rather that simply saying ‘Web Applications developer’?.












Most of the time the label just comes from the position you hold… My previous job title was “Internet Developer Internal Systems” which BTW sounds fairly ridiculous – especially if you shorten in to the first two words – but if someone asked me what I do I’d say I’m a Web Developer. If they knew what that was and knew anything about programming then I could go further and say I was a ColdFusion Developer, obviously because that’s the primary server-side language I used, but as far as I’m concerned the HTML, CSS, JavaScript, SQL and assortment of a few bit’s and pieces is implied in “Web” and simply goes without saying.
Another reason for the label, especially when looking for work, could simply be that you feel you are expertly proficient in tool X and *want* to market yourself that way, despite or in spite of your exposure or experience with other tools. If you desire a job using tool X then there is no reason not to state that up front.
In the opposite direction, why don’t we just call ourselves “developers”, or “programmers”? Probably because it’s just too generic. It’s like saying “I’m a tradesperson”. That’s great, but are you the type that can fix my sink or paint my living room?
Sometimes ambiguity is nice, other times not so much.
The short answer to your question is: ‘pride’. We’re proud to use CF! At least I know I am.
And now the long answer…
I think the design world is different than the programming world. If you want to equate it to automobiles… you can be a mechanic (developer) of a certain type of car. But if you paint cars… does it really matter the brand of car it is? If someone wants you to paint their high end exotic, you paint it. But if they ask you to bore out the engine and stroke it… well then you need a specific mechanic.
And it also depends on your audience, boiling down to buzzwords.
I sell myself as a “Web Developer”. It’s the key phrase I aim for in my ongoing SEO.
My target is not an end client. I rarely rarely take work for end clients – unless I find the website either interesting, fun, or prestigious. Typically, not ecommerce resellers of made-in-china-ware.
Instead, I like to work for design firms. It’s usually ongoing work and I’ve built strong relationships with just a few. We trade work. They are the ones looking for ‘web developers’.
And for the most part, they don’t care what programming language you use (the exception being mods to an existing site). So it doesn’t even matter. Heck, they don’t even care where you host the site as long as it’s reliable. So I’m a VAR of hosting as well.
However, you should definitely make known the languages you can support. Someone may be looking for a specific talent.
BUT only say you are an expert in one or two. This approach makes a certain saying not apply to you: “Jack of all trades, master of none.”
For instance I would say for myself…
Expert in: ColdFusion and JavaScript
Specialty: Search Engine Optimized AJAX Applications
Programming in: PHP, My/SQL, Scriptaculous, CSS, X/HTML, etc
Whew… my finger tips are on fire.
I tend to see it in the same light as gangs/bikers showing their colors, no more no less. It gives them a sense of belonging to something important in their lives. Something they are community to.
You seem to be in a position that gives you a lot of freedom that you are apparently assuming most everyone else has. This simply isn’t the case. As you acknowledge, the labeling of specific technologies focus comes in part from how people hire (and not just recruiters). If I am a company that has committed to a CF/Flex stack I would like to hire a CF/Flex programmer. Can I train someone else? Yes, but that depends on the scenario of the particular company whether that is either possible or practical.
I don’t think there was anything particularly controversial about your prior post (no one would argue that learning new things is a negative) other than the tone, which continues in this post, that somehow your recent switch to Rails made you a more enlightened developer than one whose job focuses on CF and, thereby, has spent his/her career focused on the technology they actually use. I am glad you enjoy Rails and that your current position gives you the freedom to drastically change course like that…but I don’t buy that this somehow makes you a better developer. Sorry.
@Brian – as it happens I now do very little development these days as I’m now spending most of my time in the deep dark world of requirements – which is fun :/ ..
I was mainly talking about how we describe ourselves to our peers (recruitment aside), nothing more than that. I know many people have no freedom to use more than one or two tools at a time, but I also realise a lot of people, who tend to be in an agency situation, do have.
I completely understand where you are coming from with recruiting a CF/Flex developer – as I would do exactly the same, but my blog post was merely interested in the fact that day to day I would refer to myself as, say, a PHP developer, and not a web applications developer, which is what I actually do day to day.
Lastly, if you believe that I think I am better than anyone else in some way – you are sorely mistaken – I am the first person to question my own skills in any situation.
I normally (and am currently title at work) use the term “Web Application Developer” – as my predominant job is not to make the app “pretty” – that’s the design team. My job is to make it FUNCTION –
I use quite the similar list of tools and gave up the “CF developer” title a while back when Flex/AIR/AS3/JScript/etc all became staples in the arsenal.
I don’t think the analogy of CF as a tool compared to Photoshop as a tool for designers really works. If a Photoshop expert were to be hired at a company that only had Fireworks, the learning curve is minimal. And even if the designer convinced his manager to switch to Photoshop, he would not have to rebuild all the images.
But if a CF expert were to be hired at a company that only has .Net, there is a bigger learning curve. And I don’t think that company would even consider converting to CF and rebuilding all programs in CF.
The investment a company makes in a programming language is much greater than most other tools. A better comparison would be network administrator. You’re either a Windows admin or Unix admin. Yes, some people know more than both or more, but most fit into one or the other. And again a company makes a significant investment toward one or the other and when hiring, looks for someone with that skill set.
There’s an old Chinese proverb which says he who asks a question in a fool for five minutes, he who doesn’t is a fool for life? I’m a designer and I design UI and UX. I use many different tools and would never consider myself an Illustrator designer, Flash designer etc as it limits my ability to design. Personally, I find that learning new tools allows me to articulate my ideas in different ways. Whether you’re a CF user or not I think the point Neil is trying to make is that technology in its simplest form should not be limiting. Learning something new is like embarking on a journey. You start off with the desire to reach your end destination, that’s your goal. What you discover along the way is a journey. As with any journey you may make new friends, see amazing things and gain new experiences. You have gained knowledge! It is healthy to explore new avenues and ways of learning, that’s what makes a good developer. It’s not until you look at all your alternatives that you can stand back and constructively asses the pluses and minuses of all your application choice.
I just prefer to call myself a “Technologist” as I use many technologies to build an end product.
When developing Mach-II, I have to say that I’ve learned more from other languages and their respective frameworks than I’ve learned directly from CFML development. It’s all about perspective on how to solve problems or devise new solutions. Getting inspirations from other places is always going to give you more diversity then if you only look from within.