I often get asked by people who want to learn about web development, “How do I get started?”. I have written the same email many times, so I thought I’d post the response below.
Im happy to talk to you more about this, so keep sending questions.
1. What would you say is the biggest challenge you’ve encountered?
The biggest challenge was feeling like I knew what I was doing. This field changes so quickly and there is literally an infinite amount of ‘stuff’ that you could know, that you need to trust yourself. Based on what you do/dont know, you have to be confident that you can figure out what you NEED to know, when you need to know it. As a result, wherever you are, the biggest challenge is feeling like you can contribute to the discussion and have the necessary tools to figure out a proper solution.
2. What do you envision for the future for this field?
Its changing pretty fast. The way the global economy took to the internet makes it a crucial element for the future of all sectors of the economy. As a result of everyone needing a website, there is a spectrum of available work that you can do. The depths to which the field is developing is also drastically changing.
In 2 years, the ecosystem and types of websites we use will look the same on the front. The changes that are mainly happening are related to intricate systems on the backend that determine how content is resurfaced and engaged with. The major business models that use the internet are successful when they understand the prime point for engagement.
5-10-20 years from now, there will be an entire new set of problems to solve. I doubt that the internet, as we know it, will be a series of links. I think there will be a lot more contextual engagement, based on time, location, people, recent activity, etc.
3. Recommended language/framework to start and build on?
Learn how to make a mean WordPress website. Thats a pretty invaluable skill. Once you can put together and modify a wordpress website from beginning to end, you can start charging anywhere from 5-15k for freelance projects. This can fuel you to learn more in-depth concepts. This is a good book to get started: http://digwp.com/ Once you get the basics, you can follow new stuff at http://www.smashingmagazine.com/
When you feel enough understanding of the front end, I would start to learn a backend language, like Ruby or Python. I suggest Ruby on Rails. Its a good framework that lets you get a lot done, without needing to fully understand everything. A good tutorial is https://www.railstutorial.org/ You could start that now and learn a lot. Its free and very thorough.
Whatever you do, its good to learn how to version your code. Github is the way to go for any code sharing. Git is a protocol for versioning changes. You will want to get a grasp on how it works and what you can do with it. You can check out the basics here: https://try.github.io/levels/1/challenges/1
For a text editor, I recommend getting Sublime Text. Its great because it has a comprehensive plugin system. The plugins are where a lot of the power is. You can find a few blog posts about which are the best plugins for sublime. For example: http://www.hongkiat.com/blog/sublime-text-plugins/
4. What’s a good starting point?
The rails tutorial, WordPress theming, or blogging. Its best if you can do some kind of freelance contract form the beginning. It might just be a couple hundred bucks to put someones website together. Thats good enough to learn how to set up local development environments, figure out he steps needed to get a website online, and learn about all the intricacies that you currently don’t know.
5. Would you recommend a coding camp/immersive learning?
I would and wouldn’t at the same time. The question is, what is your end goal? The problem with the bootcamps, in my mind, is it creates a false sense of learning. Because you are directed through the process of creating projects, you think you are learning. In truth, you realize you have no idea how to approach a problem without the explicit instruction of a teacher. Theres nothing wrong with this, but the inherit driver for web development is the skill to find the answer on your own. How you develop that skill can be personal or via a bootcamp.
Im personally a strong advocate for trying to get freelance contracts from the beginning. Explain to someone that you are trying to learn this and that you are willing to put something together for them. When you have the incentive that is based on money, you start to take a wider approach. You realize the real issues associated with making a website and begin learning that there is always a better way to do things.