This week, I published Dotan Nahum's #DevJourney story on my eponym Podcast: Software developer's Journey. Among many other things, here are my main personal takeaways:
- Dotan's story started in a place of scarcity. There was barely a computer around, no-one to teach him anything, no books, and only a birthing internet he could use via an "unofficial" link on the local university network. From the get-go, Dotan was triggered by that scarcity and the willingness to have more, understand more, know more. He had to be curious and find his way around everything. Before he knew it, he was hacking, and creating his own tools. First offensive tools, and soon enough defensive ones as well. And then he stepped into Open-Source-Software development.
- IRC and online communities became Dotan's open window to the world. Before he had finished high school, he already came in contact with programmers and hackers from all around the world. Thankfully, he was driven by his passion and curiosity and never fell into "doing something stupid". That and finding ways to cheat at video games 😄
- He then went for 4 years into the army. There he was given "crazy responsibilities" over transmission systems. There he learned how to really understand and own a system and think fast on his feet.
- Out of his military service, Dotan went to university to study computer sciences but convinced he would become a fighter pilot. Until that time, it never occurred to him that computers could become his life.
- Soon after university, he realized his learning had stalled. He needed to be more deliberate about it. He was fairly good with C, Perl, and Python, but wanted to learn how to develop software "correctly". So he made a 5 years plan. He picked up Lisp, Scheme, F# and learned functional programming.
- Dotan's process for learning a new language is to first dip his toes into the water by doing a small project right away. When he faces a wall, he circles back and tries to understand what the underlying understanding problem is. This way of facing a problem puts your brain into "learning mode" as Dotan puts it. And this is the key to learning effectively.
- Since he was learning so many languages, he created different syntax highlighting schemes to make sure to prime his brain to the correct language. It took him a few years to get over the feeling of writing code in a non-idiomatic way. The key here was to learn the functional paradigm really well. Then he could use an idiomatic functional way of programming in every language. That coupled with Domain-Driven Design and a solid understanding of Type-Systems and Compilers made it easier to navigate many languages at the same time.
- Dotan described the journey of a programmer as follows. First, you face the "Mindset gap", where you realize that you can build everything you could dream of. Then the "Language Gap" where you need to learn languages and learn how to learn languages. Finally, the "knowledge gap" where you learn "the rest", the domain, the processes, the people skills, etc. required to build solutions and systems.
- In order to try and type as fast as he was thinking, Dotan also geeked out about keyboards, re-learned how to type with 10 fingers touch-type, tried Dvorak layouts, tested mechanical keyboards, and much more, before realizing that he had to ditch the mouse and learn VIM. In the end, he wished he had gotten into VIM earlier. "This was a meteoric jump."
- This learning was very deliberate. Dotan realizes that he put a lot of effort into this and sacrificed a part of his life. But looking back to what he achieved and how he was able to help, mentor others and be the mentor he never had, he is convinced it was worth it!
- "Build your own toolbox"
- "Before I knew it, I was writing code to gain knowledge"
- "There's the imperative world and the functional one, and in order to get better, you have to understand both"
Thanks, Dotan for sharing your story with us!
You can find the full episode and the show notes on devjourney.info.
Did you listen to his story?
- What did you learn?
- What are your personal takeaways?
- What did you find particularly interesting?