Skip to content

combinatorist/free-intro-to-cs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 

Repository files navigation

How do I learn to code?

The short answer is you never learn all of it. OTOH, you've probably already done a tiny bit of programming on your thermostat. But, if you want to learn more, I'd recommend the following steps to get as deep as you like. And remember:

It's not as much about knowing the exact specifications of language as how to articulate, research, and solve problems.

Learn a Language (Python)

Python is a very good first language because it's designed to force good, readable code. It is also a modern, general purpose language used for literally anything. There are other specialty languages better suited for certain purposes, but that comes later.

Solve Small Puzzles "for Others"

It's important to work on some small problems to learn what a langauge can do (without drowning in new info). It's even better if you can do this in a context of a community where you can get feedback and see alternative solutions.

  • Don't mind the strange title and try exercism.io for general programming puzzles.
  • In case you like particularly mathy programming puzzles, my personal favorite is Project Euler.

Tackle an Open-ended Problem for Yourself

Find something you want to:

  • automate (time tracker?)
  • share (website?)
  • play (game?)
  • emulate (someone else's project?)

You will almost certainly not know enough when you begin. You may even need or want to find and use an appropriate framework / library to extend Python. Regardless, you will start on a long journey of reading documentation and Stack Overflow. :)

Isolate your Project Environments

If Python alone is not enough and you need to install dependencies, make sure to setup environments. Don't be shy to ask someone to do this for you the first time (like Code for Nasvhille, below).

Learn Source Control (Git)

For any project bigger than a language puzzle, you'll want to track changes as you develop. If you invest in learning source control, you'll want to use it for everything (how did I survive before?). In fact, if you pay close attention, some of the puzzle sites above track your changes in source control. :)

  • "Git" is a distributed source control tool invented so thousands of developers could collaborate to make Linux. 🎆
  • Github is a website for sharing code using git
  • Atlassian also has good conceptual resources, but skip to these sections:
  • There are lots of GUI's for git, but I'd recommend learning on the command line eventually (you'll go further).

This is all a lot easier with people to answer questions. So, perhaps this is when you start going to meetups (or ask me). :)

Solve a Big Problem for Someone Else

Part of practical programming is figuring out what keeps the customer satisfied. You can learn on the job or join an open source project / community and chip in.

  • Code For Nashville builds apps to help the local community (free, open source, civic hacking!)

Learn a Second Language

Pick a practical specialized language to learn about a different problem domain

  • Frontend development (what a non-technical user sees): Javascript
  • Database development (where everything is stored permanently): SQL

Or pick an "academic" general purpose language to learn different styles of programming.

  • Functional Programming: Clojure
  • Strongly Typed Programming: Haskell

Generalize Your Programming Concepts

Maybe you've found you're really passionate about programming. Then, you should start thinking about problems abstracted from a programming language. You should have already been stretched a bit, but now might be a good time to hit it straight on.

Rinse, Repeat

About

My recommendations for people interested in programming.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published