× {{alert.msg}} Never ask again
Receive New Tutorials
GET IT FREE

What Skills do Self-taught Programmers Commonly Lack?

– {{showDate(postTime)}}

…Or, to put it another way: what should self-taught programmers study to get up to speed with his/her formally-educated peers?

self-taught programmers

This piece is reposted from Quora with the writer’s permission.


Humility

self-taught programmers

Someone quite interestingly commented on “humility” as a thing that self-taught programmers lack. I agree.

I’ve been plagued by Impostor Syndrome for a long time, and I think that’s kept me humble and driven me to want to study and practice as much as possible—for fear of getting “found out”.

There’s no shame in being proud of the fact that you taught yourself, but you should be aware of the limitations of your teacher.


Want to Know if You Are You a Bad Developer? Take This Quiz to Find Out!


Algorithms

This is classic computer science right here. Programming without knowledge of algorithms is like carpentry with just one kind of saw: you can get the job done, but it’s going to take a lot longer.

You can look at an algorithm as “discipline”. When you learn to write them, what you’re doing is solving a problem with discipline; using structure, patterns, and logical steps.

When you don’t know how to discipline your mind, you don’t know how to write algorithms.

Not only can you not write algorithms unless you’ve studied them, you don’t know how many algorithms others have written, too.

I spent four days trying to figure out how to do a permutation. I was so proud of myself when I figured it out. Right up until I discovered that B.R. Heaps had figured it out in 1963.

Design Patterns

This comes with education and/or experience. There’s more than one way to structure your code, and there’s a right time and a wrong time for each. You either need to make mistakes along the way and learn when to use each pattern, or learn from someone else who’s already made the mistake (a teacher).

Programming Paradigms

Object-Oriented Programming is not The Way. Neither is Functional Programming. Nor Reactive Programming. It is A Way.

There are different ways to program, and they each have a purpose. Not only that, some languages are naturally better-suited for one paradigm or another.

If all you have is a hammer, everything looks like a nail.

Take that into self-taught programming and you’ll find yourself hammering in nails, screws, staples, and thumb tacks.

I remember a self-taught .NET programmer actually telling me once, “well, it’s not programming unless it’s object-oriented. And that’s why I don’t consider JavaScript a programming language.” That’s a very, very flawed train of thought.

Data Structures

self-taught programmers

Granted, your language can give you a basic idea of what the different data structures are. But again, that’s a basic idea.

Self -taught programmers can have a tendency to only stick to data structures that work within their favorite language. Just because it’s not a primitive, or even a common structure in your language, that doesn’t mean it can’t exist. Of course, that also means that maybe it shouldn’t exist, either.

The world is very small if it all can fit inside of an array.

Testing

Maybe it’s just me, but there’s a lot of ways to test your code before pushing it to an environment. Learn how to do unit testing.

More importantly, learn test-driven development.

There’s a difference between testing your code, and writing testable code.
For me, The Pragmatic Programmer was a big help.


 

Author’s Bio

Frank M. Taylor is a Senior Front-Developer at Tahzoo Worldwide. He specializes front-end architecture for  content management systems. He is a three-time SDL Web MVP, awarded for his blogging contributions for SDL Tridion, an enterprise CMS. Frank is a hackathon winner, lecturer, and blogger for front-end development. He lives in Illinois with his wife and border collie, Lillith.




Questions about this tutorial?  Get Live 1:1 help from Programming experts!
Anuvrat Parashar
Anuvrat Parashar
5.0
Engineer turned entrepreneur debugging software for 15 years.
I succeed or your **money back.** Skillset includes: python, elixir, rust, golang, c++, lua et al. Diving into, understanding and debugging...
Hire this Expert
Babajide Oyafemi
Babajide Oyafemi
5.0
FullStack software developer | Tech Writer
As a seasoned full-stack software developer with a passion for solving real-life challenges through coding, I bring over five years of diverse...
Hire this Expert
comments powered by Disqus