5 skills that are never out of fashion for Software Engineers
As a software engineer, you might be overwhelmed by new technologies, new design patterns, new architecture principles, new UI and API frameworks, new libraries, new way to implement software, new way to store the data... and the list goes on. There are few skills that are never out of fashion irrespective of what happens around you. Getting deeper understanding and practising these skills will make the career for Software engineers brighter.
1. Data Structures and Algorithms:
At the fundamental level, software programs, capture the data from various sources and present in a more readable and understandable format either for humans or for machines. If there is no data and there is nothing to process perhaps there is no need for a software program. Depending on the language you learnt, you will come across names like array, stack, queue, linked list, doubly linked list, hash tables, dictionary, graph, binary tree, heap, list, set, tuple. There is no easy way to master Data structures. Experiment with one and improve. Now let's look at algorithms. Algorithms are steps to solve a particular problem. If you want to go from Point A to B, you have multiple options. You can walk, run, cycle, go by a car, fly, take a ship… and why not crawl. Same thing with Algorithms. There will be more than one solution to the same problem. A software engineer is best placed to find a solution, that executes faster occupying less space by consuming less processing power. After all the Engineer as a word derived from ingeniare meaning “to create, generate, contrive, devise” and ingenium “cleverness”. When you combine all these “Create something that is simpler, better and cheaper”. Here is a good reference to Big O notation to understand the complexity of space and time.
2. Be interview ready:
Going to the workplace (pre and post-Covid) and doing the work that was allocated is a given expectation. Being interview ready goes beyond that. What really happens during the interview? You are fully attentive, you give your best possible answer, you are well dressed (except in Covid situation perhaps), you go well prepared, given a problem you come up with multiple options and solutions and finally you sell your ideas and yourself. All these principles can be followed in day to day office life as well.
- Be attentive in meetings (more so in remote work) and take notes
- Contribute at least one or two ideas, suggestions, views in every meeting
- When your boss comes up with a problem, provide a solution or options to solve the problem.
- Do not become a problem to your boss. Just like in the interview no company would recruit if they find that candidate is problematic in the interview process itself.
- Always attend office in a presentable manner with a dress code that is generally accepted. Some mild perfume will never hurt. Keeping aside skills, people should be willing to spend time sitting next to you.
- Just like solving problems when someone asks, come up with initiatives that will solve potential problems.
- Become a continuous learner: Just like you prepare before the interview, spend every day some dedicated time to learn new things.
3. Be collaborative:
When in danger, animals have only two options fight or flight. But humans have a third option, that is collaboration. It is amazing to experience 100s of vehicles zooming on busy Indian roads with almost no written rules (except the signals). Even in this chaos, the probability of having a scratch or dent on the vehicle is negligible (not zero though). This is the power of collaboration.
Cambridge definition of collaboration is the situation of two or more people working together to create or achieve the same thing. On the road, the goal is clear- “Reach the destination safely”. The biggest killer of collaboration is ego. There is a difference between being confident and being egoistic. “My view or solution is also great” shows confidence, “Only my view or solution is great” shows ego. Imagine, on the road, the driver in front of you suddenly stops moving because he/she whats to take rest or suddenly takes a turn without an indicator. Then the vehicles behind would stop or meet with an accident and create a deadlock situation. You encounter this kind of behaviour in the corporate world often. Lack of collaboration is the biggest drainer of energy and money. Signs of lack of collaboration are multiple meetings on the same topic, next steps on next steps, lack of participation from people in the meeting.
Being collaborative is actually easy. If you ever played football, as for as you do not care about who scores or who gets the credit for the goal, you will pass the ball without hesitation. At the end, team wins. As a thumb rule, if you do not care about who gets the credit, but focus on the ultimate goal of reaching the destination, you are collaborative. If the goal is clear, collaboration comes out automatically. Next time when you encounter an issue, look around and analyse, it is high probability that it is because of lack of collaboration between two people or two teams (assuming that communication and prioritization issues are already sorted out)
4. Presentation skills:
I feel Presentation skills is the most ignored of all. It is the ability to show data, information and concepts in a way your audience can understand. It is just not about how to make the presentation using PPT or Keynote.
“If you want me to give you a two-hour presentation, I am ready today. If you want only a five-minute speech, it will take me two weeks to prepare.” — Mark Twain
These are some tips to improve presentation skills.
- Understand your audience: Unlike in public speaking, in the corporate world, you will know your audience majority of the times. The needs of your peers, colleagues, manager, your group leader, CxO are very different. The patience level and acceptability of mistakes reduce as it goes up in the ladder. Getting to the point quickly, using data to support what you would like to convey, making it easy to understand with relevant analogy are generally seen as winning tactics
- Practice: Practicing at least once improves the success of the presentation by more than 80%. Analyse where you want to spend more time on, what words you would like to stress, what message you would like to convey, how do you want your audience to feel after the presentation. It also a good practice to record and listen to the practice sessions. Just a caution, too much of practice might end up looking like reading a script in the actual presentation.
- The dilemma with Data: It is very rare that you present some idea or concept without data. The easiest way to show the data is a table with rows and columns. But often this doesn't convey any message. Few quick tips:
If you want to show..
Growth or decline - line charts (eg: Stock prices, Sales data)
Comparison of few items- pie chart (eg: Share of revenues from products)
Grow or decline of multiple items and sub items- bar chart (eg: Sales from various products across regions)
Comparision of many scores-rador chart (spider web) (eg: Customer satisfaction scores for each product)
Hilight where the maximum activity-Heatmap (eg: Net new customers per product)
Individual data without comparison-Just show Numbers (eg: New product launch date)
5. Critical Thinking:
Critical thinking is the ability to think clearly and rationally on what to believe and what decisions you need to take. Some times our intuition helps us in taking decisions so that we will not end up reinventing the wheel. There is nothing wrong in it. Intuition makes the decision process easy because our brain is coded with millions of years of human survival experiences. It is alright to be intuitive for some trivial decisions like what to wear, what to eat in a restaurant or which movie to watch. But if you need to make a big investment decision, career move or take a call between Project A vs Project B critical thinking is necessary. Take this example. Sometime back, in my college whatsapp group someone shared a video of a person who did a flying magic and this was attributed to power of Yoga. The original video doesn't have any reference to magic word. The video was circulated by explaining what is Yoga and if you reach some stage in yoga what can we achieve (flying in the air in this case). Lets apply critical thinking here. 1. Can Yoga make the human body to float against the earth gravity? If so how is it possible? 2. Are the people that were seen in the video are the paid artists are real people? 3. Why the person is moving only in the vertical direction and can’t he fly like a bird in all directions? and finally, 4. If he can really fly, how did he reach the venue? Did he take a vehicle or he came flying?
Now let's look at how critical thinking can help a software engineer. These are some questions worth pondering every day.
- The requirement that I am working on, is it valuable? Are there better features?
- Does it make sense to give my time for the requirement?
- What kind of data am I processing? What is the source of the data? What should I do if the data is not available?
- Who are my users? What would they do if the application is not available?
- What kind of user experience do I need to give when the API is down?
- Is this the best data structure or algorithm? is there a better way to do it?
- If I am the user, would I love to use what I built?
- What can go wrong in the module that I am building?
- What is the root cause of the problem? Why my users are complaining?
Hope these tips are helpful. If you think few other skills are evergreen, please write in comments. Have a successful 2021.