Lessons I learned so far as a software engineer

Lessons I learned so far as a software engineer

The good, the bad, and the ugly

Irrespective of your job you will have to learn how to code to be competitive in near future. I am a software engineer having expertise in Javascript development for web/cross-platform mobile applications.
It's been a hell of a roller coaster ride so far. Full of learning, conviction, fear, oops moments, and a mix of good and bad vibes (on an hourly basis, yeah that's right 😁 ).
Here are my two cents on what I learned so far:

1- A good developer is a self-taught developer

Gone are the days when you need to have an excellent degree from one of the top schools out there to leave your marks on the surface of the planet (okay it's heavy I realized….).
You need to have an insatiable thirst for learning if you want to be exceptional as a software developer. You need to practice a lot...a lot of code, you need to get hands-on experience in order to gain the momentum.

There are schools where curriculum bind students to practice but it's not a hard requirement anymore. you can learn all relevant stuff online nowadays

Tip: Youtube is a good source to learn something out of the middle but if you want to learn something from end to end you need to compile a lot of different videos there which confuses a lot of us. There are other resources as well like Udemy, Pluralsight or Udacity (they even offer degrees and claim to have placement links with top-notch companies). But you should be ready to show some real commitment to your learning for sure!

2- Don't be afraid to break things (in the learning environment)

One of the biggest fears I had in beginning and I have seen in freshies is that they have a fear of breaking the system they are working with.

This fear my friend is the biggest hurdle between you and your ideal developer self. You need to break things, face crashes, handle exceptions, and fatal API responses in order to see the clear picture.
If you are following a tutorial (an average one), things work in a happy flow and you just feel good about it, but if things get bad there is a problem because you were only following the steps told by the instructor.

Rather you should understand how the things you are working with react to different situations, and how much capable these are.
A good way to understand any framework or library you are learning is to follow its documentation along with it, and try to make something of it.

Tip: Break things, get crashes and understand these. There are many forums where you can find help yourself, one of the famous is Stackoverflow.

3- Best practices are your friend

In the early days of development, I did not realize the importance of using certain patterns while developing software. Later on, I realized the power one has if proper design patterns are followed.

I was struggling while learning redux to use for data management with react applications before I learned about command design pattern. It helped me understand what redux store, reducer, and action terminologies are which look scary otherwise.
Most importantly, design patterns force development to follow a certain structure that makes the developer‘s life easier in long run.
You don’t need to refactor the code base each time when a certain feature is added or a minor modification is needed.

Tip:
Follow the best practices of language, library, framework, or utility you are using. You can find this in documentation too.

4- Pseudo first, syntax later

One of the most important things employers prioritize and look for in a candidate is the approach given a problem. Nobody is interested in how many years of experience you have got unless you prove the efficiency of your approach to problem-solving.

As the infinite monkey theorem states that a monkey hitting keys at random on a keyboard for an infinite amount of time will almost surely type any given text. You won't hire that monkey, would you? 😝

Tip: Try to solve different brain-teasing problems that would help you to improve your logic-building skills. You can find these online e.g HackerRank

5- Backtracking makes development fast

Another skill you should be quick at is to backtrack code. Backtracking helps you understand a workflow quicker than you would follow code in its original flow.
In reality, you are not (usually) assigned to build something from scratch very often. We have to work on the systems developed by people like us and in order to understand these systems we need to pick a single point where we can start to backtrack.

Tip:
There are various tools that help in different development environments. You can google these to better match yours.
As I am working with React & React Native (mostly), React Developer Tools and Redux DevTools chrome extensions are good tools that help to understand structure quickly. React Native Debugger is a great tool that helps debug a react native app.

6- Jot your findings down

In a software development career, you are learning something new on daily basis. I would reckon to jot your learning down on a weekly basis as it helps you to summarize your role better on the day you are updating your resume. You would surely have some heroic moments during the job that you won’t remember in a month or so.
By writing these down you would have plenty of things in front of you. This way, you can pick the best parts to discuss in an interview or to mention in a resume.

Above mentioned things were mostly related to learning, Now I get to some other stuff we need to deal with. After all, we are humans!

7- Beware of the Bad Employer

Here is another personal piece of advice I would say is important for ones self (and self esteem) is that, don’t under sell yourself if you are loyal to your work.
There are people who are good at micro management and would try their best to keep you at the lowest wages doesn’t matter if you are bringing fortunes to them or your work is better than the pay.
Along with this I would also mention there are good employers who care for their employees and try their best to maintain a culture for well being of all.

Tip: You should be very open while expressing your expectations from organization during hiring process. It is your right to know about company culture, incentives, growth criteria and other necessary stuff. And if someone is not delivering on these things, you better know what to do.

Last but not the least is…

8- You are Important

After all the things i have learnt this one is most important.
You are important than your work, don’t stress things out, these get better with time but it should not be on the cost of your health.
Have some fun in life. Spend time with family, friends or a side hustle what ever you want and what makes you feel relaxed.

This is what i feel and advise others to follow along. Thanks for reading a summary of my learning from a short career. If you liked it just clap the button to appreciate the stuff. Bless Up 🙂