7 things I WISH I knew when I started coding

If you prefer to watch the video version of this article,

Have you ever wished you could go back in time with the knowledge that you have now?

Have you ever wandered how different your life trajectory might have been if you knew back then what you know now?

If you can talk to a younger version of yourself that is just about to embark on whatever journey you currently are on, would you do it, and if you did, do you think they would actually listen to you?

I bet alot of you resonate with these kinds of questions, I know atleast I do!

There is a ton of things I would love to tell my younger self just about to embark on his software engineering career journey

In this short read, I will share with you the top 7 things I wish I knew when I was starting out as a software engineer

I started my software career back in 2014. I was 20 at the time.

And when I look back at that ambitious younger version of myself who is just about to start his software career journey, I can’t help but think if only I could pass on some of the lessons that I have learnt along the way, I might be able to help him cut around some corners or even help him avoid some of the trivial mistakes that he’s about to make.

Tip #7: Start coding earlier

This is a big one for me.

I don’t think I started particularly late but I don’t think I started particularly early either

I wrote my first line of code in University, back in 2014 and I think I would have probably wanted to shift that date somewhere back to high school or even middle school, like some of the people I know. For a couple of reasons actually

First is that I really found myself in this analytical/ problem solving stuff and It would have been nice if I found that out earlier so that I could do more of what I enjoy earlier basically

Secondly, is that like any other skill, the more experience you have and the more hours you put in the better you will be at it so if I started earlier I probably would have been farther ahead by now

The general rule is that it takes 10,000 hours of doing anything till you can be considered an expert in it. and so the earlier you start the sooner you begin stacking those hours.

Tip #6: Progress over Perfection

I still fall into the Perfectionism trap often to this day although to be completely honest, I think I have gotten alot better at focusing more on the process of what I like to call messy learning then but I would say Im still a work in progress

I used and sometimes still think that I need to be 100% prepared before I can jump into doing stuff

So let;s say I am preparing a meal and I am following a particular recipe, I would often find myself having to read through the entire recipe to make sure I understand it thoroughly before actually starting to make the dish

Or in a more real life career situation

If I were to do a project in Javascript and I do not know Javascript, then I would wait till I finish an entire course on Javascript and make sure I understand it properly before starting the project and well figuring it as I go rather than just jumping it and figuring it along the way.

And this in my opinion is not the best approach!

There is a story about a pottery class who’s teacher divided it into two halves. One half was told to spend the entire course studying pottery, planning, desigining and trying to create the best pot.

While the other half was told that they would be graded based on the numbers of pots they will finish, and so the first half jumped into research, planning and design trying to create this perfect pot while the second half literally started to grab fistfulls of clays to pump out as much pots as possible.

At the end of the class, both halves were invited to enter their most perfect pot into the competition. And to everyone’s surprise all the best pots came from the half that was told to produce as much pots as possible.

like in any field ever experience is King! It is always better to just jump in and figure it out as you go. You will learn faster and you will retain information better

Following that same logic in coding, It is much more beneficial to just start working on a project once you have the basics and figure out the specifics as you go.

To get good at coding, you need to code more, not study more

Tip #5: Drop out of University

This one is a tricky one.

Lets me address it this way,

Do I think that it was necessary for me to go to university to become a Software Engineer? Absolutely not

Do I think that for me specifically, it was a waste of time, money and effort? Yes

If I had the opportunity to do it again, would I drop out of college? Probably yes but I will still get some other less work load or shorter duration degree

And the only reason I would have gone through that ridiculous amount of unjustified efforts is that back then I was in Egypt.

My goal at the time was to relocate to Europe but the Egyptian emigration required that I hold some form of a college degree to be able to relocate so it was really a no brainer for me.

However If I actually didn’t go to University, I would have invested the time that I gained back in working, coding and levelling up my technical skills, which I sort of did alongside university anyways.

I actually think this is probably why I managed to land the software engineering role that I wanted right after university

But honestly, I would have preferred to have more time to prepare and code without having to worry about the never ending pile of deadlines, projects, and all the classes that I had to attend.

Like I said before and will keep on saying forever, Experience is King! and what truly makes you good at coding is the amount of hours you spend coding and nothing else.

Much of what I studied in my Engineering degree was deemed outdated the moment I stepped foot outside of the university.

To be completely fair though, there is some overlap between what I studied in University and what I currently need as a software engineer, but everything that I needed from these overlapping materials, I only truly internalised when I learnt on the job.

You barely retain anything from content overload, which seems to be a recurring theme for university curriculums, but you do retain what you get your hands dirty with.

Okay I am done bashing our educational systems for now.

Going to University might actually be good for u in two particular cases:

Case 1: You are like me and come from a country where emigration is complicated and relocation is something you want.

Case 2: And this is person specific, if you are the kind of person that needs the structure and timetables that University’s curriculums enforce then by all means University might be good for you

Personally for me that was not the case, the structure and the deadlines were too restricting and I knew what I wanted to do, and had the motivation to do it but couldn’t find the time.

Tip #4: Believe in myself more

This is one tip that I carried with me through out this journey and it is something that I somewhat still personally struggle with to this day.

I sometimes fall into the trap of thinking that what if I am not smart enough or that the people that I work are way smarter than I am.

This apparently is a common thing in this field and is called impostor syndrome, trust me I googled it.

It is honestly very surprising to me that even 6 years in, I still think that way sometimes.

Back when I was starting out, I used to shy away from applying to certain roles because I did not think that I had what it takes to be successful in these roles and would be very intimidated by them.

And this came in phases, I would go through a phase when I would feel like I truly didn’t belong or that I will be exposed for not having what it takes through a bug that can’t be repaired or something

And on the other hand, I would go through other phases, when I would feel like I am the best at this and that I am truly good at it, especially after I realise that I have pushed thousands of lines of codes that have a significant impact on the business or when clients compliment the feature that I worked on for example, and then that cycle would repeat itself again and again and again

And what I realised is that this never ending cycle of doubt and confidence is all part of the process and everyone goes through that, even if not everyone talks about it

I have put on a lot of work in improving my confidence in this particular area since I first started and I have improved alot but I truly wish I took more risks and put myself a little bit more out there when I was first starting out because rejection is not necessarily a bad thing

Sometimes you win, sometimes you learn.

Tip #3: Company Culture and Future Projects matter

You might think this is a very trivial tip, ofcourse you should only accept positions where you like the company culture and the projects that you will be working on

Why am I even bringing this up?

And I am here to tell you, as someone who has fell into this trap so many times,

once there is a significantly higher paying offer on the table and you start thinking and fantasising about all the possibilities of what you can do and all the things you can buy with that extra money, these morals and ideals that you hold so high to yourself will come crashing down!

Then you will convince yourself and rationalise that this is definitely a good opportunity for you even though you don’t like the culture and the projects you will be working on and even though these are literally almost exclusively the only factors that matter when accepting an offer, it will still be good for you because it will “CHALLENGE” you and get you out of your comfort zone.

Now I know I am over generalising here, some folks still won’t budge if they are not fully sold on company culture and future work, but I am not one of those folks or atleast I wasn’t which is I why I wish someone told me that its not worth it.

Its not worth it to work at a place where you will be unhappy with the environment you work in and the kind of projects you work on because these are literally the factors you need if you want to grow and want to unleash your creativity

and you can’t buy these things with that extra money you’ll get.

Tip #2: Tone down the burning ambition fire

This year has forced me, like I suspect is the case with many folks, to dive into myself and to face my demons, and I think if there is one thing I can really take out of this surreal experience is a better understanding of myself

I, as a person, thrive when I am always working towards goals and I don’t find fulfilment in idle time.

And consequently this burning ambition fire, sometimes more than often made me over stretch myself trying to achieve these goals.

So what would happen is that I would go through phases of strong progress and very quick improvement followed by burn out and almost no progress. Then a while later, that burning ambition fire would be re ignited and burn very strongly pushing me forward very rapidly until it burns out and the process restarts again

It took me quite some time to internalise what its a marathon not a sprint meant, and I am glad I was able to find some kind of balance.

It is better to have this ambition fire burning but not all the way

That way you don’t burn yourself itself out and you are able to progress while enjoying what you do.

There is no point in working 16 hour days. Once it hits 6 pm, close the laptop and get out, meet friends, watch something, go run do whatever it is that makes you unwind.

Tip #1: Fall in love with the process

This is not only a software engineering specific advice, but I think it applies to every endaevour in life really.

I wish I knew this advice back then because it would have truly improved the quality of my life.

In the beginning of my career, I treated being a software engineer like a job that I have to do and not until maybe half way through my career that I started to look at it from a different angle.

If I could go back in time, I would tell myself to love this process, it will bring me much more fulfilment if I do.

I will get better faster which will then make me more drawn to love the process even more, and this will make me better at it and so on.

And I will end up getting in to this upward spiral of positive reinforcement and growth

Loving this process also means accepting the rejections, the downs, and the frustrations as much as accepting the successes and the rewards.

The only thing that I need to do is to just show up and get shit done and I will eventually be where I want to be!

Hope you enjoyed this read! Stay tuned for the next article ;)!

Software Engineer travelling the world, high on coffee.