Donny Wals is an iOS Engineer at Disney Streaming Services, who is passionate about finding new ways to level up and stay relevant as a dev. Like any developer, however, he knows that this can be overwhelming because there is so much to learn out there. Having been faced with this his entire career, the most important lesson that Donny has learned is that almost all software applications are built upon foundational blocks – and, when overwhelmed with options, these are the most useful things to learn. By focusing on understanding these core, underlying principles, Donny has developed a much stronger knowledge base, which makes learning newer applications easier.
In this article, Donny shares how he learns these foundational principles by reading old software books, as well as how he applies what he learns practically by setting open goals and blogging about his lessons.
Donny is passionate about both continuous learning and sharing his knowledge. He’s spoken at various conferences and webinars, has written a book on iOS programming using Swift and Xcode, and runs a blog and weekly newsletter, where he shares the stuff he’s learning, writing, and reading each week. Each of these have been helpful for broadening his horizons as a dev. This is important to him because it helps him make sure he’s not falling behind an ever-progressing and ever-changing industry.
But Donny acknowledges that staying relevant can be really overwhelming: Nowadays, there is so much content available on the internet with new content being posted every day.
In the past, he’s seen devs respond to the information overload by zooming-in on their immediate landscapes and trying to learn as much as they can about one thing — in his area, this might be something like SwiftUI, for example.
But, from what he’s learned, technologies change and this kind of learning easily expires in software: “It would be foolish of me to think that for the next 40 years, I’d be working with the exact technologies — 40 years ago, Swift didn’t exist. It's only reasonable to assume that things are going to keep changing.”
In other words, only focusing on what’s popular right now is not going to be useful in the long run. Donny’s approach to learning is to focus more on understanding the things that underlie trending technologies.
“Once you start thinking about things slightly differently, and look at it from a different perspective... you realise that a lot of the things you do are rooted in very, very old principles. There are very few things being done in programming right now that are truly new.”
Taking this approach also helps Donny feel less pressure to keep up with every single new development in tech: “I realise that most of these developments are just a fresh coat of paint: They are mostly improvements on existing solutions that address the core problems of software development.”
To learn about these core principles, Donny often reads old software books. Here’s why he finds these to be one of the most valuable resources, as well as how he actively applies what he learns by setting himself open project goals and regularly blogging about his learnings.
Why older books can be your most valuable resource
In Donny’s experience, most software problems are not that new. “There is a paved path”, he says. “In general, programming hasn't changed that much.”
By reading older software books, Donny can tap into the most fundamental parts of software development. Whether it’s the online version of the book or the real thing, these older resources enables him to get to grips with the core building blocks, upon which he can grow his broader software development knowledge.
“My best-spent effort, in my opinion, is reading old stuff, the books that people have been recommending for 10 years or more… They really broaden your horizon in the most literal sense of the word, because it's almost a bird's eye view of the programming landscape.”
Some of the older software books that Donny often recommends include the following:
- The Mythical Man-Month (1975) by Fred Brooks
- Design Patterns (1994) by Erich Gamma, John Vlissides, Richard Helm, and Ralph Johnson
- The Pragmatic Programmer (1999) by Andy Hunt and Dave Thomas
- The Clean Coder (2011) by Robert Cecil Martin
Practically applying what you learn to cement your knowledge
In order to make what he learns from books more effective, Donny always tries to have a goal in mind. It could be to build a small website, or develop an MVP app to solve problem X — anything that simply helps him have some kind of direction, and gives him a foundation upon which to build his learning.
However, instead of a really clear goal, Donny has found that a vaguer goal is actually more effective for his learning process. By not holding himself to anything, Donny allows himself more freedom to explore and experiment with the theories he picks up from the books:
“Having a very vague goal of ‘I want to build a website’”, he explains, “is going to push me towards picking the most valuable technology to learn that will allow me to apply principle X that I’ve just read about. This approach helps me look outside of my comfort zone and build up my confidence.”
By learning in this way, Donny finds that when he encounters a new problem later on, he doesn’t need to start from scratch – he knows how to apply the logic of the underlying principle, and has the freedom to learn a new “surface” tech to build on it in whatever context.
Keep a blog for yourself to keep track of your lessons
As human beings, it’s only natural that we forget things over time. With so much on the go, we need to clear out memory space so that we can keep learning and advancing.
However, Donny has found that blogging is useful as a way to keep track of what he learns as he levels up his software development skills. This also lets him revisit old lessons, and brush up the things he’s already encountered and solved for.
Donny’s biggest piece of advice, and his approach to blogging, is to write for himself and not for other people:
“My main purpose is to write for myself. It's just a nice little log of how I’ve been learning and progressing over all these years. If I run into something again, in 10 years, I'll be able to look back at my own writing and say ‘Oh, yeah, that's how it worked.’”
When you’re focused on writing something that other people find useful, it can quickly become demotivating. However, by treating your blog like a journal, Donny says it can really become something that can serve you as a developer – which is exactly the point.
Another thing Donny has found useful to make blogging less intimidating is to set yourself a time limit. Donny limits his writing sessions to two hours: “That constraint really helps prevent me from writing a small book every time I want to publish a blog post”, he says, “and also prevents me from not publishing at all.” In his experience, if he gives himself endless time to write a blog post, he’s also giving himself a reason to only ever write drafts. Rather, he tries to sit down, write it, and publish it.
Donny is passionate about discussing learning – why to do it, how to do it, and what to focus on – so, if you have any questions, or would like to reach out to Donny, feel free to do so via his Twitter or LinkedIn!