Mindset for Programming Studies 2020

Lords of Dogtown courtesy of Sony Pics.

My 2020 program study plan: Do exactly what I want to do.

I started with a single project and a desire to learn. No curriculum. No year-long plan. 

That single project helped me pick which programming language to learn. At the time, I was becoming interested in stock options trading. So I found a competent Youtube teacher (Harrison Kinsley, Sentdex, pythonprogramming.net) who covers an extremely wide range of topics to teach me the skills I needed to build my stock market tool. 

I never finished that stock market project just like I didn’t finish many of the projects I started in 2020 – I worked on them until the next project offered a more interesting problem. Longevity will develop as my programming abilities mature.

I studied programming in 2020 by doing exactly what I wanted to do.

Advantages of My Study Mindset

Frequency and Quality

My programming experience was enjoyable which kept me regularly programming for an entire year. I formed a habit of programming multiple times a week and am on my way to programming, before work, every single day. As with every critical skill, frequency over duration, quality over quantity.

Unique Abilities

Following my own plan guarantees I am a unique programmer because no one else is learning like me. That means, problems others can’t solve, solutions others don’t write, applications others don’t create – I do. Universities graduate hundreds of programmers indoctrinated with “the right way” to do something. That “right way” to do something is for today’s problems; I write for the future.

Efficiency

The way I’m pursuing programming, I learn a lot about myself as a learner. Educational content comes in several forms (blogs, videos, courses, etc) from hundreds of sources. I’ve found some helpful and others useless. The way I learn is unique, and the more content I consume, the better I am at selecting helpful content and knowledgeable sources. When there are so many resources, efficiency is difficult; Being nimble is key.

Additional Skills

By finding my own path, I am developing many skills on top of language-specific ones. These skills, like strategic thinking and creative problem solving, can be used with any language and will carry over when I start tackling C++ and Swift. These additional skills will manifest as the “clean and clever” structure of my programs.

Robotics: Future Career Path

I found a serious interest in Robotics by building a simple autonomous car. Because of my dynamic plan, I easily switched from virtual data exercises to a physical sensor-based project. Now I know, medium term, I want to be working in the Robotic Industry.

As an added benefit, I became comfortable with reading language/library documentation. Such free form learning makes a positive experience out of something that is likely a form of torture to freshman CS students. 

Other topics I hit while following my freeform style; UI, financial analysis, sensor analysis, statistical analysis, machine learning, command prompt, iOS, Windows, Linux, ROS.

Variety

I branched out into different languages during my journey – I didn’t stop learning and it gave me momentum. Programming with Python helped me set goals to learn Swift and C++ in the future. Once I started getting stuck with Swift or C++, or any operating system, or any topic, I switched. I prioritized momentum, continuance, and interest over completion, perfection, and discipline.

Disadvantages of My Study Plan

Requires Perseverance

There is no one to help you get unstuck. Since I am programming on my own, everything has to be written, worked on, debugged, and figured out by me. Online chatrooms and discussion boards can help in these scenarios but I’ve found them to be sometimes slow, or unfriendly, or unhelpful. I find more value in solving my own problems using other resources. Programming on your own builds self-reliance, self-confidence, and self-knowledge.

Disclaimer: This doesn’t mean I don’t use StackOverflow…I just don’t post my problems on StackOverflow. Chances are, you can figure out your problem with what’s already there.

Requires Creativity

It can be difficult to come up with what to learn next if the thing that you’re currently learning/working on isn’t holding your attention. Typically though, this “learner’s” block will give you some time to relax and internalize what you’ve learned. After a block is when I’ve made some of the best progress in programming – I either find a new interesting topic to learn or new content that really jives with my style of learning (aka, an opportunity to progress my programming to the next level).

Requires Self-Motivation

It can also wear on your sense of accomplishment when nearly all of the projects you start don’t get finished. But it’s great practice for instances in your professional career when the project gets cancelled by your manager.

What I Should Have Done

Start using codewars.com sooner. For the past two months I’ve been focusing on completing katas (small, contained, digestible, problems). If you are stuck in the “I already know the basics but I’m not a beginner” stage and you’re not quite at the “I’m fluent in this particular programming language” stage, I highly suggest codewars. 

Codewars gives you the opportunity to see a wide variety of different problems with varying requirements, different data types, and encourages you to use the full functionality/capability of the language you are trying to learn. 

Once you complete a solution to an issue, you are brought to a submission page where you can see other people submitted solutions to the given problem – they display the “best” ones at the top. The best vary from the shortest, to the easiest to read, to the fastest.

There is also a function to compare your solutions with others. You can see new and clever solutions that you didn’t think of yourself. It’s also good practice reading other people’s code – this is something you’ll likely have to do in the industry.

Recommendation

Obviously, I recommend my style of learning to program for anyone – especially those who have a job. I have seen myself progress and am still interested to learn more after a year.

Leave a Reply