"If you don't know all of these, don't call yourself a web developer", followed by some list of web dev related terms. Have you encountered one of these posts before? I come across them every once in a while on social media.
These sorts of divisive claims bring about nothing but toxicity to our community, and only alienate the junior developers who are new to it. Especially for the profit of some traffic on Twitter or elsewhere, it's despicable.
They paint a completely wrong image of the web dev scene, too - being a web developer is much more about the perpetual process of self-improving, learning new tools & technologies and experimenting with methods to combine them in the best way, rather than knowing some constant list of terms (which are often occasionally useful at best). And, built on top of the open-source industry, the web dev industry is one of the most welcoming industries out there, to programmers of any caliber.
So, to be perfectly clear - you don't need to know closures, the event loop, hoisting, etc. to be a web developer. The same goes for non-niche concepts & technologies - you can be a good dev without knowing Docker, FP/OOP or cloud computing, for example. Knowledge is always good to have, so if you're not familiar with them you should aspire to learn them sometime, but you can also be a damn good developer without them.
I think my personal journey is a good indication to this point: I was met with web development close to three years ago, when I began my mandatory service; beforehand I knew some Java, from school and from coding as a hobby. The "tutoring" I received consisted of one half-baked, 30 minute lesson about the basics of HTML, and my "training period" consisted of watching some YouTube tutorials for close to two weeks, after which I was already being assigned tasks (that I was obviously not ready for).
Virtually all of my knowledge and experience was gained on-the-job, much of it through ad-hoc googling, and it was months before I actually went back and strengthened my knowledge on the fundamentals. And, for an even longer time, concepts like CORS, XSS and Virtual DOM remained unclear to me.
It's not like I'm at the top of the industry today (still working on it!) but I've definitely gained a lot of experience and knowledge as a web developer, and have created some awesome projects along the way. And you can too! don't let anybody deter you from it.
My bottom line is - don't let any random list of technical terms discredit your journey as a developer. Be proud of what you know, and be curious in what you don't.
And, perhaps most importantly, be a good person; see people, not their labels, and invest energy in helping them improve instead of discouraging them from doing so.
Top comments (38)
I know exactly the Tweet (and a good few others) you're referring to and I couldn't agree more with this statement. For some reason, at least lately, these tweets are coming from so called "experts" peddling their online courses. I really hope it doesn't affect any new comers to the field as this kind of gate keeping is toxic, discouraging, and completely unnecessary.
I know what tweet you're thinking of as well. It made quite a lot of stir recently and popular devs like Emma Bostian also mocked it
Just saw the same thing. What a shame that this stuff gets put out there as "NEED" or "MUST"...
Yeah... this reminds me of some pundit who has been claiming Clojure is the best language ever... And who also happens to have published a rehashed TDD course with Clojure on his website
Everything in programming is optional to include the tools you use.
There are NO hard set rules only best practices which are also optional.
These are the things you absolutely have to have to do web dev
Everything else is up to you.
My suggestion to new web devs is write code. Vids are good but you will learn the most by actually writing code.
So the actual things you need to be a web dev are: nothing.
There is no hard requirements.
Just to clarify - you should learn all of these technologies (and others!), eventually; reiterating the point I made above, being a web developer is about the perpetual process of self-improving, learning new tools & technologies - popular as well as niche ones - and experimenting with methods to combine them in the best way.
Always aspire to learn more and improve further!
However, if you're just starting out, or still haven't learned the newest or most advanced tools yet - that's just fine!! You're just as much a member of the web dev community.
This is dangerous and hard coded bugged concept.
Should never guide a person like this.
especially FP/OOP, why would a person not learn these concepts. I feel like you had some bad experience while learning programming
Please read the post!
I would never tell anyone not to learn OOP, FP or any other tool or concept; in fact, I've introduced a good few people to both of those! They (and other mentioned examples) are important and useful for developers as a whole.
My main purpose with this post is to encourage junior devs who might come across these claims; they belong in the community even if they don't have a strong grasp of these concepts.
I should have read it like 7 years ago, it would help me to believe much earlier, that I am a real developer, not just a layout maker with background in design knowing nothing about real programming 😂
Funnily enough, my weakest skill in development (front-end dev, at least) is design, and would give so much to be talented in this area as some of the designers out there! I think many devs feel the same way, so I'd consider your design skills as a strong (and not common) aspect of your dev skills, not the opposite!
👏 Completely agree. Consider this: there is more "legacy" code than "modern" code by virtue of there having been far more time for legacy code to get written. Whether you define "modern" code as code written in the past three, five, seven, or ten years, there's still more years before that where old applications were being written.
Second, most code is written to address solved problems in business: a web form to collect data from an interested sales prospect, a report generated from some internal SQL database, a customer support case management app. In the overall developer population, only a percentage is working on AI, ML, augmented reality, cryptocurrency, etc. Even "cloud" ...I saw data recently from large corporations that showed that barely half of code is in the cloud. The rest is running on a server in a data center the old way.
Trends are just trends and don't reflect what most devs are doing which is getting valuable stuff done with what's available at hand. :)
If "know" was changed to "learn", I would have a problem with it too 😂
I guess that because this difference is (visually!) small, some people missed it; however as you've said it's a very important difference!
Well said, totally agree! Good article especially here on dev.to, as I like dev.to for its welcoming and open-minded culture, opposed to StackOverflow's elitist gatekeeping on one hand, and "Tech Twitter's" total lack of relevance and quality on the other.
I don't think there is a "journey" where everyone would have to learn Docker eventually.
Learn the tools required in your specific project setup. Some companies have established DevOps pipelines with Docker, GitHub, Jenkins, Kubernetes, whatsoever. Others have been developing for years without even using git.
If you wrote the article 20 years ago, we would discuss if it's necessary to know Adobe Flash to be a proper web developer. Tools come and go. Languages and frameworks come and go. Different people have different journeys / learning paths.
The whole movement of technology is towards conforming. Once something new comes along which enough people think may add value to their CV, they jump onboard. These can become sunk-cost fallacies.
The truth is, you don't need any of this stuff. You can construct your solution, and then get experts to collaborate with you.
Feel like its not smart to tell people that they don't need to learn things (while starting).
Docker (in my opinion) is too powerfull to just ignore it.
The learn-journey itself can be different, but we all need some good knowledge to do our jobs (especially in the long term)
Dont fear learning new things, we all do, always.
I absolutely agree with you!
Web development is all about perpetual learning, especially when starting out, and depending on the path you take there are different technologies that are cardinal for you to learn to be effective.
My point is, taking Docker as a good example, that it's without a doubt a powerful and important tool for web developers - but it's wrong and hurtful to label the developers who aren't familiar with it as non-developers. Every developer should sit down and learn Docker eventually, but we as a community should also respect those who haven't reached this point in their journey yet.
I agree with the global idea of your post. What you need to be good at your job depends above all on your project. With all the no code tools available, you can do a great job and release a good project without even knowing any code concept. And i mean it's great, a bigger dev community is always better, so let's include and love everyone.
But even if you don't need to know those or those things to be a develloper, u'll need to learn them to be a better developper. Each concept can help you to get a better understanding, and a better global vision on your project. Understanding it better, and know more option will make you save time, get a stronger project.
If you don't know how to write an OS in Fortran with 4KB of RAM, you're not a real programmer.
Joke aside, I think the real problem is: development gets more and more complex because the systems we build get more and more complex. Follows a truck of tools we should know because they're on these nonsensical job offers, random technical tests to be sure you're a 10x developer (whatever it means), and others subjective mess which are never about empirical data. It's hell, especially for beginners.
The only thing we should ask to developers: the will to explore the problem space and iterate on solutions to find the simplest ones. The rest is details.
On the positive side: the field is young and we build it, so we should all write this type of article, to move the industry in the good path.
Hey Nitzan, I am only going to touch on the subject of closures here. While I do agree with some of the things you wrote, I kind of disagree on closures. This is a fundamental JS concept and not some fancy new tech. You can sure start doing web development without having a solid grasp of the concept but that will eventually come and bite you in the a**s. At some point in your career you will have to learn about them so why not start with some strong JS foundations?
As a self taught developer closures really confused me when I started learning JS and the classic counter example you might stumble across certain books or articles didn’t really help. I think the biggest problem beginners face when someone tells them that they NEED to know about all these concepts is not explaining WHY and what are some practical applications for them.
A fair point!
Foundations are super important, and especially web development - where so many technologies eventually boil down to abstractions over JS, HTML and CSS - it's critical to have a firm grasp of them.
I think the event loop in Node.js is another good example for this: you could get around without understanding it for a while, but eventually you'll come across a bug that you simply cannot figure out without it (and not knowing what's causing the bug would make fixing it much much more difficult!)
In retrospect, perhaps it was better if I'd explicitly said this somewhere in the post itself. On the other hand, the importance of foundations deserves a whole piece of its own, so I might just do that! 😂
As for your last point, you're completely correct, and I'd like to add that it also applies for some of the most popular tools out there - some of them are so popular that devs learn them (and, in turn, use them) without the understanding of why (and when) they are important. And typically they are important, but it's just as important to know why and when!
When I’m hiring a web developer it would be nice to know certain stuff. I will pay for a professional developer not some developer writing software for fun.
Yes you are an developer when you first line of code is written. would you work for me when not knowing basic stuff. No.
And yes, there is a big difference between having mastered web development and being a web developer. People should stop gate-keeping the field by setting up arbitrary rules of who can and cannot be considered part of it.
Overall, people just need to stop caring who is or isn't part of a club, including ourselves. At the end of the day, what does it matter to me if anyone else considers me to be a "web developer™"? I don't get paid according to how many people on twitter agree that I fit my job descriptions. I get paid to write code.