My journey was a messy one!
Coming from a computer science academic background helped me in realizing some concepts a little bit faster, but back in the university days i didn't have any interest, and didn't put much effort to know about it. So credit for skills am having as a developer now is only from self-learning.
Not every Computer Science graduate is a programmer! a fact.
I had all the excitement in the world to start developing a real world project, but How? Where? When?
As i had no experience in programming other than non completed attempts, challenges, examples and tutorials, When i first begin to work i was asked to read about MVC, C# and .net,i started reading this and that, more tutorials,articles, videos, there were no time frame i just had to read and implement as much as i can.
After about 3 weeks i received my first project: it was an E-Shop. With some help in the basics from a member of the team i started developing, next i received a second project was a hospital reservation system.
Main purpose of the projects wasn't for me to complete them both of course, a beginner or even experienced developer will not complete such systems in this short amount of time i was given, purposes was to practice by doing, get my hands dirty, measure my skills level,and performance.
I was so surprised how it went, with every issue arises i was learning either by just facing that issue and thinking about the solution and make a research about it, or by actually fixing the issue, and i was backed up with knowledge in both cases, knowledge that I've gained from my non-completed attempts earlier, i was actually gaining knowledge and skills but i didn't know i have them yet.
"Better To Try And Fail Than Never To Try At All" William F. O'Brien
During the 2 times of failed 100 days of code challenge attempts, i was learning python using Django framework, by following: Python Crash Course by Eric Matthes Examples, i didn't feel like am making progress at that time, but it came to surface later when i implemented MVC in .NET.
And this is one thing i really like about programming, once you understand a concept in a language or a framework, it will be easy to be captured later in a different language.
Same for programming basics: Array, classes, objects, loops..etc i practiced it before in PHP, Java, Python, JS, and when i came to use C# i didn't even have to look at it, it was just there.
As a left-brained person "Mostly", one can tell that me and front-end won't make very good friends, but the team code is to work front and back end.
At that point i was thinking: OK back-end you know the concept and syntax, and you should build one two three...etc specific things and everything is good, front-end on the other hand! technologies, syntax, concepts seems easy but there is no obvious guide lines as in back-end, and all these technologies need to be mixed together but how? Plus what you need to build is completely up to you no obvious border lines,it need imagination and spark of creativity!
FreeCodeCamp curriculum: From Zero to Having a portfolio that was built from scratch by me :)
Responsive web Design Curriculum did the magic, as i didn't know where to start, but by following the challenges, and before completing the curriculum, i started editing my Hospital reservation project design, and gain confidence to know that yes! i can actually do some front-end tasks, i was so happy with the simple, elegant design.
After i completed the curriculum, i did the 5 projects with the minimum requirements just to pass the challenge, and get the certificate, yes that was so cheesy but one need encouragement you know! and then i was interested in the personal portfolio project more, so i made a lot of changes to perfect it. The result was good, and again i was like: Oh wow, this looks like a real web-page, and i have done it by my self from scratch! my confidence increased a lot.
As the time passed, 3 months later i started to get bored, and wanted to participate in a real world project, so i stopped working on my test project, and stopped practicing at all. couple of weeks later i received my first real project task, i was so happy because i needed to know how i will perform after all this.
Task was to add graphics to an existing Sales and marketing project + completing reports and filters for these reports.
I performed so well, at that point i knew that i need to stop worrying, understand the concept, practice it and relax, because when you will need it later it will be there waiting for you to use it.
100 Days of Code hashtag's community on twitter was and still a game changer, that's where i knew about most of the helpful resources, developers community on twitter in general they are so supportive, encouraging and so friendly, ENGAGE in that community. Today :)
In programming you never know that you have all these skill under your belt until you start developing a project and get your hands dirty, you will be surprised by the results.
Learn to learn, yes you read it right learn how to learn, understand the concepts, syntax is not that important, it will all come together at the end.