According to a DELL survey from 2017, 85 percent of the jobs that will exist in 2030 haven't even been invented yet.
This may be a hard statistic to accept. But looking back, many traditional tech job roles such as project manager, business systems analyst, manual tester, database administrator/designer, and production support specialist (to name a few) have been on the decline. As traditional roles start to fade away, there isn’t as clear a distinction in software engineering roles and responsibilities as there was a few years ago. This blurring of roles can be disconcerting. Particularly if it goes against the training and education received by an individual, or, more importantly, against a belief system that was based on more traditional engineering experiences. It also raises the question - Where does this leave people who hold some of these traditional roles?
Before I allude to an answer, let me go over my personal evolution journey where I switched roles: sometimes by choice, sometimes due to lack of a choice. I’ve had a non-traditional computer science background. I majored in mechanical engineering but got a campus placement opportunity with a software consulting firm. I started out there as a Programmer Analyst writing database queries and stored procedures in the mid-2000s. Within a year I was a junior developer developing .net applications. When I moved cities due to family reasons, I joined Capital One as a Quality Engineer. Over the years here, I’ve been an Integrated Test Lead, a Test Automation Engineer, and with Capital One’s journey to cloud I was able to evolve into a DevOps Engineer. Currently I’m a Software Engineer leading application teams that build RESTful APIs, Kafka Components and perform data analysis.
I’ve worked in six different roles over the last fourteen years and I look forward to working in many more in the future. As I look back, some of the roles I worked in don’t exist anymore and leads me to think - What would have happened if I didn’t evolve? The answer probably manifested itself by now, if not here it is - It’s essential to reinvent yourself and evolve in your role not only to stay current with emerging technologies, but also to keep your job. In the future, software engineers will have to wear more hats and embrace continuous learning to stay relevant. New learning opportunities may seem exciting, but for some people, new technology can be daunting and seem complex to implement.
There have been challenges along my evolution journey. With every role change, I was having to prove myself over and over again in my new capacity. I’ve had to work on changing people’s perception of me and had to rebrand myself as a subject-matter expert (SME) in the new domain. That is a big part of the evolution journey. However, taking time to set-up a learning path to explore and adopt new technologies can help streamline the effort to prepare for jobs of the future. Here is a three step Plan - Learn - Implement Technique that has proven very useful to me over the course of my career. It can work for you too!
Step 1: PLAN
First and foremost it’s important to devise a Plan. Well begun is half done!
Cultivate your passion: Let passion be the driver on your journey of continuous learning. Let’s admit it, some days are definitely better than others. But what about those not-so-good days? What keeps you coming back day after day despite them? There’s a sense of "purpose" that comes with finding your niche. Find it and you’ll be able to discover what’s essential to being happy in your new role. Passion not only brings happiness to you, but also those who follow you. Be it solving unique challenges each day, delivering new products and features for end customers, or innovating novel ways to do mundane tasks - it's very important to understand your passion and nurture it.
If you’re someone who is drawn to writing code all day long it would make sense to invest your time in creating core frameworks and libraries that your peers can use. Now imagine if you were in a role where you hardly have time to write code. You may not feel engaged in such a role for an extended period of time. In some cases it may also limit your ability to think long term and to think beyond the moment as you will be looking for ways to get back to doing what you like.
Some engineers are going to be happiest designing or architecting solutions to address complex problems. Others will gravitate to creating automated solutions to repetitive operational tasks or even breaking down organizational silos by creating new communities of practice. Personally, I love problem solving and using technology as a means to find the right solution. In the course of my problem solving, I try to automate myself out of having to do it again. This keeps me from becoming a bottleneck and helps me find a new challenge to work on in the future.
Here are some additional resources that underscore the importance of this strategy:
- The Happy Secret to Better Work - A Reading List
- How To Find Passion in Your Work
- Don't Find Your Passion -- Cultivate It
Align goals strategically: Goal setting helps you make your plan actionable. Remember, it’s key to keep moving in the same direction as your organization to achieve successful role transformation. If your department has a chosen cloud provider, you might benefit from exploring learning resources and certifications related to that provider.
Defining goals certainly isn't a one-time thing, and like everything else, there might be speed bumps along the way that will cause you to course-correct. Therefore, it’s important to iterate over your goals while maintaining transparency around what you’re accomplishing. I usually start with my organization or team goals and use the S.M.A.R.T (Specific, Measurable, Attainable, Relevant and Timely) goal setting technique to derive an actionable plan for achieving results. I also research IT Certifications that are available and match my career interests and goals.
Here are some additional resources that underscore the importance of this:
Choose a favorable learning style: Explore a learning style or resource type that you find motivating. Be it books, online courses, workshops, video tutorials, podcasts or anything else - there are multiple options to choose from. When I look back to see what’s worked best for me, here is what I found.
- I prefer courses taught by a single instructor as opposed to multiple instructors, as it gives a continuity to my learning.
- I always find it helpful to read from a physical book rather than an e-book, as there is a greater chance I’ll get distracted while reading on my laptop or kindle.
- When it comes to hands-on practice, I like to do a combination of video tutorials and hands-on keyboard sessions when exploring new technologies.
- When researching issues I always use my phone for quick reads and finding high level solutions, I switch to my laptop for detailed research and troubleshooting later.
Once you gather information on your learning style, it’ll help you organize your resources accordingly. It doesn’t mean you need to limit yourself to these methods. You can still explore new ways to learn and add it to your list of favorable learning styles as you gain insight on what works best for you.
Here are some resources that might help you choose a preferred learning style:
Step 2: LEARN
Now that you’ve laid out a plan, it’s time to get started with your learning.
Self-directed learning: The ability to gain new knowledge is more valuable than the knowledge itself. With every role change, you may find yourself trying to change other peoples’ perception of you. You may have to rebrand yourself as an SME in the new field. This requires perseverance and grit!
With millions of tech articles, blog posts and online resources published each day, one could easily get overwhelmed and go into an analysis-paralysis mode trying to search for the “perfect” resources. A better approach is to pick resources that suit your learning style and stick with them from start to finish. Use self-discipline and target timelines to stay on track with your learning.
Without sufficient follow through, there is a greater risk of people giving up on their learning journey. And here is why: When people are trying to learn something new, they’re usually tinkering with behaviors that have become automatic, and changing those behaviors requires careful supervision. And when people exhaust their self-control they’re exhausting their mental ability to think creatively, to focus, and to persist in the face of frustration and failure. I usually ask for help from a friend, colleague, mentor, or even my spouse to keep me honest and stay the course with my learning goals.
Here are a few resources you can check out to not get overwhelmed:
Find a mentor(s): Seeking advice and feedback from more experienced peers who are already in the new role is invaluable. They can act as a sounding board for your ideas and can help you discover a new perspective. That’ll help you gain clarity about the new skill and work towards mastering it. It may be immensely comforting to talk to a mentor and ask - Hey, have you been through an xyz situation. How did you get through it?
Here is good advice on how to find a mentor and how not to find a mentor. You can have more than one mentor based on what you are looking to learn. I’ve always had mentors who were very supportive and believed in me throughout my career. The common trait being they always listened without judgement, criticism or interruption which helped me self-identify solutions to my problems as I talked it through with them.
Here are additional resources that can help you establish a successful mentoring relationship:
Attend networking events: Invest time in networking with people within and outside the company you work for. It’ll help you stay current with emerging technology trends. As a bonus, meeting new people will help you rebrand instantly in a new field and build up your confidence. Consider these options as a means to achieve strategic networking:
- Meetups: Meetups are a great way to explore local communities that meet on a regular basis to learn new skills, find support and pursue passions together. There are several technology oriented meetups dedicated to learning a new programming language or latest tools and technologies you can choose from. If there isn’t one already, you can try creating one to gather folks with similar learning interests.
- Lunch and Learns: Lunch and Learns or Brown Bag events are usually voluntary knowledge sharing sessions with a department or team where people come together to share their skills and expertise. It is relatively informal compared to structured training sessions and is best suited when you want to get a general overview before you decide to start to dive deeper into a particular domain.
- Online Webinars: Web based seminars a.k.a. webinars are exclusively targeted for online audience. In addition to being extremely easy and convenient to attend from anywhere, they have the added benefit of significant cost savings. As a result, it’s relatively easy to find free webinars you can attend.
- Tech Conferences: Technology conferences are a fool-proof way to learn and get inspired by new trends that are emerging in the tech industry. There are many benefits to attending at least one conference per year to help develop valuable connections, exchange groundbreaking ideas, share best practices, or learn new skills.
Check out your company policies or guidelines for attending or hosting such events. I try to engage in at least one networking event every quarter and usually mix and match the events based on what I’m exploring at work.
Step 3: IMPLEMENT
Once you’ve made good progress with your learning, take charge and implement for a long lasting career impact.
Get certified: Certifications are not always mandatory, but are a great way to establish your credibility for a newly acquired skill. Earning an IT certification can certainly help break into a field of your choice. Top IT certifications are available across multiple technology domains like cloud computing, cyber security, project management, networking, virtualization and machine learning.
As you start to prepare and train for your certification exam, leverage all the learning resources you’ve already gathered. It can be a combination of study guides and books, online training, interactive labs, online exam. Get familiar with the exam process and take practice tests in order to gain a general overview of the exam.
I’ve taken Developer certifications and DevOps certifications which helped me break into and succeed in my new role. I’m looking to explore Machine Learning certifications next year as I’ve developed a growing interest in this field.
Here are resources that can help you review and prepare for the latest certifications:
Do a side of desk project: Learning a new skill is not complete until you have used it to solve a real world problem and gone through the intricacies of applying everything you've learnt theoretically. List the top pain points you currently experience in your project or domain area. These translate naturally into a problem you can devise a solution for using your new skills.
I’ve had engineers on my team come up with suggestions on automating time consuming manual processes or even repetitive tasks that need to be performed to maintain the health of our systems. Another way we explore new use cases is by ideating over useful tools to test our systems earlier in the development lifecycle and enhancements that reduce our overall delivery time. We usually create a tool box within our team where engineers create such utilities and share them with other team members. Such projects are perfect examples to explore a new language and work at one’s own pace.
Here are resources that showcase how tech companies are encouraging engineers to innovate:
- Working on projects you actually care about
- Why should companies encourage side of desk projects
- Company Side Projects
Participate in hackathons: I've always considered hackathons as a way to break rules to make things better! The energy from the event usually increases the learning impact of the time spent innovating on ways to solve the problem at hand. If you are unable to take time for the full duration of a hackathon, don’t forget that you can often participate without competing. Hackathons often need volunteers, on site mentors, and judges.
Hackathons are not only for students, but also for mid-career engineers who are looking to refresh their skill-set and grow their network. Be on the lookout for hackathons organized within your company, city/ state or by external organizations and start building out a team to participate. If you don’t have a team, enroll yourself regardless and find a team at the event. If you are unable to find any hackathon nearby, feel free to organize one for your teams.
Here are a few resources to consider to find and get the most out of hackathons:
Last but not least, share your learnings!
Teaching others is a great way to enhance your knowledge and master your new skill. Be a mentor, volunteer or present at tech events, write a blog post to spread the knowledge. You never know when your story will inspire others to kick-off their role evolution journey.
As technology continues to evolve, new programming languages, software tools, and technologies will continue to become more intuitive and powerful. As the job market continues to adapt to these evolutions, so should software engineers. There has never been a better time to be a software engineer and there are exciting opportunities for all of us to evolve into diversified new roles in this golden age of computing!