Heads up... You're reading this book for free, with parts of this chapter shown beyond this point astext.
You can unlock the rest of this book, and our entire catalogue of books and videos, with a raywenderlich.com Professional subscription.
Ash is a compassionate software developer from Canada. After working at Artsy for seven years, he now works for Shopify. His background is originally in native iOS apps, but nowadays he builds a lot of software in React Native. He has published a number of books, built many apps, and is a prolific contributor to open source software. On his blog, he writes about a range of topics, from interesting programming to explorations of analogue music and the humanities.
Connect with Ash
You’re a renaissance man. You’ve become an expert in many different technologies, defying the traditionally held idea that a developer should master a single technology. Was this an intentional strategy on your part?
Would you recommend that beginning developers plan to cultivate multi-focal expertise?
For beginners, I recommend focusing on a single technology. The problem is that people continue to focus on one thing for a very long time. Once they have achieved a certain level of depth, developers should start to branch out. There’s no right answer about when it’s best to branch out, but I think most developers wait too long. The longer you wait to branch out, the more difficult it is to learn new technologies. For beginners, learning how to program is already so overwhelming that focusing on a specific language or a specific framework is a good idea. Once they’re feeling confident, I like to encourage them to branch out into related technologies. For example, if they’ve learned a lot of Swift, they could learn Objective-C. It doesn’t need to be something entirely different. They don’t need to jump from Swift to some unrelated language, like Scala, or Ruby even. Start with something related to what they already know.
Is there any factor developers seeking to branch out should consider when they’re trying to choose a new technology to learn? How might the answer be different or similar for junior and senior developers?
It depends on what their motivation is. If they want to learn something purely because they enjoy learning and it’s a hobby, then they should pick whatever is the most appealing to them. If they’re working in a team, then they should ask themselves, “What does the team need me to learn?” Ideally, you’d list what the team needs and what you want, and then find out where they overlap. That’s where you should focus your attention.
- Operating Manual for Spaceship Earth | Buckminster Fuller
- The Pessimists Archive podcast | Jason Feifer
- Awakening Compassion at Work | Jane E. Dutton and Monica C. Worline