I've been asked several questions like "what does it take to code" or "how did you start" or even "is it too late for me to learn to code". All of these questions reflect a common theme - a lack of knowledge of what code actually is (and what it can do).
I fundamentally believe anyone can learn to code. Coding is a skill just like any other.
1. My recommendation is to start with the question - what do you want to do? What interests you?
To begin, I'd say you should really consider what it is you want to do with code. If I had to make an analogy, I'd say code is to a program (e.g. web application) as directions are to a recipe. By extension, then, I could say depending on the types of items you want to cook you will want to learn different things. The same is true for coding - you can code games or web applications or you can use code to normalize data for scientific research - based on your interests you'll want to start a at different point.
This may be too broad of a question to start, but it is definitely a question worth considering as you embark on your mission to code.
Some resources that can help you evaluate your end game include:
- Attending a Girl Develop It Intro to Web Concepts Class
- Participating in a Game Jam
- Dropping into an Introduction to Data Analytics workshop
2. So hopefully you have an "end goal". Now define what type of schedule you have for learning.
Even if you are unsure about what you think you want to do you have to start somewhere. Here are some formats to consider:
MOOCs I highly recommend edX MIT Intro to Comp Sci and Programming Using Python. A MOOC requires a consistent time commitment for a specific number of conesecutive weeks.
Online Books If you are crunched for time or have an irregular schedule another resource I would recommend is Learning Python the Hard Way.
There's a variety of other remote resources out there but these are the two formats I would recommend, they're involved and give you guided learning that isn't too superficial for you to get a decent feel of coding.
Obviously you can can pursue a certificate program or enroll in a university. There's also an abundance of immersion programs - from Dev Bootcamp to Ada Developers Academy. Certified programs and immersion programs vary in fiscal cost and topics. I would defer any of these decisions until you have decided 150% that you want to be a professional coder, you can learn just as well with other resources especially if the way you anticipate to use code is not going to be the core of your day to day professional responsibilities.
3. OK so I've tried a MOOC but I'm not ready for a bigger commitment - what next? I would strongly recommend finding a mentor.
Finding a mentor can seem like an impossibly difficult task. It really isn't, at least if you know where to look. Again I'm going to continue with my recommendation of Python resources (I'm a huge Pythonista, if you can't tell :-) ).
- Python 101
- Web Development
- Data Science
The mentorship is a 1 on 1 mentee/mentor relationship lasting around three months which culiminates in a (optional) presentation of the project you and your mentor decided to tackle at ChiPy.
Having a structured mentorship is an ideal opportunity but that doesn't mean that's the only way to find a mentor. You can use MeetUp to find a user group that matches your interest (e.g. a specific language, a women in tech group, a game development group) and look for a project night. A place where others will be working. You can try to find someone willing to work with you at those events. Don't have any groups in your area that fit the mold? Try IRC. IRC is a chat client that connects you to different communities where knowledged coders can vet questions you have. In fact finding a particular project in your interest area is a great way to start - you can find things that the project needs help on and look for mentors on that project like the Apache Local Mentor Program.
There are many ways to find a mentor, be it structured or not, in person or remote, tied to a project or not. But it begins with you defining what you want to do with code, studying some of the basics, and taking the initiative to move forward.
4. Now what?
Go out there and try it out. Let me know how it goes! Tweet me @looorenanicole and let's get the code flowing!