With the mass open source database that is the internet, you have all the resources you need to learn coding available to you, but often the problem with a sea of knowledge is distilling it into drinkable lessons.
Eric Solender is a self-taught computer programmer who teamed with then-fellow students to start Mindstand Technologies at UMBC, then left the unversity to become full-time CTO of the company, which uses AI to improve and measure diversity, equity and inclusion in online communities. This year, Solender was chosen as one of Technical.ly’s RealLIST Engineers in Baltimore.
Now 23, Solender has been teaching himself the programming skills he’s used to build his career since he was 15.
Of course, “teaching himself” is a relative term, as no man is an island. His own curiosity and industriousness was met with support along the way. Solender learned first from watching his dad work as a software engineer at Circleback, Inc., and interning with the firm after passing a high school AP computer science class. At 17, he built a concussion detection tool using the motion controls of Xbox Kinect after suffering his own severe concussion. This led to a position with Columbia-based cybersecurity firm Masterpeace Solutions working with startups. When IoT security startup Zuul became a company after spinning out of Masterpeace Launchpad, Solender worked with that team.
The engine that powered Solender’s growth from company to company was his desire to learn and fill the gaps in his knowledge. Below are the tips and tricks he’s learned to maximize his acquisition of coding skills.
But before we get into the lessons and advice on how to maximize the journey of a self taught programmer, let’s acknowledge the counter argument to self-teaching: learning the skill wrong. Regardless of your primary method of learning to code, whether it be a bootcamp, computer science class or the university of Youtube, it is extremely important to learn the fundamentals of a skillset or language correctly.
Learn the basics
Code Academy is what Solender used years ago to learn the basics of Python when it was primarily free. Now it has a paid model but there are still plenty of free resources on the site.
These are libraries Solender sees as the best “get started quickly” resources in Application Programming Interface or (API) development: FastAPI, which helps build out the web framework using python for beginners. Flask, a quick way to learn and get into web development.
Here are a few more options:
- The site download the programming language GO also offers a crash course on the language.
- You can learn the basics of calculus and machine learning at MIT open course.
- Mastermnd Academy, started by Baltimore’s Aaron Brooks offers free coding courses.
Tackle small projects
Application of the material is one of the tried and true methods of learning. When getting up to speed with a new coding language, Solender always looks to do a project that’ll make himself laugh to solidify a technique into memory.
“I don’t just do coding exercises,” said Solender. “I try to come up with some very small contained project I can write in that language that will exercise all the things I need to make sure I understand.”
A Texas Hold ‘Em project he completed in the AP computer science course in high school came to mind:
Here’s a demo of the Concussion program he made with the Xbox Kinect:
Another way to work on those skills and create projects that lead to opportunities is contribute to open source projects. Solender’s most notable Github project is with Mindstand.
Read books that have stood the test of time
These are books that have survived changes in technology like “Design Patterns: Elements of Reusable Object-Oriented Software” by a group of technologists now known as the Gang of Four. Although published over 20 years ago and centered around C++, design patterns such as the Singleton pattern and Factory pattern highlighted in that book are still relevant today.
Another widely-read book is “Introduction to Algorithms” from MIT Press.
“My philosophy is if you can understand the patterns you can adapt them to whatever the modern language is,” said Solender.
Find parallels in what you already know
Object-oriented languages are fundamentally different from learning a functional language. But outside of that distinction, Solender has found that most programming languages are very similar. Learning one after learning another is closer to learning a new dialect than a whole language.
“For pretty much every language there’s a guide someone wrote…that’ll say here’s this in language A. Here’s what it looks like in language B,” said Solender. “And that gets me to a point that I can kind of code in that language. Then I dig really deep into the way you’re supposed to [code] in that language.”
Solender’s journey in tech is an example of what early education and more of an apprenticeship-style model of learning could achieve. Since his sophomore year of high school, he’s been working in the tech industry, and it inspired that drive to learn from a variety of resources that aren’t just formal education.
“If you get a little bit of encouragement and you know where to find the resources, you can pretty much teach yourself everything you need to know on your own,” said Solender.
Donte Kirby is a 2020-2022 corps member for Report for America, an initiative of The Groundtruth Project that pairs young journalists with local newsrooms. This position is supported by the Robert W. Deutsch Foundation. -30-