My very first mistake and failure at the beginning. Do not choose a programming language, choose a path!
I started learning programming one year ago (you can read about my motivation and reasons to start learning in previous article). But, actually, I made one extra try earlier, 1,5 year ago, when I spent few weeks trying to learn Python. Why did I choose Python? Because I read that it's a best programming language and especially the best for newbies...
And maybe that is the true, but I was bored building small console apps... It means that the result of the app ran was some text or calculations printed in console - no visual elements, no interface. Now I know, that you can do all of these things with Python, but not at the beginner level.
So I gave up with Python and console apps and went back to my other creative activities (blog, social media accounts, music composing). After a few months I tried to figure out, how to plan my programming development and how to choose a langauge.
Then I read, that I need to choose a path, not a language. A programming language is only a tool. So among the available paths I chose a front-end development, because it allows you to create simple web pages and user interfaces practically immediately after learning a few things!
Besides I understood, that I want to create web pages and web applications, so this path was the best option to manage this goal. So then, when I knew exactly what I want to do and achieve, I could find out, what languages and technologies I need to master.
HTML & CSS
All front-end developers start from HTML & CSS. These markup languages are the foundation, the sceleton and skin of web pages. HTML & CSS are not stricly speaking programming languages, so it's a nice thing to start coding in them. No variables, no functions, no loops.
After a few hours of learning you can create simple web page in your browser which contains headers, lists, sections with content, images etc. thank to HTML tags. You would be able to add background & font colors, different fonts, text and items allign, text decoration etc. with a few CSS lines.
I'm very grateful to Khan Academy for my programming initiation. I finished all their computer programming courses and I'm sure that I wouldn't be in the place I am now without them.
I learned basics of JS along with another Khan Academy course - Intro to JS: Drawing & Animation with processing.js & more advanced & complex topics with Advanced JS: Games & Visualizations with processing.js.
HTML + CSS + JS (+ jQuery)
Finally, when I knew basics of these languages, I could combine them & started creating web pages and simple web applications along these courses:
Apps were ugly, but... worked!
The same thing happend with processing.js library, because I found out, that this library will not be updating, so I needed to switch to it's modern version - p5.js with help of official p5.js references:
However, you’re not limited to your drawing canvas. You can think of your whole browser page as your sketch, including HTML5 objects for text, input, video, webcam, and sound.
Then I started using p5 online code editor and it would be impossible without knowledge of modern JS standard (ES6) & p5.js library. i made a lot creative projects and apps in that editor with p5.js: racing game, quiz app, falling snow animation, snake game, simulation of my office's queuing system, math app for children and more.
I felt in love in its possibilities. It wasn't easy at the beginning to figure it out and I had a few tries, but I've managed basics of React along these courses:
- React Official Tutorial
- React Official Tutorial 2 - step by step guide
- React Type of Web Tutorial
- Getting started with React
- Learning React. Modern Patterns for Developing React Apps (Eve Porcello & Alex Banks book)
I became familiar with Bootstrap, the world’s most popular framework for building responsive, mobile-first sites, to speed up and simplify my apps styling and responsive web design.
With Bootstrap my pages and apps became standardized, beautiful and looked really fine both on computers and smartphones. I had no need to play or struggle with CSS anymore (of course I used CSS, but rather inline in my components JSX).
When I got Bootstrap 4.6 version, I needed to switch to the newest upcoming version - 5.0...
I needed a routing for my apps and web pages, but if you are working with front-end and have no back-end background, you need to figure out it somehow. And the tool I needed was React Router!
You can find all necessary information about it here: React Training / React Router
From that moment my apps had dynamically generated links and it was not only convenient (and a standard) for users, but also routes helped me to better organize my apps, its rendering & passing data between components.
My apps were really complex at the moment, but I was struggling because of lack of database, so potential users of my apps (including me) could put their data (text content, images etc.) only to browser's local storage.
Thanks to this my previous blog application allowed user to create a new article, save it and it was visible only in that particular users browser. It was nice for excercise purpose, but it wasn't enough for real-world apllications.
So, finally, after experimenting with local storage and fetching I was prepared for real database experience! And Firebase was the savior. I learned how to work with Firebase from official Firebase docs.
And of course, when I figure out, how Firebase 8 works and felt comfortable with that edition, Firebase 9 came out...
This is common thing in programming world, especially in web development. You need to be prepeared and aware of that new frameworks, updates or new languages can show up any day. It means, that you need to upgrade your apps and your skills constantly or you'll be outdated very soon.
Summary - What You Can Achieve In A Year Thanks To Dedication to the One Thing Only
This year of total dedication to the one thing - learning programming - has resulted in the fact that:
- starting from a total scratch a year ago, I am able to create and publish full-stack responsive interactive web application or web page with users authentication and database integration & done a lot of open source projects, such as among others:
- I proved myself intellectually, creatively and managed to implement myself in a completely new field through self-learning along available free online sources,
- I am proud of myself and the man that I have became during this year.
I hope that my story will inspire you and encourage you to start learn programming or... start learning anything else this year. Now you can see, how much can be done and learned in one year if you are devoted to the one thing / topic only, especially if it's a wide complex field.
I were coding at least for 1000 hours during this year in my speare time after a day full-time job and that was a key:
- focus on the one thing - learning & apply new knowledge to your projects step by step (in my case)
- reject all unnecessary unsustainable things and activities, such as:
- pointless surfing on the Internet or social media,
- watching news, movies or series,
- hanging out with people with whom there is nothing to talk about,
- but also engaging in projects that do not get anywhere or do not produce the results we expect...
If you'll decide to dive into web development in 2022, you can follow my roadmap!
Happy Coding (or whatever else you will be doing) in 2022!