Map for career in tech and list of opportunities to explore for career growth, for experienced developers
Author Background: I am a developer and founder of Invide, an invite-only community of top developers. Since 2016, Invide grew from 0 to 15000 developers. I interviewed 1000s of developers 1 on 1 and learned from their diverse experiences. I have experience working in different domains such as startups, academic research, community building and as an independent developer/researcher.
Research Methodology: For this research, I compiled my knowledge base and also specifically crowdsourced diverse ideas & opportunities from technology leaders in different stages of their careers to build this map for developer career. Which I believe is the most accurate and updated career map on the internet for developers. This is relevant for you if programming is your primary skill and you want to utilize this skill to grow further in career. Some of the paths suggested here are unconventional and you may already knew about many others but might not have had an opportunity to explore. I am always eager to learn and listen to new experiences and perspectives.
This is a long(5000+ words) post so if you don't have time now, bookmark this and subscribe to this newsletter where I share one opportunity every week
And this is my research on career growth for developers
Table of contents
- The mid-life crisis and the "need for change"
- 5 levers for career growth
- The list of opportunities
- Picking the opportunities
- Getting started
- References and credits
The mid-life crisis and the "need for change"
How time flew so fast, Nitin wonders sometimes. Once, he was happy and full of hopes when he came to this hi-tech city from his hometown to join his current organization as a Software Engineer.
Not anymore! He hates office politics, he is tired of the traffic, he is tired of his boss and his colleagues, his plans most of the times fail, he misses not being there for the family when they need him, he can't stand the polluted air around him anymore, he doesn't feel good to ask for money from his flatmates at the end of month and the project that he is working on makes him feel worse: useless. His personal life has its challenges. And all of this uncertainty, worries about future, dissatisfaction, burning out and growing older brings him to the question
What am I doing with my life?
He starts questioning his life decisions and his capabilities. It is very clear that something needs to be changed. But what? Should he switch to another job or start improving himself; should he start a side project, a startup probably or start contributing to an open-source project; or should he wait and let the serendipity take its course...
Nitin is not alone in this situation, knowing something needs to be changed but what and how? It has happened to me and to every adult that I know, and it keeps happening almost every year. It is so common during certain age and stage of a career that it has been named: mid-life crisis. If you also feel this strong need to change, you are at the right place and this is probably a good sign as it will manifest in a growth mindset and will lead towards a better life.
“Your inner potential cannot develop without your willingness and conscious participation.” --Philip Arnold
With this post, I aim to bring an array of possibilities that can unlock your potential, some of them you might have ignored completely because of your busy days in fixing bugs and shipping new releases. These are highly personalized for developers and are practical to do.
Read through, understand and pick the opportunities best suited to you(not more than 3) at the moment and move forward confidently.
"Writing programs, learning about new technologies and tackling the day to day challenges, I was so busy in my routine life that I never really thought about the opportunities that were staring at me right there" -- Anonymous
If you have talked to your friends, peers, you might already have a few suggestions such as to start a business or to go for higher education, etc. Here we are going to expand the map of possibilities thoroughly and then get started with the journey towards big changes.
At the other end of mid-life crisis is a better you, a better life
5 levers of career growth
“Untapped potential is the difference between where a person is now and where he or she can be.” Bo Bennett
There are 5 aspects to pay attention to for a great career. Consider the career as a strategic game where you acquire more of these 5 powers to win
- Wealth - money, time, equity
- Personal Branding - reputation, subject authority, visibility
- Network - support, relationships, references, bonding
- Skills - knowledge, technical skills, soft skills, lateral skills
- Wisdom - insights, self-awareness
While you may give one area more priority than the other but you must not ignore any of them. We need to grow in all these areas to fully realize our potential. If you put career growth as a mathematical formula, it will be the product of all these powers, being exceptionally good in one area is great, being average in most of the areas is also good but being a 0 in any of the areas may paralyze your career growth.
Sometimes it is an overlooked opportunity in one of these areas only that breaks the barriers in our growth(e.g. a person in your network referring you a game-changing opportunity, a speaking opportunity that made you the subject matter expert that people look up to, etc.)
Here's the list of different opportunities that will impact at least one of these focus areas and will boost your career. Pick only 1-3 of these opportunities to work on at any point of time
"Start where you are, use what you have, do what you can"
- Arthur Ashe
The list of opportunities to unleash the growth
High Impact: Can bring huge change in one or more career growth areas(wealth, personal brand, network, skills, wisdom)
High Effort: Requires significant amount of time and resources for long term
We will explore opportunities in the top 3 categories, leaving the low impact, high effort opportunities out of the scope.
Bucket#1: High Impact, Low Effort
1. Write/Record a tutorial
Personal Branding, Skills, Network, Wisdom
Explaining a concept to others is a great way to solidify your learning and it also improves your writing/speaking skills. If you share your learnings with others via social media or your blog or youtube, this can significantly help you build your brand and authority in the subject. Apart from all these visible benefits, this process of creating a tutorial leads to increased self-awareness and insights about the topic.
To an employer/client, this will make you stand out. This approach also has chances of becoming a good side income over time if you can garner decent traffic on your tutorials.
- Amit Agarwal shared tonnes of tutorials on his blog Digital Inspiration and became India's most popular blogger
- Hitesh Choudhary has made a great personal brand as well as generated income by sharing tutorials on his youtube channel(500k+ subscribers)
- Choose a topic that you learned recently
- Create a tutorial on the subject
- Share it on your social media channels
Moving to next level:
- Do it more often e.g. move from publishing one article/video once in a while to every month and then every week...
- Improve your choice of topic e.g. figure out the topics that audience respond to most or a topic that has not been covered well before
- Improve your style and delivery
- Engage with people who comment on your posts
FAQ & Resources:
- What tools & platform can I use to write down my posts?
Notion, Wordpress, Medium, Google docs, Evernote, Google Keep, Simplenote, your blog, Github README
- Where do I share my tutorial?
Your twitter, LinkedIn, Reddit communities, youtube, Hackernews, blog, email newsletter, popular publication as a guest writer(little tough to execute but not impossible), etc.
- Where do I get a good affordable microphone for recording?
- Paid work opportunities for technical writing can be found on major job boards. For part-time gigs in technical writing, check out upwork, freelancer, etc.
- Earn reputation and personal branding by writing a tutorial for these reputed tech publications
2. Speak at a conference
Personal Branding, Network, Skills, Wisdom
Speaking at conferences is a great way to showcase your knowledge on a subject. It helps you create a deeper understanding of the subject. It improves your public speaking and presentation skills as well. Being a speaker, many people will get to know you and you will get connected to lots of people in a meaningful way.
- Remember Pranav Mistry? He rose to fame thanks to his talk on gesture recognition
- Write down the topics that you can share your knowledge on
- Listen to some tech speakers from past conferences for inspiration
- Write and record a brief intro of what you'd like to talk about
- Record yourself speaking on the topic(15-30mins)
- Explore tech conferences that match your interests
- Submit talk proposals to tech conferences
- Gather feedback from the audience
Moving to next level:
- Learn more about public speaking
- Get a mentor
FAQ & resources:
- Speak at Git Commit Show
3. Contribute to open-source
Personal Brand, Skills, Wisdom, Network
As a developer, what else can add to your brand better than a contribution to open source! The public code and a genuine effort to give back to the community is a reflection of your verifiable skills and your attitude. When your code is public, you'll push harder to make it the best of your work and this will improve your technical skills. As you will be collaborating with other open source contributors remotely, this is going to sharpen your collaboration and communication skills too.
- Linus Torvalds built the most Linux kernel. Does his success story needs any introduction!
- Pick an open-source project that you care about
- Find some good issues that you can contribute to
- Understand the issue and provide the solution
- Make the changes in code and create a pull request
- Keep engaging with the community
Moving to next level:
- Help other open-source contributors
- Start your open source project
FAQs & resources:
- Top open source projects: Mozilla, GNOME, Wikipedia, KDE, Apache, Python, Node.js, etc.
- How to contribute to open source
- Google Summer Of Code: A 3-month programming project for students with OSS organizations
- What can you do for Mozilla
- Open issues good for first-timers
- Mozilla Open Source Support provides $5,000 and $150,000 grant for selected open source projects
4. Launch a side project
Skills, Personal Branding, Wisdom, Wealth
Launching a website/app/tool as a side project is the best way to learn new technology, test your knowledge, test your idea for a business and a side income. Don't just leave it on your computer though, publish it, share it with your target users, learn from their feedback and improve it. If your side project gets popular, it might add a significant personal branding and a scope of earning from your project. Irrespective of the popularity of your side project, you will come out as a better understanding of your skills, insights about user behavior, understanding of what it takes to build a product from scratch and launch it in production and this makes your resume impressive to prospective employers.
- Jack Dorsey started a side project that eventually became twitter
- If you already have a side project sitting inside your computer's project folders, which you are still excited about then start again or start over. Otherwise, think of a problem that you want to solve for yourself or for your friend and the technology that you want to learn. Use this technology to solve the problem.
- Each day or week, dedicate some time to move the project forward
- Push the first shitty version to production
- Share it with your friends and gather feedback
Many times all it will take is a day or a week to launch your first version.
Moving to next level:
- Create a demo video or landing page for the project
- Document the project plan
- Set deadlines for the next couple of milestones
- Release new updates faster
- Start sharing progress publicly(don't be afraid to share bad news as well)
- Figure out a way to communicate with your users
- Figure out a way to reach out to new users
- Create a channel to gather quality feedback faster
- Involve more people(possibly friends) to contribute to the project
FAQ & resources:
- Showcase your side project at Git Commit Show
Bucket#2: High Impact, High Effort
5. Get a full-time remote job
Wealth, Skills, Wisdom, Network
Working on a full-time job allows you to work on a business/tech problem for a longer period which helps you build a better understanding of the specific problem or industry. As you work with your colleagues closely for a long period, this builds the strongest relationships that are going to be useful in your career. You improve upon your soft skills such as teamwork, leadership, collaboration, and communication.
When the job is remote, this gives you more peace and balance with your personal life as well. For many people who come from developing, nations have a chance of making wealth a lot more than the local market by working organizations in developed countries.
- Prepare a CV and a professional online profile(e.g. LinkedIn/PersonalWebsite) demonstrating your skills and work history
- Explore companies that hire remotely (If you're from India, thoroughly check if the company is open to working with people in IST timezone)
- Pick a list of companies that you'd want to work with
- Set up email alerts for new opportunities from these companies
- Sign up for Invide(recommended for Indian developers) and Stackoverflow(Recommended for people closer to US timezone) alerts for new remote job opportunities
Moving to next level:
- If you have never worked remotely before, learn about what it takes to work remotely(or you may join Invide accelerator program to learn & experience this)
- Dedicate time to nurture relationships with your remote team members
FAQs & resources:
6. Found a startup
Wealth, Skills, Network, Wisdom, Personal Brand
Founding startup is the fastest & the most lucrative way to accelerate growth in skills, network, wisdom, and personal brand. If it succeeds, it can generate a disproportionate income that no other career option can. But if it fails, it can negatively impact your wealth. For every success story of a startup, there are at least 10 other failure stories. This path demands a lot from an individual in terms of skills, time and resources which leads to accelerated learning but at the cost of work-life balance in most cases. The fate of a startup depends not just on an individual but tonnes of external factors which we may for the simplicity here call "the market". If you want to startup, usually starting with a "side project" is a great idea. Once you build a better understanding and feel confident, you can move on to working on a startup full-time. In the end, the decision is about your financial constraints and your conviction on pulling off the business plan.
- Larry Page and Sergey Brin founded a startup in 1998 when they were Ph.D. students. I don't remember its name though, I might need to Google it.
- There is no proven recipe for this
Note: Covering this specific topic is out of the scope of this article, because
- There is no reliable right/wrong way to do this
- This requires significant expertise in skills other than software engineering(e.g. business, industry-specific skills, etc.)
7. Get a Ph.D.
Skills, Personal Brand, Network, Wisdom, Wealth
Ph.D. is a great way to build a deeper understanding of a field(e.g. artificial intelligence) and contribute to the knowledge creation itself. During Ph.D., you get a chance to interact with very smart people and spread your research. Your research skills, teaching skills, and technical communication skills improve significantly.
This does require full-time dedication to research/study for up to 5-7 yrs. You get paid little to nothing during this period and the effort to reward ratio remains comparatively low. Getting a Ph.D. degree, however, opens door to new research opportunities in academia as well as better and higher-paying opportunities in tech companies.
Having said that, getting accepted for Ph.D., earning the degree and early years after Ph.D. is quite challenging than people usually expect it to be. Many factors make it hard to pursue a Ph.D., for instance, it takes longer time to gain a deeper understanding of your respective field, obtaining desirable and useful results are sometimes a matter of luck, peer-review and publication of a single research article can take from few months to even year.
As this can be highly rewarding and highly frustrating, it's better to do thorough research before going for this option and understanding if you're ready for it or not.
- James Gosling earned his Ph.D. from Carnegie Mellon University and later on joined Sun Microsystems and created the popular programming language Java
- Understand whether Ph.D. is for you or not
- Research available Ph.D. positions, universities
- Prepare for GRE and get a good score
- Apply for Ph.D.
- Get recommendation letters
- Complete the selection process
- Move to the university
- Stay alive till you get the Dr. in front of your name
Moving to next level:
- Build strong relationships with your colleagues, professors and industry people
FAQs & resources:
- Understand if Ph.D. is for you or not, a guide by Dr. Ronald, a CS Ph.D.
- Applying to Ph.D. programs
- In the end, academia is a business(a different kind of business) and Ph.D. is a job
- Some fellowships
- What is life like for PhDs in computer science
- A research on Ph.D. students
8. Start an independent research
Skills, Personal Brand, Wisdom, Wealth
Being an independent researcher(also termed as gentleman scientist or self-funded scientist) is an unconventional path that one can take. Work on your choice of science area, discover or invent something useful.
Being an independent researcher is intellectually stimulating and brings a sense of freedom as you can decide the direction of the research(as opposed to academic research where the direction is decided by the funding organizations).
Being a self-funded scientist is not an easy path though when you don't have an academic background(e.g. Ph.D.) or when your financial situation is not so good.
Doing research requires resources e.g. training of complex AI algorithms often requires hours/weeks of training on multiple GPU/TPUs.
There are no dedicated grants for independent researchers these days, only a few small fellowship programs. So to succeed, you will have to be excellent at not only research but at independent fund-raising as well. Independent research had been quite popular in the 19th century(most of the scientists you may have heard of e.g. Charles Darwin, Albert Einstein, etc. had been independent researchers).
Patents and crowd-funding are good tools to succeed in this path. Licensing and royalties are the most common way to make money for self-funded researchers. So having an understanding of how you can protect your IP rights is quite useful.
- Thomas Edison is one notable example of the successful independent researcher(without academia background) owning 1000s of patents
- In today's context, Stephen Wolfram is one successful independent researcher. He's popular for his product Mathematica.
- Find the research gaps
- Define your research area and prepare a research plan
- Achieve milestones for your research objectives
- Build your reputation via patents or presenting your research & knowledge via conference talks
Moving to next level:
- Prepare a plan to gather resources and funds to scale
- Network with people who can help you accelerate your research or fund your research
- Fund-raise and grow
FAQs & resources:
- Crowd-funding for scientific projects
- Introduction to intellectual property - Crash Course
- A blog post on independent research
- Blue skies - research without clear goals
- Royal Society is famous to fund independent researchers(e.g. Charles Babbage). Check out their website for funding options. It provides 1m pound funding as Theo Murphy Blue Skies award to independent researchers(Update: Discontinued).
- You may find some scholarships/grants for independent research on the DAAD website, check out their scholarship database. Filter out for your qualification level (for undergraduates there are few, keep checking)
- Present your breakthrough research at Git Commit Show
9. Publish a paper
Personal Brand, Skills
Research papers are reviewed by credible peers which is why authors of published research papers are considered to be credible. Your paper is a verifiable demonstration of your research capabilities and subject-matter expertise.
Having research articles in your CV will add to your branding like nothing else. No need to say, this makes you not only more desirable by organizations but also opens doors for opportunities in academia/research.
It is going to take as long as few months to years to put together a paper as it involves a lot of hard work in compiling literature review, obtaining and presenting desirable results, develop mathematical theory and generating novel insights, getting it peer-reviewed, addressing reviewers' comments and ultimate publication of the manuscript.
- If you haven't done any research yet, explore research papers in your interest area and find a research gap. Complete your research work.
- Compile your research in the form of a paper
- Get it reviewed from someone who has already published a research paper
- Explore the scientific journals(e.g. IEEE) that publish research on your research area
- Submit the research paper for review
- Be available to answer the questions and make the needed edits
Moving to next level:
- Present your research at different conferences
- Speak about it at science or tech conference
- Explore further research on the subject
FAQs & resources:
- List of computer science journals
- How to write a great research paper
- Some research paper templates for popular journals
- All computer science research papers
10. Join an organization as a board memberNote: I couldn't source enough information and success stories for this opportunity. I welcome your contribution. I will update once I have enough information on this. The core idea is to acquire equity and decision making power in a reputed or growing organization by joining as a board member e.g. joining a board of reputed non-profit org, acquiring equity in a startup, etc.
Bucket#3: Low Impact, Low Effort
- Finish a MOOC
- Accept more responsibilities at current job
- Finish a Bootcamp
- Participate in a contest/hackathon
- Learn about industry
- Read a book
- Learn a lateral skill(a skill other than programming)
- Volunteer for non-profit
- Actively help other developer grow via dev communities(e.g. stackoverflow, Invide, reddit r/programming, etc.)
- Mentor someone
- Improve soft skills
Note: We send one detailed analysis of one opportunity every week with the latest info, join our newsletter to keep updated
Picking the opportunities
Now you know the possibilities, how to pick the right set of opportunities to pursue?
Here are some tips
- Don't try to do everything at once(Duh?). Ideally, pick 1 opportunity from each category.
- Listen to your gut which opportunities excite you the most
- Start-Grow-Maintain principle: Because just starting won't add much value, you will need to grow and then invest time & resources in the maintenance as well to bring significant change. To understand what it takes to start working towards a goal, what it takes to grow and finally what maintenance is required for that particular goal. e.g. maintaining a startup will require significant efforts and will demand a full-time commitment. How much time or resources do you need to be in that position to dedicate your full time to startup?
- Understand what do you gain out of the selected opportunity(e.g. wealth, network, knowledge,...). If you pick "speaking at the conference" which will help you grow your branding, network, knowledge & wisdom, then you may want to reconsider picking "writing a tutorial" as another focus area, because this will also help you gain the same things and focusing on both goals at once might be tough.
- There are multiple right answers so don't feel bad if it feels like you're missing on things that you let go. Set a time-frame to experiment with your options and reevaluate after that time-frame. Repeat.
Most of these goals are not a one-time thing, they require continuous efforts and iterations to achieve significant impact. Here's how you navigate the changes effectively and without going crazy
- Decide your strategy for a particular goal
A. Be a rebellion: Make a bold decision to change drastically. Quit your current engagements and start focusing on your new goal for full-time.
B. Live a second life: While working on your current job, decide to dedicate some time(daily or weekly basis) to your new goal on the side.
For low effort goals, the recommended strategy is B(Living a second life). For high effort goals, I recommend to start with B only and later on when you get more confidence, move to A(being a rebellion).
- Now it is time to block calendar schedule to work on the selected goals(e.g. Goal#1 every Sun afternoon for 3 hrs)
- Ask yourself, can I break this big goal into smaller SMART(Specific, Measurable,Achievable, Relevant, Time-bound) goals? Read more about SMART goals here.
For a particular goal, if you can do this, wonderful. What to do when it is impractical to do so?
A. Gather more knowledge around the subject and talk to people who have achieved similar things
B. Replace goal-based approach with process-focused approach: Some tasks can be put simply as "get this done by XX Date"(e.g. make your resume by 31 Dec.) and some tasks are better put as "do this every XX Day/Time-interval"(e.g. post my learning about the subject on social media every day). If you find it tough to predict the time required to do something or fail to achieve goals on time(generally due to limited knowledge/expertise), in those cases second approach(process-focused) is more suitable. Follow the process of taking some actions consistently that can lead to the achievement of the goal.
- Take the first smallest action as soon as possible: When there's not a clear path, it is very easy to get stuck in a cycle of over-analysis. The trick to avoiding this unproductive thinking is to take the smallest action as soon as possible. e.g. Want to achieve "speak at the conference", update your social profiles with the tag "looking for speaking opportunities" or maybe record a video right now. That is the smallest action to build momentum.
- Keep up the momentum with the help of community or accountability partner: Now that you have started, you need to keep the momentum. Communities, where people are working towards the same goal, can help. The alternative could be to have an accountability partner who can help you track and move forward towards your goal.
“The will to win, the desire to succeed. The urge to reach your full potential – these are the keys that will unlock the door to personal excellence.” Confucius
This is a map for developer career and map is not the territory. With your help, we can make this map better. Share your tip and your success story with me
pradeep at invidelabs.com
References(resources that helped me write this article):
- How to pick career by WaitButWhy
- SMART goals by Mindtools
- Mindshift - a MOOC on breaking through obstacles to learning and discovering hidden potential
- Invide community members