We all make mistakes but I have learnt that we can’t let them slide, neither can we let them go to waste. Even the best of us all still do and the difference is they make sure they learn something from their failures.
My programming journey has taught me to introspect and make sure that I get better with time. I mean think through code and see what I should have done differently and think through the whole programming journey and see what I would have done differently.
Here are a few mistakes and what I would do differently.
Theory vs practice.
I had seen the term tutorial hell so many times but I didn’t pay too much attention until I found myself in one. I started with CS50x, which involved watching through up to three hours of classes and then doing assignments. I need to mention that I also got “Programming in C”- Fourth Edition by Stephen G. Kochan, one of the program’s recommended books. I do not regret going through that book at all. I was coming from accounting and everything in computer science was so new to me. When I watched the first class, I was so confused at the end. My imposter syndrome went way up. I rewatched the class and probably got 3% of what David Malan was saying. Don’t get me wrong, David Malan is such an amazing professor. He knows his stuff, knows how to deliver it, and God, he’s so passionate. Here’s the thing though, if you have no idea of how computers work, you have to do a lot of work on your own to understand David’s classes.
My level was I didn’t know what loops were, I struggled with these for some time. I had never heard the word functions in regards to computers before, so if you have an idea maybe you don’t need to worry.
I also need to point out that I am more of a reading student than a teacher-student. By this I mean, I prefer reading 300 pages book to sitting in a class. This is purely my learning style so if you are a different student maybe this doesn’t apply to you.
I took about 2months of at least five hours a day to go through the C book before getting back to the CS50x course. When I got back, I enjoyed the classes. Things were clearer, I had an idea and didn’t feel like an imposter anymore. I also went through “A Smarter Way to Learn Python” by Mark Myers for my Python class, this took me two weeks because I had the programming C basics just different syntax. I used this video for JavaScript and “A Smarter Way To Learn HTML and CSS” still by Mark Myers for HTML and CSS.
The CX50 assignments were challenging and this brought the practical part of the course. However, at the beginning, I was so focused on finishing the assignments and passing that I forgot to look at it as my practical part of the course. I was in a ‘rush’ to finish and I would admit that for the first two or three weeks, I didn’t appreciate the process.
Here’s what I have learned though, with programming, this is where the process really matters. The process is where the gold is. Like almost everything in life and probably we don’t get to hear this enough times, the grade does matter, the passing matters but what you learn while doing the assignments matters more than the grade. Those lessons stay with you, you will probably use them more than that passing grade.
After I was done with the CS50 course, I continued to read and watch tutorials. I would go through hours and hours of programming tutorials. Here’s what I learned, when someone else is doing it, it’s easy and I can do it too until I start doing it and get stuck. So my best approach now is just do it. Build small projects. Anything from rock paper scissors to calculators to bigger projects like a website will teach you way more than a 10-hour tutorial will.
It’s one thing to learn arrays but it’s another thing to know how to apply them, say in building rock paper scissors game.
So am I ruling out tutorials? Absolutely not! However, limit how many you go through and couple them with projects. This way, you will apply the knowledge you get from the books and tutorials.
Experts are not born, they are made.
While this might not sound like a mistake, it’s something that I did even in my accounting career. I have learned that self-rejection is worse than being rejected by others.
I can’t tell you the number of times I self-rejected. Every time I would get stuck I would feel frustrated and start talking myself out of the journey.
I will credit my dear husband for how far I have come with this. He has been programming for over three decades so you can imagine the amount of experience he has accumulated. Plus, unlike me, he was a computer science major for both his undergraduate and postgraduate. He told me he gets stuck too and still tells me to date when he gets stuck. By him being vulnerable, I realized that everyone gets stuck. He introduced me to stack overflow and I saw how many people get stuck but decide to look for help instead of giving up.
Programming will teach you that independence is not the goal, but collaboration is. Finding answers, and asking for help while balancing with not being too dependent is an art you have to master. Every day as long as you stick to it, it will get better.
When I stopped struggling with loops and other computer science basics, I didn’t arrive, I unlocked a new level of struggle and now I am okay with the struggle. With time, I am falling in love with the struggle of it all because, in the end, it makes it fun.
Ask for help.
As I mentioned earlier, with programming, you will get stuck more than I can emphasize. Here is the thing though, programming is all about solving problems and you have to sharpen your research skills. I had so much help at my disposal because as I mentioned, my partner is a software engineer but sometimes I would bang my head against a problem for the whole day without asking for help. You might not have someone you know to help, but programmers have different forums and communities to offer help whenever you are stuck. I have especially found stack overflow very helpful. LinkedIn also has a lot of programming articles. Medium is also another platform. Try to network with people, as you do so, you will learn about new platforms that you can contribute and also learn from.
This is all I have to say about my mistakes so far, I probably will be writing different parts of this as I continue on this programming journey but before then, happy programming!