Advice to my Younger Self as a Software Engineer

A piece of advice to my younger self — “Set all kinds of goals for what you want to achieve in life. No goal is too big with the right plan and vision.”

In the past 25 years, I had my fair share of success and failure. I find this journey memorable as it made me understand the importance of failure and success. Every success is close to my heart that constantly provides me a better understanding of team works and a sense of achievement but every failure provided me a new and innovative way to find extraordinary solutions.

Another quality that helped me reach where I am today is taking risks. I never feared obstacles and looked for challenging assignments instead of taking the first project that came my way. Intentionally stepping out of my comfort zone taught me advanced skills faster than my peers.

As I look back to over a decade ago, there are a few things, I wish I should or shouldn’t have done. Career advice that could have helped me avoid wrong decisions and move forward in a more focused and faster way. That is why I decided to pen down some pieces of advice I’d give my younger self to help those who have just started their professional journey in a software engineering job.

If I could go back, these are the five things I’d teach my younger self as Software Engineer:

1. Always ask questions

Asking questions as a professional clarifies your role, task and exhibits desirable leadership qualities. Even if you have a stupid question, a serious concern, or a simple idea. Always raise your voice and put your thoughts on the table. All you need to understand is that bringing your voice to the workplace is paramount.

In the eyes of your leader, asking questions will signify:

  • Willingness to Learn: Asking questions will help you transform your office hierarchy into an education system. You’ll be able to learn extraordinary things.
  • Desire to Engage: Asking questions and earnestly listening to the response shows that you value your peers’ insights and want to know their take on things before finalizing any result.
  • Persistent Inquisitiveness: Understanding how others think, work, and behave opens the door to inventive ideas and solutions.

For me, most of the time, asking relevant questions sparked innovation and helped me identify risks and challenges early.

If you are new to a software engineering job, you might not be aware of the problems experienced by your customers or team without being proactive. It’s easy to rely on usual patterns and handle a challenge from just your point of view. But when you engage with your superiors and your team members over a challenge, you can find various ways to solve that issue.

2. Be curious

Curiosity is a key behavior across all top-performing developers. Curiosity to understand the “why” and the “how” makes a developer a huge asset to any team. Most of the breakthrough discoveries and inventions throughout history are the result of curiosity.

In a software engineering job, Curiosity is very crucial as it helps leaders and their employees adapt to uncertain market conditions and external pressures. Always remember that knowing the business need is also imperative.

Curiosity is something that pushes us to think more deeply and rationally about decisions and come up with more creative solutions.

3. Apply minimalist approach to software engineering

Teaching Minimalism in software engineering is nearly impossible. But below is my humble and simple list of minimalism

a. The fastest code is the code that doesn’t run at all.

b. It is always better to run fewer SQL queries.

c. The number of complexities decreases when there are fewer features, tools, and frameworks.

d. Too much complexity will waste your time and money.

e. Don’t waste your time doing something useless.

f. Software engineers should always focus on avoiding complexity and code.

g. Building a productive team is difficult but crucial. Most engineers make the mistake of avoiding this process and rely on libraries, gems, new technology.

h. A software engineer should be able to articulate project needs, as well as routinely work with a number of other teams and departments at once.

i. Engineers must find alternatives to avoid technical debt.

j. A successful software engineer must pay attention to complex details such as analyzing and maintaining older code or developing strategic methodologies.

k. A software engineer should manage multiple projects at once.

4. Build your brand

In my experience, software engineers do not market themselves or focus on building their personal brands. This is because most of them consider branding as an unnecessary task. But, they need to realize that without personal branding, it becomes monumentally harder for software engineers to receive genuine recognition.

I believe that building a personal brand is the most important advice to my younger self as it can help anyone: from freelance developers to entrepreneurs to engineers on the job hunt. Everyone including software engineers need to stand out from the competition especially in the new normal scenario when jobs are scarce.

ways through which software engineers can build a personal brand:

a. Update your LinkedIn profile: Your LinkedIn profile should contain all the information in your resume and even more. The information should be displayed in a manner that tells the recruiter that you’re worth considering.

b. Post consistently: Start posting consistently on both LinkedIn and Twitter using your personal accounts. When you post regularly, your connections will expect and look forward to your content and this will lead to high engagement.

c. Spread passion about your work: Demonstrating passion is not one of the best predictors of an extremely good candidate; however, hiring managers to refer to this trait repeatedly in their interview feedback.

5. Select the right organization

People often run after the position and do not focus on the company. When applying for a job, you need to make sure to choose well and pick the company that is right for you.

It is important because you are going to provide your service and connect with that company — their vision and mission, and their values. If the company values and your values are aligned, the work that you are doing will be bringing you more fulfillment and happiness.

A company should invest in your professional development. It should have practices that focus on the growth of its employees such as small courses or lectures.

The right organization will have the right talented resources with high IQ too. The experienced engineers will help you read clean code and understand them deeply. Your organization should have a culture of senior colleagues teaching juniors to analyze innovative approaches and the reason behind technical decisions. Having experienced colleagues around you can significantly accelerate your learning time.

So, remember to do your research and try to go as deep as you can. Don’t get distracted by the company’s website or infrastructure. Research about their product, services, and clients. The more you know about the company, its mission, vision, culture the more you understand how it is going to impact your professional growth.

6. Become a domain expert

Domain expertise is very critical to the success of the project. The importance of gaining domain knowledge is rarely discussed, especially compared with the level of emphasis we put on improving technical skills. Becoming domain expertise gives meaning to your professional growth and guides you in making the right decisions in your career.

There are moments in the organization when only experts can save the day. This is why most companies are interested in hiring domain experts rather than generalists.

In the current scenario, domain experts with technical backgrounds are more in demand than pure technologists. Domain Experts have the advantage of domain knowledge, associated challenges, domain taxonomy, ecosystem, and trends. they have better understandings of different issues or scenarios. Domain experts can help deliver the application or software which is flexible and agile to help the company in improving the marketability of its products.

7. Build a customer mindset

Being near the customer remains a major competitive advantage for anyone within the engineering space, and therefore the people I’ve seen become the most successful over time are customer-centric instead of solution-centric. Solving customer problems, avoiding over-architecting, keeping things simple, and focusing on the opportunities and desires of the customer.

Engineers should invest within the customer’s goals and be committed to helping. Whether it’s finding a singular solution to a fancy problem, or just providing friendly and helpful service, this approach can facilitate your around short- and long-term customer success.

8. Be open for change — change role every 24–30 months to boost professional growth

It’s not so relevant if you solve the identical problem over and once more, e.g., building the identical style of application or the identical style of the website. Staying at an identical job for ages may make your resume look stagnant. Moving to a replacement company and a new position helps keep your skills fresh. Another big reason to alter positions is that you just typically learn the foremost in your first few years, changing jobs can develop a broader content.

Changing jobs, a minimum of once every three years can make your resume more attractive to employers for several reasons. It signifies that you just are willing to require new challenges and opportunities.

Don’t’ carry the Tech Baggage for a Single Project for more than 24–30 months.

9. Make your next move if the current organization is not a good fit

No one takes employment with the expectation that it’ll change into a disappointment. Once you hit the conclusion that your job has become a source of tension, things may look grim indeed.

If you discover you’ve got a nasty boss that may not respond to feedback, otherwise you are being stretched to burnout regularly. Don’t suffer from a foul employer, and don’t fear leaving quickly when things aren’t conducive. You must not put up with those that aren’t prepared to speculate in your growth.

10. Learn to be comfortable in an uncomfortable situation

“Move out of your comfort zone. You can only grow if you are willing to feel awkward and uncomfortable when you try something new.” — Brian Tracy

Playing safe can many times distract you from success. Learning to be comfortable in uncomfortable situations will help an individual realize his highest potential level. One can never grow and reach new heights if he stays away from the very first stair. Learning new skills and lessons will help you throughout your life.

One of the best to step out of the comfort zone is taking smart risks. It encourages you to develop advanced skills that help in the longer run. It will also provide you a greater sense of ownership and confidence in your work

11. Continuous Learning, Upskilling/Reskilling plan

The digital world is moving ahead at a very high pace. Consider it a very important career advice as it has become imperative for software engineers to not only learn about their technical domains and but also get deep knowledge of multiple other domains. For that, continuous learning, upskilling/reskilling plan is the best way. When an individual is certified in various technical disciplines, he can better understand the issue and customer requirements.

Continuous learning and certifications can help engineers showcase their competency, commitment to the profession, and build expertise in their professional subject area. Further, Certification training and continuation topics are often refined regularly to ensure that anyone practicing in the field stays abreast of the most recent trends and developments.

12. Computing and Software Engineering is Easy, but people are tough

It is of utmost importance for software engineers to know and understand the social aspects of their work in order to be successful. Oftentimes, engineers of people don’t realize the value of understanding the social aspect and later it somehow limits their career.

One of the biggest reasons behind this is that many times, we have to work with other individuals or in a team where technical skills matter less but communication and collaboration matter more. That’s why it is crucial to not just focus on your technical skills but also interact and understand the people working around you.

13. Build your social fabric

The “Social Fabric” is that group or community that surrounds you and supports you. It can be your family, your colleagues, your church, or your neighbors. This is the community that is there for you when you need them. They are the social ties that bind us together, or not, depending on the combined values immersed in each thread and the ways they interact with each other.

The quality of the social fabric determines how effectively a person is able to structure its organizations of people to deliver inclusive, sustainable prosperity. The key to creating a stronger, cohesive social fabric is not in the creation of rigid, uncompromising values. It is through a conscious refresh and recharge of the cohesive values that underpin the social fabric.

14. Look for a mentor

The right mentoring relationship can be a powerful tool for professional growth — it can lead to a new job, a promotion, or even a better work-life balance.

The best way to find a mentor is to know your goals (both short and long-term). The more specific you are with your goals, the easier it will be to find the right mentor. One strategy to create effective, easily achievable goals is to work SMART: specific, measurable, achievable, relevant, and timebound.

The second best way is to be cognizant of your existing network. The more aware someone already is of your work and abilities, the more effective they will be at mentoring you. If someone isn’t aware of your work or you’ve never talked to them, look for a connection. Make sure the person you are thinking about also has the expertise you’re looking for.

15. Master’s degree in Technology Management

The computer and information technology jobs are expected to grow by 12 percent and add 546,200 new jobs. A Master’s in Information Technology can be a pivotal step to career advancement, especially if you have limited professional experience, want to change careers, or even if you’ve been in the industry for a while and want to get to the next level.

A Master’s degree can take your strategic thinking skills to the next level by gaining experience in systems thinking, business ethics, and organizational strategy. Additionally, it will help you earn a lifelong credential that showcases your expertise and dedication to the field, while also growing your professional network.

16. Apply the JOMO principle instead of FOMO

The fear of missing out, or FOMO is the idea that you might be missing out on a good time. It is the feeling of anxiety or regret that comes with hearing about an event and needing to be there in case you miss something. But the good news is that you can replace the fear of missing out with a healthier and happier version: The Joy Of Missing Out.

The joy of missing out teaches us the value of the right place and the right time. It doesn’t mean saying no to every social event or opportunity, rather it means knowing when to say yes or no.

17. Software Engineering Ethics

Software developers are an integral part of protecting our critical infrastructure. Their work is to write the algorithms that make a huge impact on people’s lives. Academic and professional societies are in a unique position to formulate ethical codes for software engineers, but they are not that impactful. Ethical guidelines for software engineers shouldn’t look like a sort of code or “be aware of” list. It should be more like “All software developers should educate themselves on programming bias and its potential harm, examine their plan and subsequent code for such bias, be able to explain how they dealt with these issues, be willing to subject their code to scrutiny, claim responsibility for flaws found in the code that might lead to bias, and address concerns brought up by oversight committees.”

18. Choose your Track: Technical or Product Management or People Management

There are so many different ways of thinking involved in solving the challenges of scaling a business. Software engineers who are lucky enough to be exposed to a wide variety of working environments are able to shape their thinking about the right track to pursue moving forward.

19. Be on top puzzle of motivation

To be on the top puzzle of motivation, a software engineer needs to be able to clearly picture how his daily work fits into the bigger picture, and if he wants to know the work they do is relevant.

The first step is to make a list of the reasons you want to accomplish the goal. This is why you need to ground yourself in your goal. Additionally, be prepared for temporary setbacks or sheer exhaustion, but do not take it to your heart and move ahead with full determination.

20. Spend time on software engineering patterns

a. Observability: It is a tooling or technical practice that enables engineering, and ops teams to debug their system diligently. It explores new patterns and properties that were perhaps not defined or identified in advance. Because code can behave differently in production (vs staging), it’s important to proactively observe what’s occurring in production as it impacts users. In order to perform true system Observability, you need to instrument your code to generate telemetry that aids in asking any new question.

b. Monitoring As Code: It is a practice that enables Ops teams to watch and comprehend different states of their system which is often done through predefined metrics, dashboard reports that are updated in real-time. The data feeding those dashboards is based on assembling a predefined set of metrics or logs that are important to you.

I hope you find these tips useful. Let me know which of this mentioned advice you would like to give to your younger self.

What would I learn in the next 18 months?

  1. Quantum Computing and Q#
  2. Decentralized Computing
  3. RUST
  4. Tensor Flow
  5. Snowflake
  6. Unity (for 3D Modelling, AR, VR, MR)
  7. 5G
  8. Look for Reverse Mentor

Summary

You may be thinking: Why does all this career advice matter? Isn’t it enough to keep my direct manager happy? Well, in larger companies, the answer is usually yes. But in start-ups, the answer is usually no. There are unaccountable challenges on the journey of success but when you move in the right direction from the beginning, it becomes easier to tackle these challenges and move faster than others.

I guarantee that this career advice to my younger self and to all young software engineers will pay off in the long run. Consider it as a career guide and make sure you remember these points while you pursue your dreams.

--

--

--

Thought Leader. Mentor. Ex-Microsoft. Digital Transformation and Cloud Transformation Visionary Vice President, Avanade Inc

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

Announcing Our $8.5M Seed Round

Setup a Print Server using Raspberry Pi & CUPS: Part 1

Traefik on Docker for Web Developers

Bing WordPress Plugin Indexes Content Immediately and How to use it?

Egghunter — Let the hunting begin

#01 — The start of it all.

Closing the (IoT) Loop with Control and Analytics (Software Stack @ Zenatix, Part-2)

How to fix Missing DLL files errors on Windows 10/8/7 PC

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Gaurav Agarwaal

Gaurav Agarwaal

Thought Leader. Mentor. Ex-Microsoft. Digital Transformation and Cloud Transformation Visionary Vice President, Avanade Inc

More from Medium

Practice makes perfect!

Best practice

Software Engineering Thoughts

Why You Should Consider a Software Engineering Career in 2022

Difference Between Software Engineering and Computer Science

Epic code by: Adam Tipton