An important question - I'm humbled you ask.
This has been a challenge for me over the years. In fact, I talk about this a little bit on Hashnode over here: http://bit.ly/2FQcPGD
For me, it was a confidence issue for a while that held me back from reaching my potential in jobs. I felt as a self taught programmer that I wasn't as good as someone who got a CS degree before adding their experience in the field.
My self taught background heavily favoured the topics I was interested in, and rejected anything I didn't care about too much. This created huge gaps in even the knowledge of the programming languages I was using from day to day.
I also used to be what I'd describe as a 'survival coder' - that is, I'd learn just enough to fix a problem I was having and then would immediately move on and not retain what and why I was solving it in that way. I stopped asking 'why' for two reasons: 1. I was just trying to keep up enough to be a good employee 2. I didn't believe I was smart enough to dig into deeper, more technical topics
I felt I didn't have enough technical depth in how computers work, and the building blocks of how software is designed. This to a degree held me back from being able to participate in architectural discussions at work.
There's only one way to solve this, and it's to directly address the gaps and fill them in. I observed other developers around me, made a note of concepts they talked about with each other, and researched those that I didn't know about.
What helped me to advance in my job as a self taught programmer (which won't be possible for everyone due time and life circumstances) was:
writing open source libraries and then experiencing communities using those libraries and benefiting from them
filling in the gaps with resources such as MIT Open Courseware. I'd sit over my lunch break and watch a video while trying to implement the algorithm being covered in a JSBin project.
I realise these approaches won't work for everyone as they can require having spare time and the support of your workplace to learn on the job. They also address only the issues I was specifically having. But I hope this helps :)
Reply to this…