December 28, 2018
For consultants, team-switchers, freelancers, or beginners who don’t quite know where to start, this stack can be especially intimidating.
If you’re in this place, I would like to say me too. A huge part of my job every day is finding the right tools for the job, trying to figure out how to use them, and then joining a new project and starting all over again two months later. If you are in this place, I feel your pain.
But the more I dug into this topic, the more I worked on teams that were with people who did this well or didn’t do this so well, the more I became convinced that this isn’t just a technical problem. So let’s talk about some of the values we can cultivate as engineers that help us to survive in this field.
When I talk about being agile, I am talking about agile with a lowercase A. I’m not talking about a specific set of project management principles, but a mindset that you can develop over the course of your career.
I think it’s funny when people talk about WebAssembly or Blazor and say “and THEN what are JS devs gonna do” with a smirk— Sarah Drasner (@sarah_edo) October 4, 2018
For now, I’m going to define humility as the ability to say “I don’t know”. Because this might sound obvious to you, but the first step to learning something new is admitting that I don’t know it already.
For example, instead of admitting that we just aren’t familiar with Redux, we might say,
- “I can’t get this to work because Redux is just so complicated!”
- “This project would be easier if
hadn’t added Redux.”
- “Why should I use a tool like Redux if I can just build state management myself?”
Now, I’m not saying that questioning our technology choices is never a good idea. It’s always good to have a healthy amount of skepticism about adopting a new tool or technology that might not be necessary. But more often than not, statements like these are what we reach for to protect ourselves. Saying “I don’t know” feels vulnerable, especially for those of us who are consultants, freelancers, or engineers in less stable employment situations. We want to convince everyone around us that we are the right person for the job, which often involves demonstrating our extensive technical expertise.
But the truth is that in order to be the right person for the job, we have to have humility. We have to know where our weaknesses are so we know where we need to work to improve. As developers, humility should guide our decisions about design, about which libraries to rely on, and which resources to use. With humility, we can admit that perhaps someone else anticipated a problem we just haven’t seen yet, and learn from their experience.
In this ever-changing world, it takes courage to keep showing up again and again, and continuing to learn and change and adapt when it’s easier to stick with what you already know. It takes courage to admit the gaps in your knowledge, especially when we feel like the expectation is for us to be the expert. It takes courage to reframe the story from “This is just too hard” to “I haven’t figured this out yet, but I know I will”.
This post originally appeared on Medium
I'm a software engineer who loves to design things. After previous career as an elementary fine arts teacher, I love helping artists and career changers understand software. You should follow me on Twitter.