Five Lessons After Five Years as a Software Engineer
Looking back at the past five years, there are some lessons that I’ve found vital in growing myself as a software engineer. I wanted to share my experience in hope that this will help someone who is beginning their career as a software engineer as well.
Following are the five lessons that helped me grow as a software engineer.
- Goals
- Learn to learn
- Keep the tool-set sharp and relevant
- Work under a great mentor and gain experience
- Manage your personal finances
Let us go through each item on the list. I don’t intend to go into details on each point bombarding you with details. Rather, I will give you some pointers so that you can do your own research.
Set your Goals
You should have a purpose, an end goal to start with. This will keep you on course. Otherwise you will be wandering here and there without any true purpose or reasoning for why you are doing all this. Your goals can change as your perception about the world change. But at any given time, you should have a set of goals in your life. This will help you make the rational decisions when it comes to all the lessons I’m gonna mention and to be a happy and content person.
Learn to learn
You won’t be able to learn everything through your formal education to achieve your end goal. Time you can spend on learning is limited. Time is a limited resource. You have to prioritize, and pick and choose things to learn and not to learn. Hence you have to learn to learn.
Most important aspect of learning is having the motivation to learn something new. A purpose that backs the learning outcome. Motivational factors can be different from person to person, but the key is to find yours. It would be best if you can identify why you should learn it and how it affects you to achieve your purpose of life. Learning things for the sake of learning is a gamble, few will succeed and most will fail.
When learning you will go through planned and unplanned learning opportunities. Planned learning is where you have assigned a specific time for learning and engage in improving your knowledge.
Unplanned learning is where you will stumble upon something new and you dig deep on the subject and learn something new out of it. If you want to improve yourself you have to do both planned and unplanned learning, even after getting out of the university. There can be instances where you are debugging the code you have written and you observe a strange behavior. If you don’t find out the exact reason for that, you are skipping an unplanned learning opportunity. You will only gain some experience on the behavior but not the proper reason.
Following are some pointers on the subject
- Identify what you need to learn by answering yourself why you want to learn it, and what you gain out of it.
- Concentrate on the core concepts when learning
- Try to learn ins and out of what you are currently working on
- Expand your knowledge without restricting your self to a particular subject area. More diverse the more valuable you will be.
- Learn from the industry gurus. Read blogs, books, listen to talks done by them. Learn from another’s experiences.
- Keep aside a time for learning (planned learning).
- Manage your time and establish work routines to avoid procrastination.
Keep the tool-set sharp and relevant
Think of a carpenter, if he doesn’t have the proper tool set he wouldn’t be able to do a proper job. Same applies to a software engineer or any other professional as well.
Lets have a look at a set of tools that a software engineer should have in their tool set.
- IDE - you should have an IDE that you are familiar with. Learn the IDE shortcut keys. Learn how you can do refactoring with it. You should have these shortcuts engraved into your muscle memory.
- Terminal - you should be able to familiarize yourself to using a shell (on Linux machines you can use bash). GUI tools are less productive compared to a shell. By learning a small subset of shell commands and combining them we can get more done with less. You can put the commands in a script file and use it later as well. Possibilities are endless to improve your productivity.
For instance say you want to create hundred directories with names d1 to d100. Here’s a bash script to do the job.
$ for i in {1…100} do; mkdir d${i}; done
Think of the steps you have to go through to do it with a GUI.
- Have a primary language - you should have a programming language that you know inside out. Having a sound knowledge on data structure implementations, programming concepts and paradigms in that language will help you. I’m not saying you should learn only one programming language. You will definitely come across more that one programming language in your career.
- Data structures - In most cases, nobody will ask you about the data structures, unless you are going for an interview. But you will be using maps, lists, sets, queues etc in your programs. You should know when to use what. Some idea on the time and space complexity (Big-O notations) of those data structures, is a must.
Following are some good books that I would recommend for improving your skill set.
Work under a great mentor and gain experience
In any kind of discipline you need good guidance to excel in that field. Same goes with software engineering as well.
In my opinion, you should work under a good mentor for at least two years. They will set you up for the troubled waters you have to wade through in the coming years. If you feel like you are not getting the guidance you need from your mentor you have to be clever and get yourself a great mentor. It doesn’t have to be a formal assignment. There is always something that you can learn from a mentor. Your mentor can be your boss, a senior member in the company, or someone outside the company.
When you select a work place try to get into a place where people have the learning attitude and avoids shortcuts to success. At least in the initial years of your career give priority to learn things rather than to follow trends. Play smart keeping you end goal in mind.
Gain experience
In the first few years (3–4 years) the most important factor should be the work exposure and the experience you gain. I’ve seen people take there career decisions solely based on the salary or the perks they get. Although, this can be a factor. If you gain industry experience, you’ll be able to cover up those initial years in no time.
In some situations, in the initial years you’ll be earning less than your friends. Remember when the time comes you will get your rewards. Earning money is a different game that you have to tackle separately. So that’s the final lesson, personal finance!
Manage your personal finances
Even though this is the last point on the list, that doesn’t mean this is the least important item. Surprisingly, a very few will get proper personal financing related education from school or from their parents. Money management is a topic people usually try to avoid.
If you don’t manage your finances properly that affects all the other lessons mentioned above. If you are tight on a budget you’ll try to earn a quick buck rather than hone your skills for the long run. All in all, if you are living from paycheck to paycheck your decision making will get affected. So we must learn to manage our personal finances.
Managing personal finances doesn’t mean collecting money for the sake of it. You should give a purpose for the money you earn. For instance If you like to travel the world what’s the purpose of collecting loads of money if you haven’t traveled the world when you are young and able.
Likewise, you will have different goals in your life. List them down and prioritize. Have a sub goal to get enough financing within a particular period by saving monthly. In essence, you will have a purpose for your savings. And your priorities will change and so will your savings. Always make the rational decision.
By the way, remember to set aside a part of your money for
- Emergency - Savings that can make you stay afloat for at least two to three months without a job.
- Giving - For helping others, charity etc. Otherwise you’ll become a cheapskate! Trust me on this! :) By the way this doesn’t have to be a lot.
Following are some pointers that will get you started on the subject.
- Envelop method - you can follow this using a spreadsheet.
- YNAB- its a personal budgeting method. Learn it!
- Save at least 10% of the salary for one of your investment plans
Following are some good books on the subject.
- YNAB book by Jesse Mecham - the book that explains the YNAB principles in detail.
- Richest man in Babylon by George S. Clason
- Think and Grow Rich by Napoleon Hill
- Rich Dad Poor Dad - One of the famous books on becoming financially free. I don’t agree with all the things Kiyosaki states. Take his advice with a grain of salt. Keep your morality intact.
All the above lessons revolves around one thing, your purpose of life. Try to align all the lessons with your purpose, your end goal!
So that’s my five lessons. Those five lessons played a major role in the first five years of my career. Hope this will help yours too.
Cheers!
Written by Asitha Nanayakkara