How to learn web development
My friend Kevin wrote a post on advice for new programmers, as it applies to a research/academic environment. It’s good advice, go read it. It got me thinking about how I’ve learned to improve and become a better programmer over the years, and the best things that helped that. For me, I was lucky enough to bootstrap myself into a programming job towards the beginning of college, and ended up learning most of the fundamentals while getting paid to do so on the job. Certainly learning in an academic setting is nice as well, like having the ability to pick a topic and go deep on it without worries of it affecting your paycheck, or necessarily needing to ship a product at the end of your research. But nothing galvanizes the mind like having to complete something in order to get paid! So, one piece of advice to beginners is to try getting a job or internship at a company where you must actually ship a product. It’ll force you to build stuff that works.
Learn your tools. Certainly learning to use tools such as source control, debuggers, and editors makes a huge improvement in workflow.
Read books. There is gold in them. My first web development job was the direct result of picking up a book and teaching myself basic ASP. These days, more and more is on the internet, so you can learn without getting the physical books, so, read PDFs. But actually read them. This is easy and just takes persistence to complete.
Be an apprentice. An even bigger deal early on was working with others who were more experienced than me and picking up how they did things.
Teach. Once you’ve learned how to do something, teach it to the newbies in your company or school. Give talks. A great way to learn something is to explain it to others. It will force you to figure out enough to know what your talking about.
Do a lot of work. Nothing beats experience. Wins, failures, learning what worked and what didn’t, learning how to logically solve problems, how to focus, how to think of the bigger picture.
Communicate. Don’t focus solely on technical skills and neglect personal communication skills. Learn to talk to customers, manage projects, lead meetings, delegate tasks and manage others.
Participate in open source projects, and do something that won’t actually make you money. It might lead to it later on, but in the meantime you’ll become known and get to know others outside your company or school, which is always a good thing.
Socialize. There’s likely at least a handful of monthly groups in your town. Go to them. You will take away new ideas and meet interesting people, who will think of you when their company is looking for more people. Many developers make the mistake of getting comfortable in their cozy job and never going out to events or talking to other developers. That’s fine, but I think it leads to stagnation in skills as well as motivation. Go to a larger conference once in a while. Seeing others at the top of their game in your industry will get you all fired up and want to go kick ass.
Go deep in a few things, go broad on everything else. Over the years I’ve shifted from design to development, so early on I went deep with Photoshop and Illustrator, then later got more heavy into the development side of things, starting with Photoshop, then HTML, ASP, SQL, then moving on from there to a million other things.
So, just do all that, and you’ll be good to go! No problem, right? It’s a life long journey.