About John Sonmez

Formal Education vs Self-Taught Learning…Which is Best For You?

The internet is rife with information, and has undoubtedly become one of our greatest resources for learning. Instead of referencing an encyclopedia, we now hit up Google instead. To say the internet has changed the face of education would be a gross understatement.

You already know how passionate John is about gatekeepers (and if you don’t, watch this!) — the traditional barriers to entry — and one place we have found them to be particularly bad is in formal education.

There are a lot of gatekeepers to education. Gaining access to universities and colleges alone is significantly limited because of gatekeepers, and the high barrier to entry really makes you feel like getting a degree is essential and that you have to learn in this traditional setting.

I say, screw the gatekeepers! Thanks to the internet, you don’t need to let these people stop you from doing the things you want to do, like learning to program.

The question remains: Is the quality of available online education good enough to replace that of a formal education?

To really dig our heels into this question, we’ve asked two of our Simple Programmer contributors with very different education backgrounds to share their experiences and insights, so you can decide which path is right for you.

Discussing formal education, we have Jason Lowenthal, who earned a triple major in Computer Science, Computer Information Systems, and Business Administration – and for the informal education side, we have Basel Farag, who was self-taught on the internet.

We asked the guys five questions covering everything from tools and skills, to their thoughts on the experience itself, so you could have an insider’s look at each path. The responses are their direct answers and have been edited minimally to maintain authenticity.

1. Do you feel like your education gave you the skills you needed, or did you have to seek outside assistance?

Jason (Formal Education)

By seeking and acquiring a formal undergraduate degree, the number one most important skill I sharpened isn’t one that I can share with a computer. I became an experienced learner while in school, and I had the benefit of guidance from several professors that dedicate their lives to learning.

My first job was maintaining and improving an ASP.Net / SQL server intranet application for assisting a retail team, and I cannot honestly say that I had the hard skills I needed for this job.

I’d spent my last two semesters in college just barely scratching the surface of the .Net ecosystem, and then I got thrust into several thousands of lines of code that I’d never had a hand at using before.

Thankfully, before we started our project my last year of school, I’d never even seen C# before. That was a good thing. Spending a year learning something that was completely foreign and new to me strongly prepared me for a career in software engineering.

I’m of the firm stance that we have to know how to learn. I can’t put an exact percentage on it, but I can say on an average day, I spend at least half my time researching and creating brand new stuff I’ve never used before.

I don’t get hired for knowledge (though it certainly does help). I get hired because no matter what new situation I enter, I become a productive contributor within a very short amount of time.

Learning how to learn is the most important thing I’ve ever done. I’m still getting better at it. But I have worked in three completely separate tech stacks in my eight professional years, and not once did I feel like I experienced any great disadvantage.

Basel (Self-Taught Learning)

For the most part, self-teaching gave me the skills I needed, but to dig deep into some of the material, I had to go out of my way to ask professors of computer science.

I would attend Meetups or visit Computer Science professors from my university during their office hours and ask questions. You’d be surprised how often students do not take advantage of office hours, even at so-called “good” schools.

To be quite honest, there’s no such thing as a completely self-taught developer. In fact, I find the term arrogant.

Where do books come from? Experts. So even the act of picking up a book means relinquishing the title “self-taught.”

Furthermore, one is not “self-taught” simply because they understand the material. For example, when I was younger, I was greatly interested in biochemistry and immunology. I read texts on epilepsy, autoimmune disorders, viruses, and a cornucopia of infectious diseases. I still remember many facts about these conditions. I could (and still can) recite the most common symptoms experienced by those with chronic epilepsy.

Does this mean I was a self-taught immunologist and/or neurologist at the age of 11? Should I have been thrown at patients? Not at all. There is a great difference between understanding and practicing.

The difference between a self-taught developer and an “Engineer” is one who is able to make the leap from simply understanding and regurgitating toy problems to actually solving large, complex problems with the material they learn. Self-teaching can accomplish this, but the truth is, most do not possess the grit to follow through with the necessary work.

Finally, perhaps the greatest difference between pursuing a formal education and so-called self-teaching is that formal education gives you the skills to learn how to learn.

2. What was the most useful tool for learning?

Jason (Formal Education)

If you attend school to learn to program computers, you have to have access to computers. Every lecture had the option of showing us what we were learning in real time with the professor doing live coding. This helped all of us stay engaged when we saw code actually DO something.

Beyond that, the guided exercises we regularly participated in by using computer labs were just outright fun. We rarely went a week without writing code under the tutelage of one of the professors.

I think my favorite school assignment of all was writing a device driver. We all got a vanilla Linux VM, a C compiler, and instructions for reading and writing to a byte stream. At the time, it was for a floppy drive (Gasp!), but the practical experience of solving a complex problem and being regularly encouraged to ask questions was huge.

Beyond the classroom, my formal education gave me immediate and easy access to professional internships. Paid ones. So while I was learning to learn and also learning practical skills, my internships (yes, plural) helped expose me to professional soft skills that I continue to apply to my work ethic now.

Basel (Self-Taught Learning)

With self-teaching, what I found most useful was a combination of formal and non-formal education tools.

I took a few classes (two to three) at the local university. I found them slow paced, but had an excellent time talking to my professors exploring more advanced concepts that built upon the material we were learning in class.

When it came to actual websites, online courses, and texts that were useful, I used Quora, Ray Wenderlich’s blog site, Coderbytes, and CodeFights.

Texts I found extremely helpful for my particular subset of engineering—iOS Development—were the Big Nerd Ranch series on iOS Development, various Ray Wenderlich texts, and the O’Reilly iOS series for deep, near-compiler-level understanding of the technology.

I found Quora in particular to be indispensable. Simply Googling, “quora” + “which books should I read about programming?” produced enough results for me to build my own curriculum that included resources from some of the world’s greatest engineers.

But the most useful sources I found—more than anything else— were the classics on programming. Texts like Code Complete, The Pragmatic Programmer, Programming Pearls, Thinking in Java (4th Edition), The Mythical Man Month, CLRS’s Introduction to Algorithms, How to Solve It by Polya, How to Solve It by Computer by Dromey, and Soft Skills by John Sonmez formed the backbone and muscle of my education.

But just reading them isn’t enough to teach you. In fact, these texts were useless unless I actually did the exercises/challenges given in them, rather than quickly skim over to the next chapter. (And no, the folks at Simple Programmer did not ask me to include John’s book. It’s actually extremely useful. I wouldn’t recommend it if I didn’t actually believe in it.)

Subsequently, these books revealed one of my greatest insights regarding programming: all of these languages are trying to accomplish the same thing. Your job is to use them to problem solve and to not make a mess of things.

Finally, it’d be unfair for me to not at least acknowledge coding bootcamps, but I wouldn’t recommend attending these unless they have proven track records or if the student has studied independently for a year.

For the most part, these bootcamps are just cash cows meant to convince people that they can go from having zero experience to becoming a full-fledged programmer in a matter of months. I possessed a similar hubris until I picked up one book.

3. What do you think you missed out on by not going down the opposite education path?

Jason (Formal Education)

I didn’t get my education for free. Far from it.

Places like MIT offer open and online courses for free directly from their classrooms. I’ve watched a few and they’re very good, but I don’t know if I would be disciplined enough to learn all of the required fundamentals just by watching classes online for free. But they are out there, and they’re solid.

I think one of the biggest things that was a major growing pain for me was a lack of significant practical knowledge of the technology stack I was working in. Like I said, we only scratched the surface in college. I scaled the learning curve quickly, but my lack of practical, applicable hard skills meant I started at the bottom of the curve instead of already have climbed it part way.

I imagine that if you attack hard practical skills through directed online courses, the depth is much greater than the breadth. Breadth isn’t lacking in undergraduate studies. Depth certainly is.

Basel (Self-Taught Learning)

What I think I missed out on by not going with the other path was the opportunity to talk with people who possessed the same passion as I did for the work. I’m an ultra nerd and enjoy the company of others when problem solving.

There is something to be said about suffering through a single, hair-tear inducing, abominable bug in the company of friends. That passion feeds you as an individual and creates cyclical success. Because you are passionate about the subject and because your classmates are passionate, you will be inspired to further heights.

I will also say, however, that you can still find these sorts of people at your local Meetups. Unfortunately, there will rarely be another opportunity where you will be able to work with others of your age and level of responsibility without the worry of consequences like time, mortgages, or less nerdy husbands/wives.

4. Do you feel you got a good return on the time/money you invested in your education?

Jason (Formal Education)

I busted my butt in high school, so my college education was mostly free. I came away with a small level of debt, but the career I have now makes it seem like a pittance. Comparing that debt with the earnings potential I have ahead of me, I have no doubt that I got my money’s worth.

One of the things that you buy when you pay for a college degree is a built-in alumni network. Having this gives you an unspoken edge in interviews when you share an Alma Mater. It’s a bond that I can’t quite explain, but one that I know anyone feels when they see someone else wearing “their colors.”

Basel (Self-Taught Learning)

Absolutely, especially compared to the tens of thousands of dollars my peers spent.

There’s a quote from a scene in the film, Good Will Hunting, which expresses how I feel perfectly about the current state of the college education system. For decency sake, I will paraphrase the quote as this: “You dropped 150 grand on an education you could have got for a dollar fifty in late charges at the public library!”

And it’s true. You can learn a vast majority of this stuff through effort, becoming an active participant in your tech community, and by just picking up the computer and programming.

We are living in a rapidly changing world. One sphere which seems to get the least attention is the rapidly changing world of education. I can easily see the students of the future having to rely on grit in order to learn and get ahead rather than simply obtaining a college degree. In fact, there is increased evidence that the economy is rewarding those who do take such measures.

5. Has your education been “enough” to help you build a profitable career with your skills?

Jason (Formal Education)

My career is extremely profitable. I live in a place where cost of living is comparatively very low to the national average, yet my earnings potential has me competing for jobs with a national salary level – at least if Glassdoor salary reviews are to be trusted.

However, I have to keep learning. I read all the time. I experiment off the job all the time. I tinker. I prowl Stack Overflow. I feel exceptionally confident doing all of these things because of the preparation my formal education provided me.

Basel (Self-Taught Learning)

I’m not quite sure. I only just secured a great position with a great company.

It’s definitely been profitable, but it’s also been a tremendous amount of work. More work than I did in my undergraduate years.

What I can say is that my chosen path was necessary to put me on the right track to a profitable career, but not sufficient. It’s not enough that you’re interested or that you think, ‘Hey it might be cool to do this.” You really have to invest effort. This stuff takes a great deal of passion and work ethic, and if you lack either, the journey will be a drag. That’s one of the advantages I can see in the traditional route.

If you need your hand held or need outside influence to get you to do the necessary work, then a formal path is much more suitable because in the professional world, there are no advisors, no helpful classmates. In short, no one cares what happens to you. This can be terrifying for people my age who’ve had every single segment of their lives planned, timed, and organized, but it’s simultaneously beautiful. This is where real adulthood occurs. What one decides to do with their free time and will is a greater indication of adulthood than any piece of paper could ever demonstrate.

Final Thoughts

As you can see, there are so many benefits to both learning paths, and each has distinct shortcomings as well.

Perhaps what is most important to take away from this is that to succeed you must be confident in your ability to learn new things. Whether you’re self taught or university taught, you need to be able to take what you’ve learned and apply it, and there’s no better way to do this than through real life experience.

Tell us: now that you know a little more about the different learning options available, which do you think is right for you and why?

Newsletter

Join them now to gain exclusive access to the latest news in the sysadmin and OS developers world, as well as insights about IoT, embedded programming, operating systems, scripting languages and other related technologies.

Disclaimer

All trademarks and registered trademarks appearing on .NET Code Geeks are the property of their respective owners. .NET is a trademark or registered trademark of Microsoft Corporation in the United States and other countries. .NET Code Geeks is not connected to Microsoft Corporation and is not sponsored by Microsoft Corporation.