Apprenticeships & Self taught programming

I hope this is topic is appropriately placed, I am seeking advice regarding being a self-taught programmer and finding a job (apprenticeship in my case). I apologise for the long post but I would very much appreciate some opinions on my situation and answers to my enquiry after explaining myself to a good extent, even if I do stray off target I just want to give as much detail as I can in hopes of receiving the best advice for my situation.

I finished high school a while ago and have since been looking for IT apprenticeships, and already I have been in and out of two as a result of some unfortunate circumstances**, the latter ending little over a month ago. I have been very much into computing from a young age (about 12) and I believe myself to be a more than adequate programmer with quite widely ranging experience. Originally I learned OOP development, lots of java and later onto the C languages. I dabbled in a wide range of cyber security and got an understanding of not far from all the categories of tools available on some common pen testing OS’, which I first learned on Backtrack 5 r3 back when it came out. I think the first programming I learned was some HTML that always stuck with me, and then a while after being heavily into software development I thoroughly learned javascript, and since then from work experience and what I saw in my apprenticeships I have developed my full stack knowledge exponentially and felt just as confident doing web development. Throughout high school I was told by each of my computing teachers that I was very good at computing, and that the level of work I was at was exceptionally high. I recall learning how to make a simple game engine in java and some relatively simple full stack programming with XAMPP that I showed them, as well as knowing all the cool tricks used to impress those who don’t spend their lives on computers. Perhaps this instilled in me some grandiose delusions, but I was always greatly confident in my skills.

Despite this, in my apprenticeships where I was working on big projects for the first time I would see the MVC layout, all kinds of different plugins and services and APIs being used that I hadn’t come across before in my development projects. I was able to catch up and learn these new aspects of programming, however my concern is that the only way I knew what I had to learn was through looking at these projects and asking questions for all kinds of little bits of code (specific to their code rather than google-able stuff) that I hadn’t seen before - and so I am not able to do my own research now on the things I don’t know because, well, I don’t know what they are. I have spent my fair bit of time researching popular frameworks and improving my weaknesses, but I still feel unprepared for what I might come across next. In my first apprenticeship it was very much the case that I was clueless as to the company software code I was learning, and so the individual I was working with took me as rather clueless altogether with programming (which I took to be rather ignorant of him, as I had demonstrated clear understanding of a good amount of concepts yet he still would question my ability to move files into the right folders and if I knew what .txt files were), leaving me to the menial tasks and not giving me a chance.

Again, I apologise for the long post and for getting somewhat off point. My question is, to any self-taught developers, employees or freelance:

How did you learn programming to the extent you were able to learn the modern programming techniques used in businesses today?

To any self-taught freelance developers, how were you able to learn enough so as to be able to take on projects when you are told simply what needs to be made? I would love to be able to freelance but I feel I simply don’t have the knowledge base to be able to take a specification and have my mind produce how I could go about doing it, without spending hours scavenging the web for frameworks and functions that would be efficient for the project.

Thank you very much for anyone took the time to read this, any input would be greatly appreciated.

** I quit the first as I wasn’t able to learn in the environment, and the second I was fired (in my apprenticeship recruiter’s & own opinion) unfairly as a result of sick leave.

I don’t think any amount of self-teaching will make you 100% prepared. But every library and framework you learn will help. And each one you learn, the next one will be the tiniest bit easier.

There are sooooo many different libraries and APIs and design paradigms, etc - there is no way to learn them all. And by the time you did, half of them would have changed and there would be new ones. But learning a few in depth will help. And then start getting a broader/shallower knowledge of others.

When I was learning, I decided to focus on React - I liked it and it seemed in demand. That took me to React Native. I’m about two and half months into a React Native job. I’m terrified every day, but I do manage to contribute, and things gradually get easier. It also helps that this team is a great bunch of guys and gals and are very supportive. But there are definitely a lot of things I still don’t quite understand. The React Native I understand, but all the different libraries and services and APIs fit together, and a very different design paradigm that what I was used to - and it’s a monstrous app - there is definitely a lot to learn. But I chisel away at it every day.

I’m sorry that you haven’t found the right situation. Just keep learning and developing your skills. Even if it isn’t exactly the right combination, everything you learn will help.

Look at some open source projects. Not only does that look great to employers, but it’s a great chance to work on unfamiliar code and using unfamiliar libraries.

And I would also think up little portfolio projects. I would try to use at least one new library or API for each one.

Just keep learning and building. It will eventually catch up. It sounds like you are still kind of young - just keep learning and growing and eventually your skills, the market needs, and luck will intersect. It just takes time, patience, and hard work.

I have been teaching myself for the better part of the past 20+ years. The majority of that time I never really thought of it as something I could make into a career, it was just something I enjoyed doing and to my surprise, people thought I was good enough to pay me to build stuff for them, and thats how I ended up freelancing. Its only in the last 2 years that it hit me I want to do this for a living. After looking for work, I decided to go to bootcamp to learn the skills I needed to be employable.

So bootcamp helped, but I think a huge thing I got out of it is the importance of getting out and getting involved in the tech community, by going to meetups to get experience working on a dev team, getting to know people in various stages of their career, esp the people who are where I want to be and finding people willing to mentor me…all that will help hone your focus on what skills you need to be employable.

I didnt know much at all when I started freelancing…what people needed was so varied, it was just a matter of learning what I needed to learn to complete whatever they needed. Personally, it led to a mish mash learning process…a lot of things, I learned just for one project, never to be used again. But the good thing is, I did so many random things, I started to learn what I liked and picked up quickly, and things that were a bit rougher for me…so I was able to start developing an idea of what to focus on and be more selective in what freelance projects I took on.