I’ve had a few thoughts running through my head lately around the “growth mindset” that I often see/experience as a developer.
More specifically, I’m concerned that too many of us are experiencing more of a “growth pressure”; that the desire to learn and continually improve ourselves has morphed into an expectation or a mindset that we must be better.
Rather than thinking “This is so interesting, I’d love to learn more” the thinking shifts to “I have to learn this new thing or I’ll be left behind.”
I think sometimes (sometimes a lot of the time) we get too carried away with finding the “right” or “best” way of doing something. I think we get way too caught up in thinking we have to be on the cutting edge of our field to be relevant or proficient. I see developers that are so concerned with choosing the “best” combination of tools/libraries/patterns at the outset of a project that they never really start.
Why is this the case? I’m not really sure.
Maybe it’s the current social media climate we’re in where everyone seems to be non-stop sharing about the latest and greatest (myself included).
Maybe it’s the prevalence of technical interviews the prioritize hyper-specific computer science skills rather than a holistic survey of the individual and their ability to solve relevant problems.
Maybe it’s a slowly increasing acceptance of non-traditional technical backgrounds that has created a dichotomy between those with traditional degrees and those they are coming from different backgrounds and are concerned they don’t measure up.
It’s likely a combination of factors at play, but whatever the answer may be, in my experience I certainly feel their is a climate where a person’s natural curiosity and problem solving are being placed at odds with the pressure to be/feel/think/build the “correct” thing in the eyes of those around them.
Wanting to be aware of, and utilize, the right tools for the job is not a bad thing. In any field, the tools of the trade are an essential part of the pursuit of mastery of that craft. But it’s a moving target; particularly in software. The tools/libraries/patterns are changing on almost a daily basis.
It’s never ending. It’s exhausting. It’s pretty much an impossible task.
There’s just no way to always be at the forefront of everything. And personally, I just don’t think you need to be.
The opinion of one person does not mean it’s correct, or correct in all situations.
The new tool from Big Company is not necessarily useful to you.
The latest and greatest MV-WTF pattern might solve all the problems in the world, but it’s unlikely you’ll be able to immediately migrate your whole app.
There is no perfect solution for all problems. A new tool does not make the existing tool inherently bad/wrong. You do not need to learn the new shiny thing immediately after it goes into alpha. You don’t need to refactor your whole codebase if a new solution is released.
Yes, we want to learn and adapt, but at the end of the day the goal is usually to build something that works; not fit every new tool/pattern into a codebase.
When you discover something that piques your interest, try and not put pressure on yourself to think you have to learn it as soon as possible. You’re in this for the long haul. If you are committed to continuous gradual improvement, then you can afford to push the new shiny thing to next week, or next month.
Cut yourself some slack
Keep an open mind
Take breaks
Rest
Have fun
You don’t need to do it all or know it all 😀