Who knew one simple Medium post could ignite such a profound movement?#iLookLikeAnEngineer is now being spread globally in over 50 countries. It has received over 170,000 tweets and has been covered in countless news outlets. In addition to an influx of incredibly heart-warming and positive support, many people have reached out to me for advice on how I learned how to code without a formal college education. I wanted the opportunity to give everyone an illustrative and thoughtful response, so that is now my intention with this Medium post. I am most familiar with web application development, so that is what this will be covering.
The first thing you should understand is that it is not going to be easy, but it is completely possible. In all honesty, starting off really sucks. Especially if you lack a network or support system that you can ask for help or guidance. There is a significant amount of technical jargon that is defined in terms of other unfamiliar bits of more technical jargon. Don’t let that discourage you. The learning curve is extremely daunting in the beginning, but once you’re over the initial hump your learning velocity will dramatically improve. Consistency is key. Similar to learning a real language, the first one will be the most difficult. If you already know English, it will be much easier to learn Spanish because you just need to learn the Spanish translation for a word, rather than trying to process the word’s meaning as an abstract concept. Coding is a very similar process. For example, once you have a conceptual understanding of the building blocks of code: variables, data-types, enumerators(iterator or loop), functions, etc. you can easily apply them in any language by slightly tweaking the syntax.
One of the amazing things about learning how to code is that you literally have access to every resource that you could possibly want to get started/be successful. The internet is filled with a myriad of amazing resources for someone at every level, you just need to know where to look.
We can simplify a web app down into 2 main parts: front-end and back-end. This is a great resource for learning what those are.
So you have a slight idea about the different types of coding, but where should you go to start learning how to write actual code? I recommend starting with HTML & CSS as a non-intimidating introduction to web development, as they are both relatively straightforward concepts to learn. Things will start to more complicated as you dive into your first dynamic programming language.
Keep in mind that there are many other resources out there. Your feedback is also highly encouraged so if you think I am missing a useful resource please let me know so I can add it to the list.
Beginning Web Development Resources:
- CodeAcademy — Build a Website
- CodeAcademy — Make a Website Project
- CodeAcademy — HTML/CSS
- CodeAcademy — Make an Interactive Website
- CodeSchool — Front End Fundamentals
- CodeSchool — Front End Formations
- CodeAcademy — jQuery
- CodeSchool jQuery — Introduction
- CodeSchool jQuery — The Return Flight
I love Ruby. It is expressive, elegant and incredibly dynamic. There are a million different ways to do the same thing and the language supports interesting meta-programming(like code that creates code). Ruby Monk is my favorite interactive quickstart.
Rails is a great Ruby framework for building full-stack applications. Once you understand its core components, you’ll be amazed at how fast you can build and ship your own products.
- CodeAcademy- Ruby on Rails
- One Month Rails
- CodeSchool has an amazing series Rails for Zombies courses
- Hartl Tutorial — this is very DRY, I wouldn’t recommend for super beginners
This is a language used to talk to your database and it is fairly straightforward. If you learn Rails you don’t necessarily need to learn this immediately because Rails comes with something called ActiveRecord that simplifies your database queries for you, but I still think it’s good to eventually learn what’s going on under the hood.
Other Useful Tools
There are other tools that you are going to want in your aspiring-web-developer toolbox. A code editor or IDE(integrated development environment) can make your life much easier. They allow you to bind keyboard shortcuts and search for files in large projects that makes your life much easier. Sublime Text and Atom are great options for starting out with something simple; make sure to look up key binding options or create your own!
- Chrome Developer Tools — is great for debugging and so much more.
- Git — is used for project version control and collaborating with other developers.
- CLI- Command Line Interface that comes installed in every new Mac
Algorithms are a great way to become more familiar with your coding language of choice while also exercising your brain with creative logic. An algorithm is essentially a function or method that takes an input and does something with it and returns a new output.
Other Educational Resources
Resources for Kids
I taught myself how to build websites with HTML & CSS when I was 8 for Neopets guilds. This lead right clicking -> “view source” on existing websites and reverse engineering bits of code to see what each part did. Your child might have different tastes, and a lot of time has past since then. Now there are a lot of resources marketed with the main purpose of teaching children to code.
There are a lot of accelerated bootcamp programs who will help you learn the right skills to get a job. It’s nice to feel like part of a community and be part of a group of extremely motivated people who are in the same boat as you. I can’t speak for all of them, I thought AppAcademy was absolutely wonderful. I was able to get a job(at OneLogin) just weeks after graduation.
AppAccademy — Has incredibly affordable payment options; one option being that they don’ get paid until you get a job. They take 18% of your first year’s salary.
Being a part of a coding community helps immensely. Going to a bootcamp is only one way to do that. For the people who are unable to take two or three months off from their lives due to various responsibilities, there are options for you too. I am really only familiar with SF, but I highly encourage you to do your own Google searches for meetups in your area. Meetups.com is a great place to start.
Everyone has a different path, so my hope is that you can use these resources the best way that suites you. Remember, Google is your new best friend. The answer to your question has probably been asked before, you just need to know how to search for it.