Navigating Common Mentorship Questions for Career Growth
Having mentored individuals with varying levels of experience, including university students, recent graduates, PhD candidates, and mid-level engineers, I have observed recurring patterns in the questions they ask and the challenges they face regarding their careers. In this write-up, I aim to address these questions and issues, reaching out to a broader audience to scale my mentoring efforts and ideas.
The common questions can be summarized as follows:
- Should I pursue an MSc or PhD or search for a job?
- Which languages, frameworks, or technologies should I prioritize learning?
- How can I keep up with the latest technology when there are multiple advancements happening simultaneously?
Let’s delve into each of these questions!
1. Should I pursue an academic degree (MSc or PhD) or enter the job market right after completing my education?
This is a valid question that I have encountered numerous times. Personally, I have pursued both simultaneously for a period of time. Looking back, I feel that this approach requires significant effort and entails unnecessary pressure if your goal is to have a successful career as a software engineer. The first step is to identify what you enjoy and what you aspire to achieve in life.
Advantages of an academic career include:
- The satisfaction of conducting research
- Access to continuous learning and an academic environment
- Opportunities for teaching and assisting students
However, there are downsides to pursuing an academic career:
- It may take longer to start earning a substantial income, potentially not until your 30s
- Academic environments present their own challenges, and your progress heavily depends on your advisor
- Changing jobs or locations can be more challenging
On the other hand, a professional career as a software engineer offers the following advantages:
- Early earning potential
- Flexibility to switch jobs, domains, or technologies if dissatisfied
- Opportunities for growth, such as becoming a tech lead, manager, or advancing in your career ladder
However, there are downsides to a professional career as well:
- Finding a satisfying job can be challenging
- Developing soft skills is crucial for growth, which is also important in academia but more critical in the professional realm
- Office politics can be difficult to navigate and manage
Consider these factors while also contemplating why you want to pursue an academic career. The reasons could include a desire for continuous learning, the option to become an instructor later in your career, having an alternative if you dislike the industry, or becoming a specialist in a specific field (e.g., distributed systems, security, machine learning, cloud computing). All of these reasons are valid. However, based on my 10+ years of experience, I have realized that focusing on one main area while maintaining a high-level understanding of other areas is valuable. As you progress, your domain expertise will become increasingly valuable. If you can balance your work with academic studies, I would encourage you to go for it, but be aware that it will be quite challenging.
2. Which languages, technologies, or frameworks should I learn?
For junior engineers, I recommend dedicating time to their favorite language during the early years of their careers. This approach helps maintain motivation, and after a few years, you will have a solid understanding of one language and the tech/frameworks associated with it.
Every year, numerous resources are published on the most popular programming languages. Select one of these languages and focus on it. Try to grasp the differences between other languages as well. Becoming comfortable with one language should suffice for your career. As you progress, it will be easier to switch languages and explore different areas. If you aspire to become an expert in a specific technology, language, or framework, that is entirely fine. There are many job opportunities out there that align with your skill set.
Additionally, there are generalist roles where the language/framework/technology is not crucial. These positions require the ability to quickly transition from one language to another, making you a technology-agnostic engineer. Such roles are more prevalent in big tech companies, and engineers with this versatility are highly valued. Proficiency in one language/framework essentially demonstrates your ability to learn others.
3. How can I keep up with the latest technology when there are numerous advancements happening simultaneously?
The short answer to this question is that you can’t keep up with everything. It is impossible to follow every technology or learn every new update for each language and framework. Even if you manage to do so, you will likely forget if you don’t use them regularly in your daily work or side projects.
Many individuals feel overwhelmed by the constant stream of updates they encounter through tech company blogs, LinkedIn, Twitter, or conferences. While it is great that technology is advancing rapidly and will continue to do so, this pace can lead to stress and anxiety among engineers. You may feel undervalued, lagging behind others, and worthless. However, this is not true. There are numerous companies that require engineers like you to contribute their skills. Additionally, learning a new technology or framework alone is not sufficient. As you progress in your career, you need to develop other skills. Soft skills are particularly critical, as they enable career advancement more than simply knowing a new framework.
I hope this write-up proves helpful to those seeking guidance. Feel free to share your thoughts in the comments section!