I explained that, to learn “how to code”, my niece probably wrote some text in a language that a browser can understand, and made something interesting happen on a computer. My “older-school” more-technical relative, however, took umbrage with this loose definition of a Coder’s craft, and said that unless she was writing algorithms to reverse strings and convert types, her work could not be considered to be code at all, and thus she could not be “learning to code” to potentially become “a Coder”.
This uncomfortable conversation periodically reverberates across the internet as practitioners of this strange profession try to define what it is, exactly, that we do. Are we Coders? Software Developers? Engineers? Programmers? To find out, I posted a quick Twitter poll to see what we call ourselves as professionals. 6000 votes later, we came to no consensus at all:
While many people embrace some combination of the words “software”, “developer” and “engineer”, because there is no state-sanctioned training path for this field in the U.S., there is no universally-accepted title that one earns even after completing a degree.
The situation in the U.S. seems unique: in Canada, the term Software Engineer is protected - and anyone without such a degree plus practicum training and experience risks censure - it’s actually illegal to use this term loosely. Fun fact: there’s a Canadian “Ritual of the Calling of the Ring” designed by Rudyard Kipling during which, after being certified as a Software Engineer, a new professional is gifted an Iron Ring. Talk about being married to a career!
And what about all of us self-taught Software Developers? How do we describe what we do?
What is it that we actually do?
As “Technical People”, this field in which we are employed encompasses a wide variety of technical skills and activities. Some people test software that other people have written. Some design user interfaces. Some write documentation explaining these interfaces, tests, and programs. After 15 years of writing software that supported the creation and maintenance of various customer-facing and internal products in several different companies, I myself am now playing the auxiliary role of Developer Advocate (which might merit a separate article).
According to my non-scientific poll, some people prefer to be somewhat specific about describing their profession. Some “Software Testers”, “Consultants”, and “Technical Writers” responded, whereas others embrace the term “Analyst” or “Architect”. Other people stated that the response depends on the audience, embracing a broader description:
A common complaint returned directly to the very fluidity of both our job title and how people perceive it:
To add another wrinkle, it seems that the terminology used can directly impact your perceived value in the field, and thus your salary. Why call yourself a Web Developer for a median income of $65,000 when you can be a Software Developer for $98,000? Words matter!
I think it’s fair to say, then, that:
- People who write computer programs for a living generally term themselves Software Developers
- They often have to explain themselves further, depending on the audience, an activity that can be very frustrating
- They take a broad view of the field - if they write lines of text that make things happen in a mobile app, browser, piece of hardware, wearable, or some other kind of device, then they consider themselves Software Developers (with finer gradations as secondary explanations)
Based on this broad definition of this professional activity, then, I believe that what my niece is doing is, in fact, “coding”. In the future she could style herself “a Coder” (or, preferably, “a Software Developer”) if she stays the profession. The kind of code she’s writing, in fact, doesn’t matter.
Neither do the tools she's using, by the way. A perfect storm of fury erupted on social media when Peter-Paul Koch displayed a slide stating that "If you can't do without tools, you aren't a web developer". This profession is not defined by its tools, but rather by the clever way that we use languages, syntax, and community collaboration to push web and mobile experiences ever further to benefit our users. In a rapidly-changing profession, being a true Software Developer is being a great learner, embracing the journey as you evolve your thinking and skills.
Who’s in and who’s out?
The above broad definition, actually, can raise eyebrows and create Twitter drama (to be fair…what doesn't create Twitter drama these days?) in particular when we approach the thorny issue of UI design and behavior. Can someone who specializes in CSS be considered a Software Developer?
To misquote Heidi Klum, “If you write code, you’re in. But sometimes, you’re out”.
Let a Twitter poll get popular enough, and the naysayers come out:
Developers of a feather flock together. There’s an insidious trend of pattern-matching and exclusionary tactics that make some Software Developers consider themselves more "Developerish" than other Developers.
This sort of exclusivity makes articles like this one by Lea Verou and this talk by Elijah Manor particularly poignant. Once you enter the front-end arena, touching on design, colors, typography - or as my colleague Tara Manicsic would say, “Turning Ideas into Pixels” - you enter uncomfortable territory for many full-stack and backend developers. Are specialists in Design and CSS “really Developers”?
The skills required to write good CSS code are by and large the same skills required to write good code in general. CSS code also needs to be DRY, maintainable, flexible, etc. CSS might have a visual output, but is still code…It still requires the same kind of analytical thinking that programming does. —Lea Verou
To reiterate, you don’t have to concentrate on algorithms to be a Software Developer. You might focus on CSS, PHP, or a framework like Ember…or even be a master of some crazy app like After Effects…and if you write lines of some language that make things happen on devices, you are a Software Developer.
These Girl Scouts are learning how to hand-code a web site using HTML and CSS. From ng-conf 2017 with Tara and Jen
Do #ILookLikeAnEngineer ?
Of course you do. The above-mentioned exclusionary tendency has a lot to do with pattern matching. Check yourself! Deep down, do those people who are primarily working with CSS and SVGs and cool responsive web sites actually look the way that you think developers ought to look?
Perhaps it’s time to expand the pattern to include people who look and act a bit different than what you’d expect in this profession. The hashtag #ILookLikeAnEngineer was launched after some really unfortunate feedback from an unconventional ad in the Bay Area BART trains. Do you look like an Engineer? How about a Software Developer? Does it matter?
It's been 70 years since ENIAC ran its first lines of code (all programmed, incidentally, by women) written in a modern paradigm. It will do us good to remember where we came from, and where we want to take this profession.
If you take an “all-encompassing” approach to defining this profession, I believe, it will make it all the stronger. We are all Developers (or Coders, if you prefer), whether we specialize on writing code for the front-end, back-end, mobile apps, wearables, or hardware. And our profession is awesome, even if nobody agrees on what it actually is that we should call ourselves!