Like many skilled professionals, software engineers rely heavily on the tools they use to ply their trade. In the same sense that woodworking is intimately tied to the skilled application of saws, chisels, clamps and squares, engineers must make use of a variety of tools and associated skills to make well-crafted code and polished products.
Every project is an opportunity to hone skills and develop a better understanding of their tools. Unlike many other professions, though, the tools that engineers use are continuously evolving — often at dizzying speeds.
Even very modern-seeming woodworking instruments have deceptively long lineages. The circular saw, for example, was first patented in the 18th century. The chisel, on the other hand, has had a relatively static design since 8000 B.C. In relation to that tradition, even long-standing staples of the software industry like the programming language SQL, which was introduced in 1974, or Python, which celebrated its 32nd birthday this February, seem very new.
For Audrey Li, a senior machine learning and robotics engineer who works at the crux of hardware and software at the autonomous vehicle company Cruise, diving into new projects and exploring new tools is a challenge that she relishes.
“My work sometimes requires us to quickly dive into different tech stacks and tools,” Li said. “Learning by taking on new challenges has been a painful but very rewarding experience for me.”
Read on to learn more about how Li and others manage those challenges and embrace various habits, routines and programs to grow their skills and stay abreast of an industry in constant motion.
Evidation Health helps users make personalized and accessible health improvements.
What habits or routines do you employ to develop your skills as an engineer?
I don’t think there is one method or solution to developing your skills. The key is to find an approach that you enjoy so you don’t get burnt out or fail to finish a project or training that you started.
What works best for me is to pick a subject or project that I know will be enjoyable and benefit not only my current role but also my growth as an engineer and professional. If you are assigned a new project or feature, it often requires developing new skills or learning a new subject. Take the time to incorporate those learnings into each day. Make sure to give yourself the space and time to be able to take that Udemy course or start that proof of concept that gives you the knowledge and confidence to apply what you learned to your stack or tool set.
If you are assigned a new project or feature, it often requires developing new skills or learning a new subject.”
My current company encourages me to take the time and resources that I need to learn and develop new skills and incorporate new tools into our pipeline. By supplying resources or allocating time, my company makes sure that I feel equipped and obtain the education that I need to feel confident.
What specific tools or programs have been especially helpful in your professional development?
All of them! In all seriousness, I think that depending on what point you are at in your career and what project you are working on, there are a plethora of tools available to help you on a personal and professional level.
Some of the tools and programs that have been the most useful for me include Udemy, LinkedIn Learning, virtual conferences, pair programming, shared workspace, proof of concepts for tools or projects that I am interested in, stretching myself to learn new languages and products, and reading internal documentation. I know the last part sounds boring, but you would be surprised how much the company actually knows about its own product.
These tools afforded me opportunities to lead some greenfield projects and work on critical proof of concepts. I am able to grow and learn with these tools, and now I have a fairly full toolbox that can be utilized at any time.
I think the key here is to know that you are not going to remember everything, but hopefully you will have built a foundation that some time later a “house” — in this case, a project or feature — can be built on.
What challenges have you encountered when growing your skills and knowledge? What advice do you have for others looking to avoid these pitfalls?
There are always going to be challenges. The question is whether you are going to allow those challenges to discourage you from staying current and growing, or if you are going to use them to encourage the growth and expansion of your knowledge base and tool sets. Make the best of any situation, no matter how difficult it may be.
Challenges that I have experienced include changing timelines, inconsistent direction of a product, prioritization conflicts, changing scopes and frequent changing of teams and products. So how did I deal with those challenges? At my core, I’m an engineer, and I have always been driven to figure things out even if they seem impossible or insurmountable. Experience also helps.
For individuals or teams who are experiencing the negative effects of moving too quickly or feeling overwhelmed and overloaded, make sure to get rest, create space to clear your mind and take the time you need to be as effective as possible. Be patient, stay humble and always show grace to others.
Cruise partnered with General Motors and Honda to build self-driving vehicles.
What habits or routines do you employ to develop your skills as an engineer?
I like to spend time learning about other engineering practices at work. There are a lot of sharing sessions at Cruise that provide opportunities for people to learn about product engineering, infrastructure, security practices, machine learning infrastructure and model development, robotics, autonomous vehicle development and operation that spans hardware and software.
This work sometimes requires us to quickly dive into different tech stacks and tools. Learning by taking on new challenges has been a painful but very rewarding experience for me.
What specific tools or programs have been especially helpful in your professional development?
Self-directed online learning has been especially helpful in my professional development. It’s easy to get high-quality, free and up-to-date content from YouTube, Massive Open Online Courses, Medium and other websites.
Self-directed online learning has been especially helpful in my professional development.”
I’ve found that coding boot camps are very helpful if you are new to the tech industry. I worked in market research and public relations before I switched to tech in 2016. Attending the MakerSquare boot camp helped me with engineering basics and interview preparation, and I got several offers within a couple of weeks after graduation.
What challenges have you encountered when growing your skills and knowledge? What advice do you have for others looking to avoid these pitfalls?
The most challenging part of staying ahead of the skills curve for me has always been trying to learn about things way outside of my comfort zone.
Two years ago, I was very frustrated about not being able to learn about machine learning and robotics at a deeper level when I transitioned from product engineering to AI. My mentor told me it might be more effective to amplify my strengths than to overcome my weaknesses. Looking back, I can’t express enough how much that mind shift has helped me.
My marketing and communication skills and side projects developing iOS apps have all prepared me to collaborate with others effectively, come up with product ideas and designs, and build tools to address different problems at work.