Being a developer is pretty serious work. Especially considering that you have to keep track of so many projects, that everything should look good, the database queries should provide all the data needed, then the backend has to send this data to the client fast and efficiently as well. But to get to the beginning of everything, I’ll give you a brief introduction about myself.
I am Vlad, an 18 years old web developer that has started his journey in the world of programming at just 14. Living in Romania, we have a certain choice when going into high school; that being the certain specialty we want to graduate with; for me, it was Math & Computer Science.
We started with the more complex C++, the language chosen to learn about Data Structures, Algorithms, Efficiency, etc. Fast forward 3 years, and as I got bored and tired of the more basic DS and Algorithms, I thought to myself: “Is this really all that programming is?
Just the never-ending types of data structures and algorithms?” and after that, I started looking around for some more insight into what it really is, starting into this ‘adventure of finding the true meaning behind programming’.
I quickly found about Python, which actually matched my expectations of how much mystery and awesomeness there might actually be farther than what I was studying at the time.
As I became more and more amazed and got lost in the wonders of what can be actually done, I started consuming tutorial after tutorial, from simple hashing scripts to basic games using Turtle, to web scrapers, and whatever else I can find using this fascinating new tool I had in my toolbelt. It was actually at the start of the pandemic when everyone was locked up in their houses. Although everyone else I have talked to says that that was one of the worst periods they encountered, I believe that it might’ve just been the best for me, as it enlightened me with what can be done further down the road and how.
As a few months went on, I started looking into more advanced concepts and things I could work on, although, being at the start of the journey in programming, I didn’t really know much about the concepts more advanced tutorials were talking about. The easier tutorials were getting boring, and the ideas behind the presented projects in them no longer fascinated me, so I started stagnating. I thought that the only door left open for me was finally closing, and I think it was until a certain point.
What my ‘desperation’ brought me into was what I was actually looking for in the first place; it was a platform that provided an abundance of options, project ideas, for short, everything that I could have thought of, and not only that; it was Web Development. On my adventure in the world of programming, it has happened a few times that I encountered HTML. Although I was so captivated with the possibilities of Python and what I can do with it that I never really dug into web programming, as I didn’t really think much of it; if I really think about it, I think I also believed that the web is done mostly using Python or C++ (being true for C++, as it’s what Browsers are mostly based upon, although not the pages themselves). But nonetheless, this was what brought me on the path I am on when I am writing this very blog.
As I found more and more about HTML, the fact that it is what all of the internet pages are based upon, I started digging deeper and deeper into what can be done, how I can make a blank page into what other gorgeous websites look like, how I can make the popups, modals, create users, posts, etc.
It has taken me a couple of months to get myself comfortable with having a UI similar to what bigger platforms have; it was demotivating at times, seeing how much I don’t know, but it didn’t stop me because I knew that after all, everything was done by humans for humans, so I kept studying and learning as much as I can to reach a level where I can develop my own good-looking and reliable websites and platforms.
After the first 2 or 3 months, I believed I was finally ready to dive into the realm of the almighty JavaScript. This language was pretty similar to Python in a way due to its ease of use and reality, but pretty foreign compared to what I knew from C++, having worked with it for more than 2 and a half years at the moment. Still, I continued my path with the same mentality and motivation before jumping into Python.
I have to say; it has been a very rough path looking back; seeing all the magic that could be done with JavaScript and not knowing how to apply it as well, but after 2 or 3 months further down the road implementing JavaScript into the prior websites built using only HTML and CSS, I have to say that I’m still surprised with what I was able to do.
My very first complete JS project was actually a memory game packed with animated card rotation functionality, some kind of user logging, as I used some PHP as well, as I was learning it on the side, as well as some statistics and all of the magic of storing it into a MySQL database (would probably cringe looking at the backend stuff if I were to look back at it).
The next projects were pretty similar as well, as I was locked for some time into making some games using JavaScript, like a Guess The Number Game with an alright interface and the functionality in place, or a rough mockup of a roll the dice game as well; but after some time I decided I have to take it to the next level, so I started searching everything I could about how Facebook was made, or how Medium, Pinterest, or how ‘insert major platform name’ was made, so that’s when I found out about React, Node.js, Express, MongoDB, Laravel, Django, Flask, and many other web frameworks based on either JavaScript or Python / PHP, which I knew a bit about.
After getting comfortable with having a database connection, having a solid UI / UX, and making stuff work, I have taken a short break, as I wanted to know what I will be getting myself into further down the line, so I started researching what frameworks would be reliable, if I like them (In the beginning I think that it’s a good thing to do, as it will dictate a lot your perception of web development, whether or not you will give up and other details as well), so that’s how I got into the ‘mainstream’ MERN Stack.
What I mostly liked about the MERN-Stack Technologies is that there is a lot of support out there for them, there are a lot of communities, groups, pages, all dedicated to React, Node/Express, or MERN in general, so I believe that for a beginner it’s a wonderful place to start, and even for more seasoned developers, don’t get me wrong, it’s great, it’s performant, it’s modern, and there is a lot of support out there, so it’s all good for more years to come.
As I have been mostly working with HTML, CSS, and JavaScript, it felt just right to start off with the Front-end, as I didn’t really know much of what was happening in the Back-end, so I decided to go on that road and continue my path learning React; as I first started off, I met Git, Node’s package manager — NPM, webpack, and lastly, the whole different way of doing things that frontend frameworks are using. I have to say, it took me a while to get used to this new perspective of what’s happening at a higher level of abstraction, but at this point, it started becoming a joy learning about all of these technologies and the new ways of doing things and the fascinating technologies used at this level.
After I got used to the npx create-react-app and all of the files/folders included within what will be created after this command, as well as learning a bit more about all of the theoretical things that were happening under the hood from the official React website, I was on my way to bring my websites to the next level of cutting-edge.
After a few days/weeks of playing around with the basic tools such as useState, useEffect, useRef, as well as the other magical keywords available from the React library, getting used to the way that Class and Functional Components worked, the inheritance, parent-children relationships between the components, studying and learning more about what State Management was in theory, what cleanup and cache were, as well as a lot of other concepts present not only in React but also JavaScript directly, I was ready to dive into some real-life practical projects hands-on;
Getting used to all of the things aforementioned was a tedious and hard process, but it was all I needed to get right on track with the parts that would soon follow, such as proper State Management, Data Transfer between the server and client, as well as other processes that I will talk about as well.
After around a month, I was ready to get into some projects and explore the true perks of working with a framework instead of the basic vanilla JS. At this time, I was also applying to do gigs on Fiverr. Although unsuccessful in the first 2 months, I wasn’t discouraged, as I knew there was still time to learn other things whilst my proposals were out there; but what I did was, other than working with tutorial projects, to actually try and do what the Fiverr clients requests were. If I saw, for example, a project saying: “I need a website similar to the one I attached here” I would try to actually do that, even though I hadn’t gotten the project, for the sake of checking whether or not I would even be suitable to work on such projects.
Due to this approach, I actually got some real-world experience, as these types of projects are what actual people would actually want to publish online and manage. It was exactly what I needed until I would get some real clients.
I have to say - it wasn’t exactly easy working with such projects, as the first ones were actual platforms such as full-functionality eCommerce websites or Social Media platforms. But in the beginning, I tried my best to work on the interface and to make everything look and feel, such as the linked platforms. In the end, I would come close to replicating them frontend-wise, being one of the best things I could do, as this made me look up a lot of stuff I was either uncomfortable with or completely unaware of, which, in the end, made me learn a wide variety of things regarding the plethora of technologies related to React and npm, or styling, such as libraries like styled-components, chakra-ui, reactstrap, as well as scss, which proved to be my favorite option when it came to styling, as it provided so much flexibility and choice when it came to the UI/UX.
I saved you the time of actually listing the technical details of the projects or any other insignificant details. Still, if I were to start over again, I would do the same thing over again, as I believe it was an incredible thing to do, especially in the beginning, because due to the lack of actual real projects, I could find another way into finding what websites actual clients would want to have built, and how they talk about the way they want them done.
As I mentioned earlier on about 2 months with no clients, that was all it took until I received my first order; it was something like 10 pm when I was checking my notifications when I saw I received a notification from a green application icon; I didn’t recognize it at first, but the moment I opened the notification and saw the Fiverr logo at the top I knew it was a client chat. There was it. My first Fiverr Order. Finally!
After all the excitement of getting an actual order from an actual client, I started talking with him about what was it about; after we exchanged a few replies, I knew the project would be a bit over my skill set, but I knew that after all this time it would be a pity to refuse my first project, so I accepted it and thought to myself: “It might be over what I can do at the moment, but after all, I will be able to learn along the way”, so I told him I would be able to deliver the website he needed.
Since I knew I wouldn’t be able to deliver fully with the skillset I had at the moment, the way I thought approaching the situation was to actually start with what I didn’t know, that way I can finish off the project easier, as the final part of it would be the frontend, which was my actual proficiency, working very little with backend technologies such as Node.js, Express, and MongoDB, my only knowledge back then was with PHP and MySQL, which, despite still being backend technologies, weren’t exactly Node.js, Express & MongoDB as requested in the gig, so I started consuming tutorials as much as I could in the first few days. So I get an idea of what I have to do and the differences between what I knew and what I had to do.
After some days of intense researching and studying, I was able to actually come up with a backbone for the backend, mostly inspired by one of my favorite tutorials and instructors, that being The Net Ninja, which I, at this day, consider to be a complete and efficient backend system with all the common integrations in place; system that I still use to this day, with, of course, some tweaks, to provide me with a quick headstart when working with MERN projects.
Long story short, the project was a success and a pretty consistent one as well, as the website is still working with those implementations to this day, with a couple of minor tweaks I’ve recently made to it. But it was the ideal confidence boost to know I could do the job well enough for everything to be working great.
After the success of the aforementioned project, it wasn’t long before other projects started coming in due to the client’s testimonial, which was very pleasant and positive.
The rest of the projects coming for the months after were similar in difficulty, each one of them coming with their specific differences from the first one. It was mostly the stuff I knew and decided to excel in. So I didn’t have any problem fully delivering great websites/platforms from that moment on, as the confidence and skill were there to get the job done.
Although I am aware that there is still a very long way to walk to become a true expert. I believe that it all comes down to the way we approach clients and projects. As for me, even if I don’t have the best skill set for the job, I am determined to learn stuff down the road and to give my best to every project, no matter how easy or hard it is. After all, the experience we offer to our clients and the way we go over the top for the client matter sometimes the most.
And just one more thing before I finish regarding the last paragraph; one of my most memorable projects was for a Canadian client looking for a platform to manage custom projects, talk with clients, and have an administration interface with all the good stuff included. Although the project was taking a bit longer due to my lack of experience at the moment, the functionalities and ideas, as well as the experience I tried to offer him, proved to be great since I got to work with them at the agency on a contract, which proved to be beneficial, as not only did it give me new work opportunities, but he proved to be a great person to talk with as well, so calling him a friend at this point would be only right. All the best, Simon!
The goal of this blog was to possibly motivate anyone out there not to shy away from projects they think are not ready to handle because as long as you really believe you can learn as you go, it shouldn’t be a problem. You can always discuss with the clients any shortcomings regarding either some project requirements or your skillset. This also teaches you that social skills might be a problem until you master them.
Also published on Medium's subdomain.