Skip to main content

How do I learn to program?


The Question


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 Answers

I 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 Solution

I believe what I came up with is a unique approach to teaching programming.
The following is how I do it.

  1. I allow my students to learn any programming language they want. I will help them pick one based on interests.
  2. 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.
  3. I teach SOLID design principals. My students are expected to learn and use these principals.
  4. 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.

Comments

  1. Mr. Bairn,

    Your class was well structured. You provided a lot of direction and experience that I could not get out of any amount of online tutorials. I wish you well and look forward to learning more from you in the future.

    -Ray

    ReplyDelete

Post a Comment

Popular posts from this blog

Why I Code

I love to learn. I am always seeking new knowledge. One of the great things I have learned is that coding is a journey. There is always more to learn. I have spent the last 20 years of my life on this amazing journey and will continue on it. When we start to learn how to code we learn some great problem solving skills. Coding is not just about typing on the keyboard. It is about taking a problem and breaking it into pieces. We take each of these pieces and turn them into solutions to the big problem. In the end we have made an amazing discovery within ourselves. We have learned how to solve the problems of our world.

I don’t test my code and you shouldn’t either.

Wait, what? I am sure about now you are saying something like “Not testing your code is asking for trouble.” Let me clarify, I do not test my code through the UI. It started about a year and a half ago. I was given a task to write a trigger for a client. The only problem was they had hit the data limit in their Salesforce sandbox. While my project manager worked on getting permission to delete records, I had work to get done. How was I going to do it if I couldn’t create records? Then it hit me, I could use test classes to test my code. This one simple thing changed my programming style. I wrote the code, and wrote very robust test classes at the same time. They had to cover everything I could think of. I couldn’t create a record in the Salesforce UI. When it was done, I had very well written code, and my tests were also complete. Fast-forward a week. We had deleted records and freed up space. The client was testing the trigger we had made for them. They came back with “It’s not...