How to Learn New Technologies and Still Get Your Work Done
or, can a developer really have it all?
Let me paint a quick picture for you: from where I’m sitting, I can see two developers crouched over laptops spending their day learning about GraphQL; a couple people scattered around the office are working on a data model and API for a new analytics tool they dreamed up; someone on the other side of the building is working his way through a book about Google’s TensorFlow, … the list could go on, but you get the idea.
I’m not trying to flaunt how cool my workplace is (well… okay, maybe just a smidge), but to illustrate that the people I work with at Crema tend to like trying out new things. New tools, new process ideas, new technologies — it seems like every day someone is bringing in a new way of doing things.
Which is an exciting and healthy environment to be in!
That being said, if you’re like me you have a bit of a love-hate relationship with change in the development space; yes, I’d love to spend all day getting excited about new technologies and trying out the [endless, daunting stream of] shiny new toys, but on the other hand I have work to do and only a limited amount of time to do it.
The world of web development is constantly evolving and churning. Staying up to date with the newest technologies can be hard if you spend most of your time doing work for clients. How do you decide when to use a new technology in a project? What new technology is worth familiarizing yourself with? How do you even find the time? These questions all boil down to one:
How do you balance the need to get real work done with the need to learn and try new things?
To answer this, here are the main things developers at Crema take into account:
Who: the client and what are they comfortable with
What: the technology that makes the most sense
When: the right work at the right time
The client you’re working with (the “who”)
After reading the above question, you might be saying to yourself, “tut tut, this article doesn’t apply to me, because I’m clever enough to learn new things by using them for reals” Well, you’re right. In the best case scenario, you can get work done while learning new things.
Some clients have a specific set of technologies they’re comfortable with and hew closely to; others are wide open to — or even prefer — using new stuff. Feel out this preference when meeting and planning with a client, and don’t make the assumption that they aren’t as interested as you are in using something new.
Depending on the client, you may have an opening to suggest a stack of technologies, and the way you present it to them is important — every new tool comes with a certain amount of risk and reward, and you should be open about both up front. Also, a client may be more open to using new tech if you open up about your curiosity and interest— remember, excitement is contagious.
Becoming knowledgeable in a new technology also affords you the confidence to influence the adoption of that technology in a client setting. “Hey, I’d love to use this new framework that I’ve been experimenting with, look what I made with it!” inspires much more confidence than “what if we use this new framework I heard of once?”
The project you’re working on (the “what”)
Obviously, the technology used has to be tailored to the details of the project at hand. Based on the desired feature set you might end up having to learn something new. In my experience this is more than likely. In such a fast-moving industry, the needs of your projects can be the only motivation you need to learn new things, and if you’re really lucky you may never have to take significant time outside of client work to update your skill set.
Of course, this depends on the kinds of projects and clients you work with, and you probably will have to learn new technologies on the side. Which leads us to the next point:
Time considerations (the “when”)
Using your time wisely can mean spending less time on client work in favor of familiarizing yourself with something new. Hopefully your employer sees the value in giving you time to explore new technologies; if they don’t, attempt to convince them. Sometimes the value of a new technology isn’t immediately apparent, especially if someone sees innovation as inherently opposed to productivity. You may have to help them bridge that gap.
If you do find yourself having to spend your personal time to learn new things, don’t despair! It can be done, you just have to find the motivation and plan your time well.
Some things are integral enough that you have a responsibility to ‘try before you buy’— that is, try them out on the side sufficiently before rolling them into client work. For example, some of the first times we tried React at Crema were on internal projects, in order to give us more elbow room to learn by trial-and-error. For something as massive as a new, opinionated app framework, its best to ‘kick the wheels’ for a while before getting on board; in contrast, for smaller elements like new third-party modules, language features, or developer tools, the change is more incremental and the possible setbacks to production are negligible.
There are other things to take into account, and every case is different. Your particular situation and learning style should inform your approach to staying up to date with new technology, but hopefully we’ve provided a good jumping-off point for you.
Originally posted on Ideas by Crema - Medium Feb 9, 2018