Hi, I completely agree you. I am currently learning how to code. I am at that point where I know the syntax of of a few language pretty well and can code up small programs.
However, I do have difficulties in architecting and developing a fully functional application.
Not sure you'll see this but honestly man, if you have friends in the field just ask them, plain and simple. Not saying this is you, but often people don't go this route because pride, etc.
If you don't know people in the field, chances are there are software people where you work - some are douchy to people just learning (pfft, you think you can learn this craft in months?) but others are willing and eager to help others. Find them and again, just ask them to point you in the right direction.
Lastly, find a class. Nothing crazy like a 25k bootcamp or anything, but find something like building a site end to end in 2 days or something like that.
A lot of this stuff is tribal knowledge and not captured well in tutorials. There are excellent tutorials for learning the technical things, but not necessarily for putting everything together into a working app.
As someone who came from a completely unrelated background (marketing). Here is how I managed to start 5 tech companies:
Your problem can't be unique. So, look around and see if someone has already solved it. After looking at their solution, ask yourself - Is it good enough or you still want to make effort implementing the same thing albeit in a different way.
The trick to complete a project never takes one that doesn't excite you. Since I mostly develop products for my own company, I have the luxury of picking up my team, project, and tools.
I started procedural programming with python then started picking up OPP. (OPP did not make sense to me since I wasn't working on real projects, just hobby scripts)
Finally, I learned C and it all began making perfect sense to me!
-> I finally understood how python does stuff it does at a low level.
Then I learned more advanced python stuff like decorators, generators etc...
Then I hired a few professional programmers to work for me and learned the software development practice, writing code is a small part of actual software project development.
-> I learned how software testing, planning, and decisions are done in teams. We were doing Agile SCRUM.
You can probably, pick up good workflow from some opensource GitHub projects which are developed in open!
Then there are special tricks/methods which you can not learn from books, so I hang out on Reddit, twitch, youtube channels and occasionally come across interesting tricks.
Then I learned Haskell, F#, OCaml which helped me in understanding functional programming.
After this, I learned Scheme and then Clojure.
I started writing JavaScript frontends with React and Vue.
Got interested in Reverse Engineering, reading Assembly etc... but then got bored because I was spending hours and hours and achieved very little.
Experimented with Java as my company has Java projects written by other devs and I wanted to contribute but didn't like Java and its ecosystem. (It's too complicated for me)
I learned Rust and moved from VIM to Sublime Text then finally to VSCode.
Then I learned Ruby and OPP magic became FINALLY clear to me.
These days I mostly write Go/Rust/Ruby/Vuejs(Typescript) and deploy on Kubernetes which made deployment soo easy, CI with Gitlab or Drone.
I was you a few years ago. There's two ways forward:
1. Get a job programming and slowly build up your skills/expertise by learning from those around you.
2. Develop a lesson plan for yourself and figure out how to build and deploy different kinds of apps.
I don't know if you're into #1 but I think it can be massively useful. There's so much stuff you don't know about that some dude who's been working somewhere for 5 years does. You can pick up best practices, design ideas, constructive criticism, better coding, better tools, knowledge that's easier to get in person than from a webpage. Today no single person makes a truly great and novel software application, and working at a tech company will make that apparent to you.
As for 2, some ideas assuming you know how to code:
1. Write an HTTP API that talks to several different databases. Learn how the databases work and when to use them. Get good at using them both from their CLI and a programming language.
2. Write a site using React/Angular/etc. and HTML/CSS to query an external API and display the results or organize user input into a fun framework.
3. Find a way to publish both of the above so that mom can interact with them.
4. Figure out how to wire a web app that you wrote to an API you wrote.
5. Find a way to deploy that as a complete system.
6. Figure out how to write a simple iPhone/Android App if you're interested in that.
7. Now make it do something cool, presumably by hooking it up to an API that does the heavy lifting.
8. Now make it all pretty.
9. Now figure out how to get it in people's hands. Collect their feedback and figure out what's working and what's not.
10. Go back to whichever step needs work and fix it.
That's easy to say, but there's a ton of work in learning all of these skills. It's one thing to write an app, it's another thing to get it in people's hands, and it's a third thing to get it to really really work to the point where people love it. A lot of people spend 40 hours a week doing that for years and don't/can't do everything - that the reason there's so much specialization in the world of software engineering.
However, I do have difficulties in architecting and developing a fully functional application.
How did you solve this problem?