How Far Can the Self-Taught Programmer Go?
In 1968, there was a bright high school student who learned about this new thing called “computer programming.” The school had a teletype connection to a college computer, and a speaker from the college came to talk about a brand-new programming language called BASIC. The student spent many days after school in the teletype room, creating code on a big roll of yellow paper and trying things out. His programs predicted basketball scores based on past games, set up computer dating, and played Mancala.
This gave him a lifelong love of computer coding, but self-taught programming wouldn't have gotten him far by itself. He made up techniques as he went along, but there’s a lot to learn. Fortunately, he got into a top-ranked technology college, where he was able to turn a love into a career.
A survey by Stack Overflow found that 69% of developers say they are “at least partly self-taught.” But what does “at least partly” mean? A developer who never studies a book in private or tries out a new programming language for fun would be a very dull developer. Programmers are “hackers,” in the old, honorable sense of the term. They experiment. They strike out on their own. A lot of them, like our high school student, started writing code before they ever took a course. But that doesn't mean they can get the whole way without training. The report says that just 13% of the surveyed programmers said they were only self-taught.
It's not just cranking out code
There's more to software development than learning a language and turning out lines of code. A coder can turn out a small, individual project by any old method, but bigger projects require a more systematic approach. The skills for doing this aren't ones you learn from writing code on your own. It's possible to learn them from a book, but it takes feedback from people to really get a sense of them. Large-scale software development is an interactive task.
These skills include:
Use of patterns. There are best ways to accomplish tasks in each language, and they aren't always obvious. Using patterns leads to more consistent and less buggy code.
Documenting code. Developers have to come back to code they wrote a long time ago or take over what someone else has written. Figuring out what uncommented code does isn't easy, even if you're the one who wrote it.
Organizing code. A small program fits in one file. Even a moderate development project requires organizing the code into multiple files, and designing each piece so that changing it won't break everything else. It's necessary to distinguish a module's public behavior from its implementation details. If it's properly written, the implementation can change without worrying about the rest of the project, but a change in the public interface requires reviewing everything that touches it.
Investing time in learning
There are many ways to use a programming language. Most of them aren't obvious. Some features, such as regular expressions, will look bewildering at a first glance. The self-taught programmer will shy away from approaches that require too much up-front learning. Another approach will work better for that particular problem.
The next time a related problem turns up, again it will be easier to devise a one-time solution. Before long, the programmer will have spent more time writing special-case code than learning the more powerful features would have taken. A teacher or mentor can explain the power of the feature and show why it's worth investing time in learning it.
Understanding the bigger concepts
New paradigms always turn up in software creation, and the successful developer needs to understand them. They simmer for years in the academic environment, then some of them become standard ways of doing things. Structured programming, object-oriented programming, and functional programming have all followed this path. They aren't concepts people grasp quickly on their own. Even their creators needed time to develop them into useful methodologies.
People learn software paradigms best by working with someone who's experienced with them. Textbooks help, but personal interaction helps more. Getting answers and feedback contributes a lot to a deep, intuitive understanding.
Have you made a start on learning programming on your own? That's great! Now turn it into a professional skill with the help of DaVinci Coders. Contact us today to find out how.