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 and 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 back end dev for a website, my advice below is more focused on websites and professional development of websites. However, there are general programming and small project resources too.
Free Online Classes
A structured series of free classes, with a focus on going form zero to pro. Many of these classes are very 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 awesome engineering team at Etsy.
A free 10 day bootcamp by the awesome devs at skill crush.
The amazing 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/ — an amazing 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 program writing in 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 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