This question is asked often.
You will see many answers, some even contradict each other.
Here are a few I have seen.
- "It really depends on what your overall goals are."
- "Start with an easy language like..."
- "Start with a harder language like..."
- "Just start"
All of these answers have valid reasons, but they do not help someone get started.
I see this question come up over and over. I started to wonder how did I learn? How did other people learn?
Finding AnswersI set out on a journey to find an answers. I started asking programmers questions. The answers I found were fascinating.
One question I asked was "How did you learn to program? Where you self taught or did you learn in school?" 90% of the responses said self taught. My first interesting enlightenment. This shouldn't of been such a big surprise. After all I was self taught.
My second enlightenment came when I was trying to find a way to teach my son to program. I realized that the first programming language is not that important. What is important to learn first is the basics and logic.
Third, I started teaching programming to other people. I quickly confirmed my first assumption. People who are self taught can program, what they are missing is solid design principles. They have not learned how to create modular, reusable code.
Now I had another question "How do I take what I know and help others learn?".
My SolutionI believe what I came up with is a unique approach to teaching programming.
The following is how I do it.
- I allow my students to learn any programming language they want. I will help them pick one based on interests.
- I do not teach any programming languages. Let me clarify. I teach basic logic and program design. Once a student has learned these principals they will very quickly learn the language of choice.
- I teach SOLID design principals. My students are expected to learn and use these principals.
- And last, but most importantly, my classes are live. This allows me to work with students one on one. Students are encouraged to ask me questions about things they are learning outside of class. They can ask me questions about personal projects they are working on.