I've recently written about the some of the stresses that we face as web developers: there are new frameworks, new languages, new processes, and new tools being made every day, and it's super hard to keep up.

But I'll let you in on a secret: learning and being good with a piece of technology is the easy part. The toughest things that I had to learn as an engineer were the more human parts:

  • Learning to collaborate with designers and other programmers in the team.
  • Keeping people in the loop with what you're working on.
  • Being able to set expectations to other people about your work.
  • Being able to communicate what you're going to build with everyone.
  • Being able to sell yourself and your skills.
  • Being able to ask and question what your audience / client / boss / co-worker needs.
  • Being able to weigh pros and cons and make compromises on design and implementation.

The way programmers and designers are portrayed in the media just isn't true: they don't go off on their own and lock themselves in a room for weeks or months on end and come out with a finished product. Software requires a lot of sharing and collaboration.

You might shrug these off as just "soft skills" that you don't need, but I don't think that's true. A lot of your work as a web developer is communication.