loading...
Cover image for When Do You Become A Developer?

When Do You Become A Developer?

stephsmithio profile image Steph Smith Originally published at blog.stephsmith.io Updated on ・7 min read

This was originally published on my blog, where I often write about remote work, learning to code, and women in tech.

When do you become a developer?

Over the past year I've taught myself to code. I've built and launched four web applications, taken courses from front-end to back-end, can work with APIs, and know what a Promise is.

Yet for some reason, I still don't feel like a developer.

I thought this feeling would slowly fade over time as I learned more, built more, and code no longer looked so foreign. But to this day, this identity still doesn't seem to fit and it's unclear when it ever will. I'm left wondering...

When will I feel like a developer? When will I "become" one?

I've been thinking more about why I still feel like an imposter. Is it due to a personal perception, an external one, or another reason entirely? I decided to reach outside of my own world to find out.

TL;DR

When do you become a developer? No one knows!

The Golden Question

I decided to poll hundreds of people to see when they thought this inflection point happened. Was it when you…

  • Wrote your first line of code?
  • Got your first user?
  • Created your first project?
  • Got hired as a developer?

Or perhaps it could be something else entirely? When you...

  • Understood the difference between X and Y?
  • Could teach another person development?
  • Moved past "Mount Stupid"?

Dunning-Kruger Effect

Candidly, I was expecting the responses to fall more heavily within "Woah IDK", since I was so unsure of the answer myself. Interestingly enough, many people seemed to have concrete views on this. However, what was perhaps just as telling was that those views diverged from one another. All answers received ~20-30% of the votes and from a quantitative perspective there wasn't any more clarity as to what the "right" answer was. Perhaps that was the answer in itself.

A "Developing" Perspective

First, I'd like to share some of the responses from those who did have a defined point of view.

Write first line of code (17%)

From Quora: "You can consider yourself as a programmer when you are able to write at least one line of code. We don't care about the length of the line, but this line of code should produce something which is correct."

Create first app (33%)


Get hired as one (22%)

Woah IDK (28%)

Other

How to Save the World

The results of this thought experiment reminded me of a video that I saw in the earlier days of the social media﹣back when Vine was a thing.

The video was titled "How to save the world". Naturally, you'd expect something highly enlightening about the state of the world and/or our future, but instead you get a boy who says:

  • How to save the world:
  • Search for world
  • Click on an image
  • And "save" the world (as he's saving the image to his computer)

Obviously this is a joke, but perhaps an unintentional lesson that we don't always need to take things at face value. Perhaps there are more interesting interpretations of what "a developer" is that we can dream up and maybe learn a thing or two while we're at it.

"What do you do?"

Upon further consideration, it became apparent that software development often doesn't have the same enforced credentials as some other occupations. For example, there are rarely self-taught doctors or open source construction projects.

Sure, there are many software engineering degrees, but there are also a significant number of paid/non-paid contributors in the software industry that do not have any sort of certification.

I've put some thought into why some roles require a degree and others do not. I came to the following two thoughts. A profession that requires a degree...

  1. Has an agreed upon, correct approach to get to a specific outcome
  2. Has a certain set of steps required to learn said approach

For example, someone who is a doctor needs to learn a discrete set of theory, do a discrete set of surgical procedures, and when push comes to shove, they need to know the "right" answer. Of course, there are some situations with ambiguity, but in many cases there is a correct order.

What I find so interesting with software is that there are a myriad of approaches that can be taken to get to a myriad of solutions. In other words, there are many wrong methods, but also many correct methods﹣and you can get to these correct methods without being formally trained. This is partially due to the democratization of information, but also that software development is in many ways the act of problems solving without a single correct answer. Therefore, there is no single approach to learning it.

For example, there are software engineers who can create similar solutions with completely different inputs (ex: languages, frameworks, tools, functions, etc.), while others are also creating wildly different solutions with the same inputs (ex: unique applications with the same underlying tooling). This rings true for other creative industries as well. For example, if you gave two people a canvas and paint, they could create wildly different things in which neither would necessarily be incorrect.

"So, are you a coder? Well, are you a problem solver?"

Nth Degree of Correctness

I think we can further this idea, through the concept of certain roles having an "Nth degree of correctness". What I mean by this, is the varying degree of approaches that will get you to a "correct" solution. For example, with data entry there is one correct solution: the data getting input correctly. Sure there are variables like speed, but ultimately, there is only one correct outcome. As we've already identified, software engineering almost always has multiple correct solutions.

"In fact, no one understands as well as a computer scientist that in the face of a seemingly unmanageable challenge, you should neither toil forever nor give up, but as we'll see, try a third thing entirely." – Algorithms to Live By

We can start to visualize some of these roles and their "degrees of correctness" in an effort to gain some clarity regarding how jobs or industries may evolve.

Nth degree of correctness

The further to the left (the fewer "correct" solutions), the more that particular skill can be trained and repeated. This is also similarly true for the skills which can eventually be trained by a computer to learn and repeat.

On the contrary, the skills on the right rely more on problem solving, discretion, and ultimately the lower barrier to entry opens up new approaches to learning which we're seeing in many spaces like design, development, and marketing.

The Beauty of Development

As aforementioned, in order to participate in some industries, you need clear accreditation. This in itself has compounding effects on the difficulty for independent parties to contribute and advance the space.

Perhaps that's something so beautiful and optimal about software development. Its lower barrier to entry is what enables so many people to contribute and perpetually keep the industry growing and thriving.

That's inherently why no other industry can keep up with the level of innovation that software allows, not just due to its function, but it's openness. When you have millions of people openly contributing to something, those contributions inevitably result in progress and with that constant evolution, there will always be something new to learn. This results in an infinite learning curve which I think is beautiful.

Keep Your Identity Small

The concept of "becoming a developer" also had me thinking about identity. Paul Graham, well-known YC co-founder, has given the advice to "keep your identity small". Perhaps we can utilize that idea to further understand the implications of the original question.

Starting with a definition taken directly from the WWW, a software developer is:

A programmer, developer, dev, coder, or software engineer is a person who creates computer software.

Notice that the definition doesn't include any information about degrees or projects or status, but instead focuses on the act of creating. If software development doesn't require a formal degree and all it really means is to create software, why do so many people have trouble considering themselves one.


Perhaps that's because more often than not, a different picture is painted. Instead, there's an image that to be a "developer" you need 10+ years of experience and can code with your eyes closed. I'm being facetious here, but you get the point. There's some degree of gatekeeping that exists, whether intentional or unintentional, and I believe that plays into our ability to see ourselves as developers, even as we are indeed developing.

For example, someone on Quora mentioned:

I had a professor who once said, "you can't really call yourself a programmer until you understand recursion."

While it's good to understand the fundamentals, these sentiments often prevent people from being able to identify with a subject and not everyone is able to effectively "keep their identity small".

The act of gatekeeping or drilling home the fact that someone is not a developer until X step, results in people (like myself) feeling like imposters. And when someone feels like an imposter, they're unsurprisingly less likely to continue or even start in the first place.

Redefining a Developer

Hopefully I've convinced you by this point that there is no specific instance when someone becomes a developer. More importantly, building these barriers can be potentially damaging for people as they're unable to view themselves in the lens of that identity.

Two concepts emerged from this thought experiment that I like:

  1. A reflection on the beauty of development. The open source nature of both learning and creating is what I believe will continue to make the software industry thrive for many years to come, due to the systems in place which allow for open contribution.
  2. The concept that perhaps we should remove "titles" or base them on your level of contribution versus your level of prior knowledge. In other words, your affinity to learn, create, and build. Whether it's through open source projects, creating tools for the community, writing articles, or mentoring someone, I think that the act of engaging more accurately defines a developer.

In short, it's now clear to me that especially in software development, titles do not matter. Instead of a one-time designation like a degree, being a "developer" should be measured by whether you're still adding value.

Perhaps that's why the word development is so synonymous with evolution.

PS: Come discuss on Twitter or subscribe to my blog.

Discussion

pic
Editor guide
Collapse
hkly profile image
hkly

'When will I feel like a developer? When will I "become" one?'

It's all a leap of faith ;)

Image of Spiderman from Into the Spider-verse freefalling

Collapse
nikodannemiller profile image
Niko Dannemiller

I'm only working on my bachelor's degree right now I over heard a group of classmates talking about how they were computer scientist while we're fumbling around with linked lists. Wish I had their confidence but I think my tipping point will be the first time I get paid for some code I've written

Collapse
kayis profile image
K

I think the problem is where to draw the line.

I know a bunch of people who wrote software more complex than I ever did, but they talk to me like I'm a "real" developer and they are just hacks, a bunch of scientist and mathematicians who just fumbled around with C.

My girlfriend is in marketing and writes code for automatic content generation and she wouldn't consider herself a developer.

All these people get paid for the code they wrote.

Collapse
stephsmithio profile image
Steph Smith Author

Yes, exactly! I think there really isn't any fine line.

Collapse
andrewbrown profile image
Andrew Brown 🇨🇦

I've been working with Rails for 15 years but only professionally for 12.
It took me 3 years to put my first web-app into production.
I was not a developer until afterwards.

This is my frustration with grads adopting "Full-stack developer". Its no longer a glided title that was hard to earn. Anyone who takes a bootcamp takes on the title. But a full-stack developer used to mean you can do everything end-to-end (including devops and design).

But that's just how things go. Everyone is a developer just like everyone is a photographer now.

Collapse
kayis profile image
K

Quite true.

But on the other hand, we are all individuals.

There are a bunch of people who are more motivated, more intelligent or luckier than others.

I developed stuff for over ten years, and many concepts took me rather long to grasp. I poured in at least two years of programming courses in high school and four years of CS at university to gather some skills that some people would find "pay worthy." Not to mention all the private development stuff I did.

Then I see some people getting the chance of a coding boot camp building production-ready software in less than a year.

Collapse
andrewbrown profile image
Andrew Brown 🇨🇦

It doesn't matter time put in its whether the title reflects your actual skill and I think too many take on a label which doesn't apply, but we have no professional certifications for such titles so nothing can be done.

Collapse
mpermar profile image
Martín Pérez

Software engineering is ( although some people hate this ) a creative profession. When does a painter become a painter? Or a musician becomes a musician? Some creators will only be starting considering themselves, creators, after someone starts paying them to create, i.e. either by getting a job or by starting their own individual careers. Some others, despite having a professional career, will only consider themselves creators when they have created something they are proud of. Some others will never consider themselves creators just because their bar will always set too high, even when many other people might have them as role models.

Collapse
stephsmithio profile image
Steph Smith Author

I like this analogy a lot! I agree - I have seen people who may not consider themselves X, even when many people look up to them for their abilities in that very field.

Collapse
karlredman profile image
Karl N. Redman

Great article! Well put-together/organized and informative!

  • "When do you become a developer?"

    • I attempted to answer this question a couple years ago on medium: How To Be A Computer Programmer. However the best way to answer this is with a quick story:

      • When I first started programming (I'm self taught also) and even after I landed my first development job my boss asked me to write an application that would be immediately released to the customer. After a week of working on the app (24/7) I panicked just before turning it over to my manager. I frantically asked every other veteran programmer: "Is this it? Is this good enough to release to the customer?".
      • Finally, after several people refused to answer, or answered with "I don't know, ask your manager." I asked the most senior developer, the 'hot shot', highly educated, highest paid software engineer in the company: "Is this it? Is this good enough to release to the customer?".

        • His reply was: "Does it work?"
        • I reluctantly said: "Yea, I think so(?)"
        • The expert declared: "Cool.... Ship it!"
    • And so I began to worry less about 'feeling like' a developer and just continued to write the best code I possibly could given the resources afforded to me.

  • "I thought this feeling would slowly fade over time as I learned more"

    Yea.... I'd say if you're doing it right, developing, that feeling will never, ever go away. You will always need to learn/re-learn things from scratch. You will always ride an emotional roller coaster with every project. And you'll always feel 'on top of the world!' when your project is successful at it's task.

  • My 2 cents... If you are asking this question, you very much are already a developer.

Collapse
stephsmithio profile image
Steph Smith Author

Thank you! I love the story you shared. I was just speaking to a friend today about how I feel comfortable creating my own projects, but don't know how I would hold up in a paid or team environment, mostly because of confidence. You're right that regardless of how senior you are, it's a continuous learning process.

I like this sentiment as well:

If you are asking this question, you very much are already a developer.

Collapse
jaakidup profile image
Jaaki

To call yourself a linux pro, you had to recompile and then hot-load the kernel into the os while you were running it. Crazyness, but I did it because I wanted to figure out how.

Software is different. It's a creative occupation, which is also why I sometimes find it truly difficult to understand why some people value CS degrees (Maths based) education. So many of the maths experts I know are quite impractical, which is something I truly value in a developer.
I find other educations better suited to development. (Electronics, scientists, language skills, art :D)

Michelangelo didn't study to be a doctor, but I'd sure as hell trust his opinion, maybe even him doing an operation, more so than just about any doctor that just finished studying.

Once you understand that the education system is there to make money off of people who generally know absolutely nothing about the topic before they enroll, you might see things differently.

So, my opinion is that no boot-camp or course makes you a developer,
but years of practising can make you a developer.

Collapse
stephsmithio profile image
Steph Smith Author

I agree that development (and many other important professions) is creative and years of studying may not be the best indicator of ability.

I personally felt more "like a developer" after creating projects that worked versus going through online courses or tutorials. By actually creating/troubleshooting, I felt like I understood what was going on at a way more tangible level.

Collapse
jaakidup profile image
Jaaki

Oh yes, indeed.

There is no teacher like hunting down some little bug at midnight! :D

Tutorials and courses really spoon-feed you all the information, whereas building something makes you think and search for the solution.

I tend to forget much of the tutorial info, but the info I had to search for for a few hours stick with me. It's like digging for gold!

Collapse
thekashey profile image
Anton Korzunov

I become a "developer" more than one time.
"Developer" is not what are you doing, or what you are working on - it is "who you are".
It's a set of mind and a lifestyle.

Collapse
sethljones profile image
Seth Jones

I think credentials or pedigree are sufficient for calling yourself a dev, but not necessary. There’s more than one path to “developer.”

I’m a bootcamp grad that has been coding 4-5 years, and I think for my first 2-3 years I didn’t consider myself a dev.

The point where that changed for me was when I became confident in my ability to learn just about anything, even if I had never seen it before.

After a while, just about everything “new” or “hot” started to have elements of familiarity, and I could draw parallels between those things and concepts I already knew. Rails vs Django (MVC), Vue vs React (component based js libraries), functions vs methods, classes, state management, props, for loops, conditionals, authentication, API, RESTful architecture, etc. These are all concepts that translate across tech, and once you’re familiar, everything else can be mastered with time.

For me, when knowing that I could learn just about anything if I gave it my time was the point where I considered myself a “dev.”

Collapse
jorgecc profile image
Jorge Castro

Long story short, I got an Atari 800xl without a thing (games or software) but the microcomputer, the connector and the manual, aka I got a brick.

The manual was more a brochure than a manual, but it contained a bit of code:

https://ia601009.us.archive.org/BookReader/BookReaderImages.php?zip=/11/items/Atari800xlOwnersManual/Atari_800XL_Manual_jp2.zip&file=Atari_800XL_Manual_jp2/Atari_800XL_Manual_0016.jp2&scale=4&rotate=0

So, I copied this code, and it worked. Then I changed some things, and it worked too. So, technically, I learned hacking.

Collapse
madhadron profile image
Fred Ross

It's interesting that "developer," which for a long time referred to someone who financed and orchestrated a project to construct buildings on a piece of real estate to then sell for profit, got coopted for software.

Collapse
ahmaddeel profile image
AhmadDeel

I'm a developer and I choose all of your options on when to be a developer.
Why? Because as long as I develop my knowledge (or wisdom in that graph) I do my job.
Happy coding.

Collapse
stephsmithio profile image
Collapse
modafalla profile image
Mohamed Dafalla

Your writing is superb, thank you -:)

Collapse
stephsmithio profile image
Collapse
citizen428 profile image
Michael Kohl

Self-doubt is pretty normal in any creative endeavor, a complete lack of it would be more worrying than any "imposter syndrome".

Collapse
ashtoronto profile image
Ashwin🇨🇦

As soon as you stop googling the solution 😜

Collapse
theredspy15 profile image
Hunter Drum

I have to say, when I spent my first all night-er working not a project or even idea. But just writing overly complex code. That's when I felt comfortable calling myself a software developer

Collapse
stephsmithio profile image
Collapse
cheahengsoon profile image
Eng Soon Cheah

I not consider myself as developer because sometime I also play a role as consultant or Technical Advisor in Marketing Event.