Many people want to teach themselves to code. The problem is that there are hundreds of resources, and it’s difficult to evaluate what works, and what you need. As a teacher by training, I know how to break a complicated subject down into smaller pieces, and how to connect abstract concepts to their practical application. In this blog, I will share the process of evaluating your own learning preferences, choosing resources that fit your preferences, and becoming a part of one (or several) tech communities so that you can teach yourself to code, and continue to find help along your journey.
Get TestRail FREE for 30 days!
How Do You learn?
First, you need to know how you learn. Think about the moments in your life where you have felt “in the zone” or had “aha” moments. Were you learning alone or with others? Were you reading a book or watching an instructional video? Were you doing a hands-on activity in a classroom, or listening to a lecture? Were you in the classroom, in a lab, a musician in a band, or outside in nature? Identify the successful learnings in your life, and then identify the patterns.
People have preferences. Mine are learning by doing and visual learning, so I know I will be successful when I have the chance to pair with a skilled programmer and then apply my knowledge on my own. I like to learn from my own mistakes, because I find I recall the solutions much better than if someone gives me rote instructions.
Choosing resources is actually really difficult. Most people are not professional educators, so may not think about two important concepts when selecting learning resources: scope and sequence. Scope is the amount of material that is covered in a given instructional material. Some programs, such as Code.org or Code Academy, for example, cover a broad scope that does not have a lot of depth. They are good for an overview but won’t get you a lot of practical skills. Other resources, such as edX, coursera, or MIT Open Courseware, offer full-fledged online degree courses that go into much more depth.
Sequence is the order in which concepts are learned, and the reasons for instructional choices. How a course is sequenced might have a great impact on what you choose. For example, some courses introduce you to skills and then build upon previous skills, utilizing scaffolding to allow you to build confidence and knowledge. Other courses and materials, such as Zed Shaw’s Learn the Hard Way series have learners go through rote learning of practical skills in a sequence that promotes familiarity with the language over building an application.
Knowing what you want or need to do with your knowledge will help you decide what kind of skill sequence you need. I knew that I needed to be able to build Python selenium, but at the time I was learning, there weren’t many courses available for Selenium using Python. So I took a coursera course and used some selenium books, along with documentation and google groups, to go through the process of learning to build and implement automated testing suites. I even used Ruby resources, as they were far more robust in dealing with Selenium when I was learning.
Teaching and Learning
They say the best way to learn something is to teach, so once I learned the foundations of Python, I became involved in the Python education community. Reading papers, organizing conferences, and evaluating presentations that were above my level of ability helped me to increase my skill and understanding. There are local, regional, national, and even international groups that meet and discuss the nuances of working in every language. Also, sites like CodeNewbie offer a robust social community via Twitter and slack.
Teaching beginning Python to local school kids helped me to solidify my understanding of basic concepts and motivated me to solve novel problems presented as my students expanded their understanding and curiosity about programming.
You don’t have to be an expert to volunteer to teach girl scouts, boy scouts, a youth organization, or an afterschool club how to start writing code and solving problems. Like the students, you simply need to be willing to keep an open mind, ask questions, and model good problem solving practices for the students. This modeling is better than giving the answer right away, because modeling demonstrates good problem-solving skills. Also, working through issues with students models the nature of learning a creative discipline like code.
Now, there are so many resources to teach yourself to code, that it can be difficult to pick your path. However, once you figure out how you like to learn, and then identify what you want to do with your new code skills, you can choose the best resources to help you accomplish your goals.
- Code.org https://code.org
- Code Academy https://www.codeacademy.org
- edX https://www.edx.org
- Coursera https://www.coursera.org
- MIT Open Courseware https://ocw.mit.edu/index.htm
- Learn Python the Hard Way https://learnpythonthehardway.org
- Learn Ruby the Hard Way https://learnrubythehardway.org
- Code Newbie https://www.codenewbie.org
This is a guest posting by Jess Ingrassellino. Jess is a software engineer in New York. She has perused interests in music, writing, teaching, technology, art and philosophy. She is the founder of TeachCode.org
Test Automation – Anywhere, Anytime