24 An Interview with Oluwasegun Famisa¶
Segun is a Google Developer Expert for Android, based in Berlin, Germany. Although originally trained as an electronic engineer, he has taken on the challenge of developing for Android for around seven years. He has previously worked at Andela as an Android Consultant in Lagos, Nigeria where he worked with various partners on their Android projects. He also worked at Konga as a Software Engineer in the Android team of KongaPay. He is passionate about Software Engineering and loves to share his passion and findings through technical articles on his blog as well as speaking about the platform. When he is not writing code, he is playing the bass guitar in local bars around where he lives or trying his hand at painting.
Oluwasegun Famisa
Connect with Segun¶
Twitter: @segunfamisa
Interview¶
Like many in this industry, you’ve been a global traveler. You moved from Nigeria to Germany. Tell us, what would you recommend to a fellow developer that is thinking of switching countries? What are the hardest problems you encountered, and how did you solve them?¶
I would recommend living abroad for anyone who is thinking about it. The biggest benefit for me is the fresh perspective it gives about life in other cultures. I am constantly learning about people’s ways of living in my host country. This is also the first time in my life that I am part of a minority population, and the entire experience has been humbling and has provided new insights, especially on the topics of inclusivity.
Moving to another country also opened doors of travel opportunities to neighboring countries and environments, since they’re closer to me now than they used to be. All of this adds up to the wholesome experience of living abroad, and I would 100% recommend it to anyone willing and able to do it.
For me, however, the hardest challenges are, first, the process of actually settling into the country—paperwork, finding my own apartment, etc. I think there is no way to solve these problems aside from getting them done and out of the way. For some, it takes a long time; for others, it takes a short time. But once it’s done, it’s done. A second challenge is that I was an active person in the developer community back home, and it takes me a while to get into the developer community in my host country. The way to solve this was to find someone also interested in this, and they introduced me to other people in the community. I was also able to meet people myself and I attended more meetups like Google Developer Groups, Kotlin User Groups, etc. I also followed some of the developers in my immediate community on Twitter. And, finally, socializing. At some point, the only people I knew in the entire city I lived were my colleagues, so I decided to join some meetups and after-work events and that helped improve my social life.
In terms of getting insight or help from resources, which do you prefer: podcasts or books?¶
I prefer books to podcasts. Podcasts are great, and I do listen to a couple of podcasts. This is probably a personal issue, but I’m usually tempted to multitask—do things while listening to podcasts, and I often zone out and lose track of what is being said. I’m able to get right into the content when reading books.
What are the three podcasts or books that have had a lasting impact on how you do your work?¶
Two books that come to mind are Effective Java by Joshua Bloch and Working Effectively with Legacy Code by Michael Feathers. There’s also an Android developer podcast I like called Fragmented, hosted by Donn Felker and Kaushik Gopal.
Which other resources do you rely on heavily to keep yourself up-to-date in your industry?
I use Twitter, my most active social media account. I follow a lot of experts and new developers in my field and get to learn about what they’re sharing. I also use newsletters and am subscribed to a couple of weekly newsletters, like Android Weekly, Kotlin Weekly, Android Developer Digest, etc. And YouTube; I watch talks from different conferences, I am also subscribed to a couple of developer channels like those from Google, Android Dialogs and other channels.
“There is an unwritten rule or law that, as a developer, one has to be constantly coding… This is not very sustainable and at some point in time, one may suffer from burnout.”
In keeping up with industry trends, are there any that you think are just plain wrong?
There is an unwritten rule or law that, as a developer, one has to be constantly coding. Some people even have it as a slogan and on t-shirts: ABC—“always be coding.”
This makes people subconsciously spend their weekends and all of their free time writing code—I’m not saying this is bad—when they could be going to the park, reading a book or just resting. This is not very sustainable and at some point in time, one may suffer from burnout. Developers and indeed, all workers in the industry should encourage and adopt the concept of leaving work at work, and taking personal time off during the weekends and holiday periods.
What is something else you wish someone had told you back when you started software development, that you had to learn the hard way instead?
I wish someone had told me that it was beneficial to have a structure to my self-learning process. As a newbie, I kept gathering resources and studying materials, and I would jump from one resource to the other. There was no structure to my learning, and I missed a lot of important things I had to catch up on much later. I also sometimes suffered from information overload and I would get discouraged. I wish I had a learning curriculum that I had stuck to.
What do you think is one core concept that most software developers don’t pay enough attention to when they are trying to grow their careers?
Product thinking. I think the ability to contribute beyond code to the product being worked on is really valuable and important as a software developer. Unfortunately, many fine software developers do not contribute beyond the acceptance criteria on the tasks they work on. I believe that as one is growing their software development career they should also pay sufficient attention to their product thinking skills. This makes them wholesome value contributors to the teams they work on. It also opens up the possibility to transition into technical product management roles later in their careers.
Which advice would you give to someone who is starting his or her career?
For anyone starting, I would say that consistency is key. For anyone starting their development career, especially if they are self-learning, there’s a chance that they will want to jump from framework to framework, or from stack to stack. I think it is best for them to be consistent in which development stack they start with, until they get comfortable, before switching to something else.
Which is the cheapest investment you have made that has provided you the highest ROI in your career?
My first Android device. Well, it was not originally an Android device, it was a Windows mobile OS device, but I was able to sideload Android OSes on the device. I was able to use this as my testing device when I was learning how to build Android apps, especially as my development computer was slow and emulators were heavy and slow back then.
Currently, multiplatform development is the Holy Grail of our industry. What are your views on frameworks such as Kotlin/Native and Flutter?
First of all, I think Kotlin should be the de-facto language of every native Android development—the features of the language contribute immensely to productivity and app stability. But on the topic of multiplatform development, Kotlin/Native is an amazing feature that allows you to write code once and deploy to many platforms including the iOS platform. I like this feature because teams can easily share common business logic between their Android and iOS teams. Flutter is another great platform for multiplatform development—unlike many other similar solutions, it is native on both platforms, which is great for performance. On the other hand, it does not completely remove the requirement to understand native development. My biggest reservation with Flutter is that the libraries and support packages are only just growing. Overall, I think they’re both great approaches to multiplatform, but for now, my bet is on Kotlin/Native.
In your daily work, do you have any secret morning routines that set you up for success and how do you stay productive for long periods?
I do not have any strict morning routines, per se, aside from trying to wake up at the same time every morning and sleeping at the same time at night. But staying productive for long periods is a bit of an oxymoron! Taking breaks is what helps me stay productive. Every time I walk away for a short break and come back to my work, I come back with renewed energy and focus much longer than I would have if I didn’t take the break. This has been theorized into many productivity concepts, one of which includes the Pomodoro technique, but mine is not as short as the traditional 25 minute-long deep work sessions.
Segun’s Recommendations¶
- Effective Java | Joshua Bloch
- Working Effectively with Legacy Code | Michael Feathers
- Android Backstage Podcast | Tor Norbye, Romain Guy and Chet Haase