I have never had an education. All of my work, and all I am doing today is through countless working hours spend on teaching myself and learning through practice.
When I got into programming and making websites, I thought the basic understanding of HTML and CSS would be advanced. There were times where I had to learn about new tags in HTML and workarounds in CSS due to browser differences and all. That was difficult enough I thought.
Then we got SASS, which was like a new way to make nested and variable based stylesheets, which made it so much easier to make browser compatible styling. For me on the other hand, it looked very advanced and I was a bit intimidated by that. In my head I was like: “No.. Let’s keep it to the traditional way. People have been doing it this way for years, so I should be able to do it this way too.”
Later on I started to learn JavaScript and how to manipulate the front-end. Unfortunately my introduction to JavaScript was through jQuery, so I started out to be very dependent on the jQuery library in order to make any JavaScript work.
Shortly after I was introduced to PHP. Now this was different and I promised myself NEVER to touch a PHP framework or library, cause I didn’t want to commit myself to another standard which would limit my capabilities in other areas. This was a really good decision, as I got some really deep understanding of the language in a relative short timeframe, and at the same time I started to understand some actual developer patterns.
A brief analogy: Before I knew how to make 2+2 equal 4, but after working much more developer-minded I started to understand why 2+2 equals 4. It may sound a bit strange at first, but in basic terms, no programming language knows anything by itself. You have to write parts of the languages to make it understand how and what to do with the instructions you give it later on. So making 2 variables equal a third was me understanding actual syntax, but getting my hands dirty in the developer-world made me understand the fundamentals behind the syntax.
This was a huge stepping stone for me in coding, as I started to see the patterns in JavaScript as well. Suddenly it all made a lot more sense and the ways of working in different languages became much more similar. As I started to dig deeper into JavaScript and understanding how the syntax actually worked (Spoiler alert – NOTHING like jQuery) I started to study different languages such as Swift and then made turn into Node.js as a back-end.
Now.. I did some research. Had a look at some actual schools in programming, and it occurred to me, that as part of the education you have to study computer science. Initially I thought that Computer science was for engineers until I realised that programming also is part of the engineering school. I took a crash course on YouTube in Computer Science and I will let you in on a little secret: If you are new to programming and want to create a new career in being a developer – take a crash course in computer science. Everything about coding standards, syntax, best practices etc. all made so much more sense to me after watching that course.
This journey is only a few years actually, and today I am starting to learn even more new ways of working in programming. At the moment I am teaching myself more extended knowledge of working in Git, I am teaching myself the usage of Docker, learning how to be more productive using the Command Line Tool, and recently I was introduced to Rust, which a completely new ball game for me. I am considering skipping on Rust, not because I wouldn’t like to learn it, but I am not sure if it can be of any benefit for me at the moment. Maybe some day I will need it, but until then – it will stay in the back of my head for the future.
So yeah.. Today I am pretty familiar with many different aspects of programming, but I also have to admit, that I still keep learning new stuff, even after using the same tools every day for a long time. My journey so far has taken me to HTML, CSS, SASS, LESS, JavaScript, jQuery, React, Vue, Node.js, Java, Swift, Objective-C, Python, ASP, PHP, working with building APIs, GraphQL server, communicating with MySQL, SQLite, MongoDB, CouchBase, using Git, CLI, Docker.. Phew..
When looking at it like this, it may seem like a lot, but in reality, many of these concepts and languages share a lot of similarities, and I believe that once you learn one language, you can easily learn another.
Conclusion
If you are a developer or consider becoming one, I would recommend you to choose a path or direction to follow and use that as your initial gateway to the world of code. If you want to build mobile Apps, it may seem ideal to learn React Native or Xamarin or something which will give you the advantage to develop for multiple platforms at once, but I would recommend you to choose a native direction. Do you want to develop for iOS devices – choose Swift – if Android devices – choose Java.
If you want to build websites and escape the WordPress + jQuery + plugins + Theme era, start learning JavaScript and ES6. Get to understand the actual core concepts behind the JavaScript syntax. There are serverless systems out there, and options for Headless CMS’, which can give you a lot more flexibility and not having to understand more that simple JavaScript syntax. And once you are familiar with JavaScript, you can easily go full stack working with Node.js.
But no matter the path you choose to follow, I would always recommend you to take a crash course in computer science. It may not be everything that you have to understand, but and introduction to the world behind computers and there fundamental purpose will help you understand ways of programming a lot easier.
Good luck..
And remember – Make Code, Not War! ❤️