Earlier this week Rebecca Murphy wrote an article about what she considers a "baseline" for JavaScript developers: A Baseline for Front-End [JS] Developers: 2015. It's a good article and I highly recommend reading it, but some of the comments raised an issue that I've seen in our community lately that I wanted to address.
It is an incredible time to be a web developer. That isn't to say we don't have a lot of problems, just that our field has grown in leaps and bounds over the past five years or so. JavaScript, and web standards in general, have created a rich playground for us to build not only web sites, but mobile and desktop apps as well. When I started, here were my tools:
At a high level, web developers have access to:
- Multiple different editors targeting multiple different types of web developers/designers. Everything from, yes, Notepad, to Sublime Text to Brackets to Dreamweaver and vi.
- Browsers that are far more standards complaint than in the past and ship with incredible debugging tools baked in.
- Command lines tools like Yeoman and Bower to help generate new applications and work with dependencies.
- Testing and linting frameworks like Jasmine and JSHint to help ensure the quality of your code.
- Automation tools like Grunt and Gulp that relieve you from repeating manual steps.
- Libraries that cover every possible front-end need from date manipulation to web cam sharing to game development.
- MVC frameworks like AngularJS and Ember to help build larger and more complex applications.
The amount of options we have now is incredible. And - admittedly - overwhelming. No one can try to stay on top of this and no one should even try. That's not the point.
Having a tool does not mean you need to use it. A tool is there to help you when you have a problem, and you know what? Life provides plenty of problems without you needing to add more to them.
As a web developer, you cannot expect to know everything, or even a sizable percentage of everything. What your goal should be is to stay aware of our world in terms of what types of solutions exist. The goal is knowing what a tool is and what problems it solves - not being an expert in every tool.
I know, for example, that there are some great tools for generating apps and scaffolding. But I don't need them now. When I start a new project, I'm not going to force myself to use them because they solve a problem I do not have! Keep that in mind.
There's a lot of opinions out there about how you should be building. I'm certainly someone who's been know to share his opinions as well. But at the end of the day - you need to focus on a process that makes you and your team successful.