DEV Community

Cover image for The Downside To Being Self-Taught.

The Downside To Being Self-Taught.

Rus Kuzmin on June 21, 2020

First and foremost, I would like to state that I would recommend teaching yourself to code but, there are a few times when this could backfire whic...
Collapse
 
shaijut profile image
Shaiju T

To the point: "Programming is 90% figuring out what to write, and 10% actually writing it" 😄

Collapse
 
jimtoniq profile image
Thomas

Thanks for your post. I totally agree on your first point about clean code.
Almost all of my skills I learned in a self-taught manner, the rest is based on experience. So as a self-taught developer you tend to search for problem in the web, and thats completely fine since you learn to search and describe your current challenge which helps you to unterstand it better and break it down to the most important facts.

What you find then is often code-snippets that match your need, that some just copy-paste, which doesn't help you to understand the solution and be prepared for it when faced the next time.
Additionally, those code-snippets contain something like "var x = ...". And thats why code of many developers look cluttery because they give the impression that it's OK when variables or functions are named like this.
In stack-overflow's most-rated answer it's written like that because they don't know your real use-case and that naming is fine in that context.
But stuff should be renamed after implementing it to establish readability.
It is fine when stack-overflow's answers does contain snippets that are not "Clean Code", but it's not ok if your project does.

So after teaching yourself multiple technologies and languages, every developer should start and reflect why they can't read and understand their own code the next day anymore.
Learning the most basic rules of how to write clean code makes totally sense there.
I did it and digged deeper into clean code rules and I would assert that my code-style improved within 2 months, which results into more win that learning a whole new language in that time (because rules are applicable to every language).

Collapse
 
goldennoodles profile image
Rus Kuzmin

Couldn't agree more! More often than not the code on stackoverflow was written quickly and the solve the problem without taking anything else into regard. It's your responsibility to take that code and perfect it! ❤️x2000

Collapse
 
fasani profile image
Michael Fasani

I think there is an overlooked and untapped resource for self taught devs. GutHub! You may be using it already but what I am talking about is taking the time to look at the code from popular libraries. I used jQuery for years before looking at the source code, crazy right. The same is true for React today, many devs are using it but few have taken the time to look at the source code. In these projects you can go beyond the copy and paste of single problem and see the entire code structure of a complex library. The other great thing about GitHub is becoming a part of a small community where people will give your code feedback and if your honest with people and tell them your not sure about a section of code they will help you. I wrote recently about getting involved in an open-source project. I think we all should have open source project to work on, you can learn a lot watching other people commit code and discussing topics around the project.

Collapse
 
nedimf profile image
Nedim F • Edited

I had fortunate to start learning coding around age of 13. I have started with Java and worked my from there to PHP and my first diploma of finished course. I was far the youngest in group and I loved it. Years passed I ditched PHP for Node then server side and API work till I circle around to Android and Kotlin , and for past few months Swift. Thing is , I have never learned data structures and complex algorithms .. I was always just busy making stuff work and I 100% agree with your point. We have big empty spaces to fill in a future.

Collapse
 
srleyva profile image
Stephen Leyva (He/Him)

Great advice! I’ve found the stuff I’m not interested in learning the hardest to focus on (as does most I’m sure). When you’re self taught, it’s hard to be disciplined enough to sit down and say “I am going to learn about CPU registers today”. I’ve found you have to trick yourself into caring in a way by relating it to something you do care about.

Collapse
 
davidmm1707 profile image
David MM👨🏻‍💻

Great post. I would also advise against refactoring too early. Make it work, then polish the code. You end deleting polished code when you have to change a feature you (or the client) didn't plan for.

Make it work -> Write tests -> Refactor.

Collapse
 
goldennoodles profile image
Rus Kuzmin

Agreed!

Collapse
 
thechrisjasper profile image
Chris Jasper

I am self taught and started learning at around 13 or 14. I'm 43 now. I would say that I still think there is a lot of merit to the "just get it working" approach. I still do a lot of investigative and proof of concept work this way before moving to engineering and before writing tests.
I do agree about certain more complex topics that you would traditionally learn at University, I did have to make a concerted effort to learn these topics. At no point have I ever thought that University would have been a good for for me personally.

Collapse
 
szilardszabo profile image
SS • Edited

Do you remember when UML was a thing LOL. Where are stuff like that by now? I think writing working code first is still the most important, especially with all of these new languages, frameworks, methodologies on the horizon all the time replacing sometime very useful good things from the past with less quality stuff... and my observation is that actually they still do not solve any problems from the past, just force you learn doing the same thing the "new" way, sometimes even worse than before, so you can be happy if you can get anything even work... I am self-taught but later on acquired a computer science degree... Still I am happy if I can write working code first and then worry about planning maybe later... We still have no good tools to do it... Writing clear and clean code is important too but it is also mostly about re-factoring code once it is working...
I think the main problem with self-taught developers without degree is that they sometime lack fundamental knowledge about computation theories, algorithms, databases, operating systems, networks etc... basically everything you need to be able to do software with real value. You need to learn the fundamentals of this profession in the university to be a able to create real value computation... When you really have to plan is when you need to actually compute something complex that needs knowledge of higher level Math. E.g. how to make a computation converge, how encryption works in the background, which one is the efficient to use. How to think and calculate efficiency, scale, parallelisation in respect of highly distributed systems. These profession is not about creating a flashy front-end in React LOL
That is the essence of programming.

Collapse
 
tanami profile image
Tanami

TDD is a poor replacement for MOP anyway...

Collapse
 
starswan profile image
Stephen Dicks

Daft question, but what is MOP?

Collapse
 
tanami profile image
Tanami

model-oriented programming!

Collapse
 
khalby786 profile image
khaleel gibran

I completely agree with all of the above points - especially because I'm a thirteen year old developer.

Collapse
 
goldennoodles profile image
Rus Kuzmin

I'm glad to hear! The going will get tough but you gotta keep going. 💪💪

Collapse
 
taufik_nurrohman profile image
Taufik Nurrohman

The Downside To Being Self-Taught: Imposter Syndrome.