So You Want to Learn to Program
As I have gotten more involved in the programming community and local Philadelphia tech scene, I’ve had more people ask me how to learn to program. The best part of programming and working with technology is that there is so much to learn! You are never bored. Since my 9-to-5 is working as a backend dev for a website, a lot of the resources below apply to website development. However, there are general programming and small project resources too.
My biggest piece of advice is to find your motivator. Do you like crafting? Try hardware hacking with soft circuits and Arduino. Are you a language nerd like me? Try programming a text-based adventure game in a beginner-friendly language like Python or Ruby. I think the key thing is to find something that keeps you working on your new skill set. Then, once you have developed some confidence, try something new that is outside of your box. Reach out to the programming community online and in your area to make some developer friends. The key to sticking with it is to stay motivated but not frustrated. If you get frustrated, step away from the keyboard or reach out to your community for help. If you aren’t feeling challenged, your dev community can steer you in the right direction too. Programming is exciting, challenging, and satisfying. You are in for such a fun ride :)
Free Online Classes
A structured series of free classes, with a focus on going form zero to pro. Many of these classes are focused on technologies behind website development — the stuff in the picture above.
Hardcore computer science classes offered by some of the best universities in the US. This is a great way to get a deep dive on the math behind programming languages, fundamental principles of programming, and cool stuff like functional programming.
Have some time free time to deep dive into programming? Check out this three month immersion program in New York. It’s amazing and has support from the talented engineering team at Etsy.
A free 10 day bootcamp by the awesome devs at skill crush.
The four semester graduate program I went through. I cannot say enough good things about this.
Make Your Own Blog
If you love design, try getting started with a blog and one of the most popular content management systems out there.
Front End Dev
Ready for more detailed info on front end development?
http://slidedeck.io/EliseWei/gdi-intro-web-concepts — A great overview of front end dev by Elise Wei
http://www.w3.org/ — nerdy details on web standards and lots of references for coding up your own front end.
http://www.w3schools.com/js/ — a popular standard for making your site interactive
http://www.w3schools.com/html/html5_intro.asp — a popular standard for making your site interactive
http://www.csszengarden.com/ — a powerful demonstration of the power of CSS
Back End Dev
Interested in back end development?
http://learnpythonthehardway.org/ — an exercise-based start to programming and Python
http://rubykoans.com/ — get started with Ruby
http://codingbat.com/ — small, hands-on activities for learning Java and Python
http://ruby.railstutorial.org/ — get started with the Ruby web dev framework, Rails
https://docs.djangoproject.com/en/dev/intro/tutorial01/ — get started with the Python web dev framework, Django
Make some cool projects and toys! Use these small but mighty hardware components and code to make RC cars, musical instruments, and so much more.
Classes and Resources in Philadelphia
In Philly? Here are some great local classes and events:
http://www.meetup.com/Girl-Develop-It-Philadelphia/ — an on going series of front end and back end classes
http://railsgirls.com/ — coming to town April 2014!
Don’t forget about user groups! You can meet some talented devs, check out some cool shops, and see the amazing things people are doing with code. Many can be found on meetup.com. My faves are Philly Python User Group and Philly Ruby Users Group.
Fundamental Dev Skills
These are what I consider to be essential, language agnostic skills every developer should know. Having these skills and judiciously applying them are two different things, so tread carefully as you craft your code.
Object Oriented Programming — an essential concept and design pattern for many languages
Model View Controller — an essential design pattern that describes how an OOP program is organized
Recursion — an essential programming skill for solving certain problems like navigating trees
Functional Programming — a feature of many languages
DRY Programming — a general principle for writing good code
Test Driven Development — a development methodology that emphasizes testing and planning
Pair Programming — a development methodology that emphasizes the value two people reviewing code as it is created
Code Review — the general idea of someone reviewing your code before it can be called “dev done”
Mocks and Stubs — a really handy testing feature, especially for testing integrations
Regular Expressions — a handy pattern identifier
Version Control with git w/GitHub — an essential tool for sharing, showcasing, and storing your code