How did I become a Software Engineer at 18 and how can you become one as well?

How did I become a Software Engineer at 18 and how can you become one as well?

·

9 min read

pressfoto — www.freepik.com

Some might already know a bit about me and how I got to become a Web Developer (Freelancer) at 17 with real clients and a lot of projects. But some things have changed since then, I learned new things, I’ve done a lot of new things, I was exposed to different people, and had a lot of introspective regarding my professional life and what I want to achieve.

If you haven’t read the article in which I’ve talked about how I became a Web Developer at 17 you can check it here.

Now, let me get to narrating what has happened since then and what I am currently doing.

The thought process and the reasons behind my transition from freelancing to a job

This is among the first things that changed not so long ago. After having completed plenty of projects and had some satisfied clients, I started to wonder how the developers at tech companies do their job, how do they use the same tools I am using, what methodologies are they using, what architectures are they using, what practices and strategies are they putting in practice and many more questions as such.

This was due to my curiosity and my wish of becoming a much better developer by learning what the better engineers out there are doing to craft their craft.

These have all been things that ‘haunted’ me for the past couple of months, as I believed that I am working for too long on projects and I was sure there would be things I didn’t know that would allow me to do my work much quicker and efficiently than I have until then.

Keep in mind that this has been a major factor in the change in my career path.

Apart from this new learning opportunity, which is far better due to the constant interaction with far more skilled individuals than me, as well as possible mentors, I would also have a much better schedule, as working in freelancing is not only draining and tiring, but it ate up a lot of my schedule, as 12 hours working days were regular, with frequent 100 working hours weeks and even more. Not to mention I had my upcoming baccalaureate exam coming up, as I was in my senior year of high school, so you get where I’m coming from when saying freelancing is pretty exhausting.

Another factor that added up to the choice I’ve made is the salary; although this is not the deciding factor in my choice, as it’s not that titanic of a difference when adding the other factors in the balance, it makes sense that the choice I’ve made would give me a better work-life balance than freelancing, at least for now.

Until the tides have calmed down

I also have to mention that whilst learning for the baccalaureate exam and the university entrance exam I was constantly applying to jobs both across Europe, as well as Romania, where I’m from.

The weeks before my Uni entrance exam I already had some interviews, that being the result of over 200 job applications. All of those would be from Romania, across major cities, which would play a role in my choice of uni as well, as I had my option open to Universities across these cities.

As a result of these interviews, I had some job offers, those being from medium to large-sized companies in 2 cities mostly. These positions were mostly junior to mid-level positions, so, of course, I would now be looking at the mid ones, as these were the most appealing both in terms of salary and benefits, but also because the companies from which I got the offers also had a nice interview experience, as well as a pretty cool culture, so I had to make up my mind about the remaining 2 offers.

There were 3 days for me to give back a response to any of the offers, as I requested some time to make up my mind about what I want to do next, especially since these 2 options were in 2 separate cities, and each of them would make for a different lifestyle, a different university to attend, different friends, and a new experience overall, so I had to take my time.

After these 3 days, based on multiple factors, I was able to make a decision I was proud of and was ready to take on the path of a Mid Software Engineer.

Then vs Now

Everything I’ve mentioned so far was my thought process while still working in freelancing, pros, and cons I considered at that moment, as I was aware of them and still, went with them until I was able to fulfill all of my projects and then wait until I was finished with my baccalaureate exam, as well as getting into University first.

After working 2 weeks now, I have to say that most things I was expecting when working on a full-time job were pretty close to reality, as the program is stable, there was plenty of free time for me to work on my other projects, the benefits are good, the colleagues are nice to work with and interact, as well as the superiors, so it’s been a good choice to leave freelancing off in favor of working a full-time job with plenty of opportunities.

Technologies that got me the interviews

Now that you have a better understanding of my non-tech path of becoming a mid software engineer, let’s talk about the technical stuff, and advice I have for getting a job as one from my own experience, as I went through a couple of interviews and got plenty of offers.

Initially, my tech stack was mostly React on the frontend, with helpers such as Redux/Redux-Persist, SASS with modules, GraphQL, and Node.js coupled with Express on the backend, with MongoDB, Firebase, or MySQL as a database depending on the business needs. This stack was used for most of the apps I’ve to build, with others being build using PHP / Laravel, Python / Flask, or even Shopify. These were all technologies I was comfortable with and could build upon them with external help.

The above was the tech-stack I went with to the interviews, and even though I mostly applied for Front-end positions, additional technologies I’ve used on the frontend such as SCSS and Redux, as well as the fact that I could also work on the Backend proved to be really helpful, as it meant I would be offered an engineering role instead of a development one. Sure, it was also due to knowledge of certain concepts and methodologies, as well as other web-related things such as web storage, browser accessibility, website performance improvement methods, security concepts on the web, and how to make a more secure website, and a lot more. But this all comes down to mostly experience and possible geekiness, as a lot of concepts aren’t necessarily something you would bump into, but are nice-to-knows.

Even though this might not be the most modest approach to what I want to externalize through this article, it is mostly used as a contextual detail and helps as it gives some insight into what is taken into consideration when the candidates' pool is selected for interview.

What’s the secret skill behind getting the interviews?

Ultimately, what I want to say is that whatever technologies you have used in the past for a project and are comfortable working with them in the future, you should list on your CV, as you never know who might see potential there, and even more so if it’s not directly related to the job post, as the truth is, that job posts are mostly for orientation, and either way you will learn much more on the job, regardless or not in contrast with what you know so far.

This was the case for me, as the job post was mostly HTML, CSS, JavaScript, and React, while on the first project at the new job I quickly found out that the stack of one of the projects consisted of Vue, GraphQL, TypeScript, SCSS and more; technologies I wasn’t really familiar with, so you mostly have to learn a lot, mostly in the beginning.

With this said, one of the more substantial qualities of an interviewee would be adaptability and the ability to learn rather fast, at least when talking web, as there are a lot of quickly emerging technologies that are getting traction quickly and are getting into projects’ stacks fast as well.

Template of skills needed to become a Software Engineer:

  • Knowledge of one or more programming language/s (Java, JavaScript, PHP, C#, Golang, Python, etc.)
  • Knowledge of at least a framework for the specific language (Java/Spring Boot, Python/Flask, PHP/Laravel, JavaScript/Node.js + Express, etc.)
  • Knowledge about common programming concepts related to OOP such as polymorphism, inheritance, etc.
  • Knowledge of programming paradigms (OOP, Functional, Procedural, Imperative, etc.)
  • Knowledge about Design & Development principles (DRY, KISS, SOLID, YAGNI, TDD, BDD, DDD, Separation of Concerns, etc.)
  • Fundamentals of testing your apps (Unit, Integration, Functional, E2E)
  • Knowledge of a DBMS (Database Management System) such as MySQL, PostgreSQL, MongoDB, CouchDB, DynamoDB, Firebase, Firestore, Redis, etc.
  • Knowledge of architectural patterns (MVC, Layered Pattern, Client-Server, Microservices Pattern)

I will try to debate and provide some insight for the aforementioned points in future articles, as there are specific features required for each of them, and certain things are actually required to be known before an interview, and the rest can be learned while working, as you don’t have to know every single minor detail, not now, and not on the job. You have to know a lot of things, that’s true, but you don’t have to know every single thing.

Final Words

In this article, I wanted to showcase my story of becoming a Software Engineer, and to give some advice to others who want to follow the same path and become Software Engineers or Developers. I tried to cover some of the more important aspects of things relevant to getting a position in software development/engineering, as well as a template which would make the process a lot easier, as it’s extremely similar to actual job posts, but it contains some extra things which as tagged as “Nice to haves” or “Big Plus”, so I considered it better to put them in the template, as I suggest you learn the extras as well; that’s very impactful, and decisive in who gets the job or not, or at least the interview.

Here you can check the “Developer Types” series:

Developer Types | The Web Developer

Developer Types | Mobile Applications Developer | Part I

If you want to learn more about my journey as a Freelancing Web Developer who started working at 17 be sure to check this story:

My Roadmap of becoming a Web Developer at 17

Did you find this article valuable?

Support Vlad Mihet by becoming a sponsor. Any amount is appreciated!