There is a time that all developers can think back to. Back to the time when they had no idea what to do, or what is going on. It's such an overwhelming feeling, truly...
Alas, new developers! Take my hand, let me guide you! On a journey through the mind of a developer 🤯
To think like a developer, is to break your problems down into manageable sets of actually do-able tasks, and solve each one logically and in a way that completes the overall objective. When you try and think of everything at once, the path to begin is hard to even find, and many will quit at the thought of such a daunting task. This just goes to show the importance of problem solving for developers.
For example, I'll talk about a project that I started for the warehouse that I work at. My boss needed a way to do end-of-day reporting automatically. At the time he would have to manually go over each invoice and enter the totals and amounts paid in manually. A very error prone approach. I set out to work on the issue, by first clarifying it with him what exactly he needed my program to output, in order to give me a clear end goal. He needs the customers name, invoice amount, and a few other pieces of information. From his request, the first thing I knew I needed was data, and a way to fetch different bits of data. We were running a POS system called SupplyLogic, an old program written in winForms, you know, the old Windows 95 looking framework. I knew the software used a SQL backend from poking in the settings menus, and I had my first step: Make a SQL API so that I can then build a front-end program to consume the API and report the day's sales. I got in contact to the owner of the SupplyLogic software and requested a read-only database account so that my software could read invoices. From there it was a wrap, and now that software is IMO some of the best I've ever written.
Had I not had the foresight to interface with the SQL database, and then find the easiest technology to use with that database (C# and .NET btw, which I had never worked with), I would've never done any more than tear my hair out at the thought of making such a program. My previous knowledge of Angular helped me make a front end with a copy to clipboard button that he could paste the day's work into his already existing daily spreadsheet. Job done.
Moral of the story: You have to have the insight of what you want to acomplish, and the tools needed to acomplish said goals before starting. Otherwise, you'll be lost from the get go. I think this to be an important lesson, not mentioned by most teachers.
Too many new developers focus too hard on a language, or constantly switch languages and confuse themselves, but what you really have to learn are the key concepts in programming to get started. Variables, Conditionalls, flow controll, and things like that. Those things are only syntactically different in different languages, but the concepts apply everywhere. The same goes for slightly for advanced things, like HTTP methods, or async code. Want to learn how to draw things on a HTML canvas? Gonna have to learn all about coordinate grids and trig.