An Interview with Gabriel Theodoropoulos: The Past, Present, and Future of iOS Development
Meet Gabriel Theodoropoulos, an iOS developer who started developing software programs as a hobby while still a teen. Fluent in 11 programming languages, Gabriel attended the Technological Institute of Kavala, Greece to study programming, industrial informatics, robotics, and artificial intelligence. He’s created programs and applications on a variety of platforms. Since 2010, his focus has primarily been on iOS. His impressive library of apps and tutorials on GitHub inspired us to learn more about the path Gabriel followed to the world of mobile development.
The Path to iOS Developer
There seem to be infinite paths leading people to the world of app development. We asked Gabriel to describe his journey.
“I began experimenting with software development in my teens. Even though it began as a hobby, I think it was always meant to be my career. When I finished my university studies in IT, I created programs for both desktop and mobile platforms, as well as developing Web apps and websites. In the beginning, I implemented desktop apps for commercial customers. At the same time, I created Web apps using the technologies of the early Web era. I also moved into teaching IT and programming to primary and university students. Today, though, I identify as an iOS developer, as that’s what I love doing the most.”
We wondered if Gabriel had any regrets along the way. He’s refreshingly positive, recognizing the value of a learning experience.
“In the early years that I worked with iOS, I implemented various personal projects with the intent of practicing my skills rather than expecting any great success on the App Store. Those small apps helped me gain experience and get to where I am today. I also worked as a freelancer on some great apps that I wish I could talk about. That isn’t part of the game when you work as a freelancer, but that’s okay.”
Tutorials and Teamwork
App development can be lonely if you don’t work with a team. Gabriel told us about some exciting work he’s doing with his team, and about taking advantage of writing opportunities.
“For the past two years, I’ve contributed iOS-based posts for AppCoda. Simon NG, AppCoda founder, approached me with the opportunity to share my technical knowledge with readers around the world. Before that, I wrote for Tuts+ and tried maintaining my own blog, but writing for other sites made me drop my programming blog.
Today, I’m happy to be part of the Ideaste team, developing apps using Swift and Web techs. It’s a small company, but dynamic, making apps and websites, with a broad range of skills: audio, design, motion design, 3D, and, of course, development. Working with the people there is amazing. We recently began making in-house productions to meet our ultimate goal: to bring brilliant ideas to life.”
Big Lessons Learned
Gabriel shared words of wisdom he’s gained during his journey to iOS developer.
“The most important conclusion from the previous years and my experience can be summarized in a few words: We all always have to fight for our dreams and goals. It’s a fact that everything is earned through substantial effort; nothing is given for free. I had to fight to make my way in the programming world, to sharpen my skills, just like any other developer. Success has a different meaning for everyone, and making small steps and seemingly pointless moves is often necessary to achieve higher goals.”
Making the Move to Mobile
Veteran developers rarely begin in the mobile development world. We were curious to know what led Gabriel to make the move to mobile.
“I dove into mobile development initially motivated by curiosity. The more I explored the iOS ecosystem, though, the more possibilities I saw. Five or six years ago, the mobile platform landscape was quite different. Not too many apps existed in the App Store, as companies with another online presence made their initial steps toward mobile slowly. Most importantly, users were significantly fewer and not as mature as they are today. There were good chances for success for anyone determined to grab the opportunity, to fight for it and follow the always-evolving technology. Under those circumstances, I grabbed my ‘gear,’ held my breath, and dove deeply into the iOS waters.”
We asked Gabriel what sort of challenges he experienced making the switch to mobile.
“Having experienced many years of programming before the iOS platform, I had to switch from non-mobile environments to mobile development, and I would say that it wasn’t an easy change. New rules and constraints governed the mobile world. I had to adapt as I came mostly from Windows systems using C-based languages to implement desktop apps. Development for the Web, too, had different rules. The app development philosophy for mobile platforms is different in many aspects, and becoming acquainted with that was the most difficult part. Becoming familiar with Objective-C back then, and later Swift, came smoothly, as the same programming principles apply to all object-oriented languages.”
Of course, development disciplines, even in the non-mobile world, may translate into mobile development. We asked Gabriel which disciplines prepared him for mobile.
“Undoubtedly, prior development experience helps when getting started in mobile development, but it doesn’t erase all problems in the developer’s path. In my opinion, the game-changer here is the prior knowledge of Object-Oriented Programming, because all mobile platform programming languages either have roots there or are clearly OOP languages. Regardless of whether someone is an iOS, Android, or Windows Phone developer, once it possesses OOP principles, it’s easy to master the respective language (or languages). All he or she needs to learn are the syntax and scripting rules of the preferred language, and what everyone wants to achieve is the limit of that. If two developers are entering the mobile world, one with OOP knowledge and one without it, you can bet the latter will have a harder time until he reaches the former’s level. Of course, after a period of time, they’re at the same level, with the same skills, but the first one will reach his or her goals more easily.”
We asked Gabriel what advice he has for new mobile developers.
“I’d start by saying that there is no wasted time when programming, even when there are no obvious results in the beginning. Every minute in front of the computer is a minute of gained experience, and every failure is even greater experience. Today, mobile development is a kind of race, so nobody should be disappointed or give up when an obstacle arises. Someone determined to become a good mobile developer will make it, as there are many chances out there. Mobile development requires developers to not only be skilled, but also be open-minded and creative. Fresh ideas and new approaches will always be rewarded. One thing is for sure: anyone about to start has to win several battles to gain and improve his or her skills to stand out and eventually touch success. This is especially true now, with millions of mobile apps and users becoming more demanding. I don’t know if everyone will manage to build a career and earn a lot of money; if that’s the ultimate goal, being a developer is probably the wrong career choice. Based on my own experience, I recommend not going after ‘big’ jobs in the beginning. Give yourself time to become familiar with mobile technologies. Make as many crappy apps and as much ostensibly useless stuff as you can, so you are able to face real problem in real conditions later.”
Breaking out the Toolbox
We were interested in learning what tools Gabriel favors and if he thinks any of his favorites are underrated.
“I wouldn’t say I use any underrated tools. On the contrary, I believe that I use common but effective tools that most developers use. However, there are a couple of methods and tactics I follow and, even though they might be underrated, I’d like to mention them so that other developers, especially new ones, might find them useful. First, I use the command line (Terminal) for managing my repositories and keeping versioning of my projects on GitHub and Bitbucket. Even though it can easily be done through Xcode, I always prefer to use command line tools for committing and pushing my changes to repositories, as well as pulling from them. That’s my favorite. I also enjoy making use of reusable code. I’ve created a large collection of reusable code snippets over the years, and it has proven very handy during the app development process. Maintaining libraries with reusable code is a truly timesaving task, as I don’t have to search for techniques. It also reduces implementation time. That collection is always growing, as I add new techniques and code snippets to it with every new project. Having a toolbox with reusable code is advice I would give anyone that doesn’t want to write the same code again and again.
Another favorite habit that produces great results? Laughter. When fatigue, programming problems, or difficult situations push team members to their limits, laughter overcomes all problems. We’ll pause everything and start telling jokes, having fun chats on any topic we can think of. Everyone’s mood improves, and everyone relaxes. At the end, we all get back to work with a fresh mind. It’s always revitalizing and inspires a fresh mindset. I often find solutions to problems I’ve stared at for hours.”
Considering his five years plus of background in iOS development, we wondered what Gabriel feels are the biggest challenges facing iOS developers, and how these challenges will shape the future, or be solved.
“The first and greatest challenge facing most iOS developers is how they’ll manage to stand out from the crowd and promote themselves. There are thousands upon thousands of developers all around the world, some good and some bad. The competition is enormous, and anyone who desires even an average career has to work hard. It’s a continuous effort in a world where you can’t take a break or reach a point where no further action is required. Either you stop being an iOS developer or you’re determined to fight hard, responding to the challenge to distinguish yourself among others doing the exact same thing.
Aside from that, the App Store has millions of apps. For lone riders, creating a noteworthy, exceptional app isn’t easy. Coming up with radical, fresh ideas is the greatest challenge. It’s more than that, though. Apps must provide the best possible user experience. Apart from bug-free functionality, the user interface requires flawless design. This means graphic designers since few developers make truly good graphics. Working with skilled designers is mandatory, and finding them is a challenge. Everyone will agree that creating apps is a 50/50 process: coding and graphic design. This is actually great, because the combined power of people with different areas of expertise is being used for a common purpose!
These challenges will undoubtedly take us to a better app world, as single developers and companies will always try to create better apps, with more quality and essence. New user needs and evolving technology will require and inspire new kinds of apps. That’s good from all angles, as users get better apps and developers build more and better skills. Another positive impact is the creation of a huge knowledge base, extending day-by-day and available to everyone. Not that long ago, finding documentation and resources from anyone other than Apple was difficult. Today, there are many excellent tutorial sites and developer forums, each contributing to that global knowledge. What more could a developer ask for?”
The Changing Landscape
The face of mobile development is constantly changing, and finding pros can be difficult. We asked Gabriel what changes he’s seen, and what he expects in the near future versus 10 years from now. What skills will become more or less important?
“Mobile development sounds sexy, appealing, and fascinating, making more and more people pursue it as a career. Mobile development mimics, in a way, sports or music in degraded corners of the planet, promising a better life and even presenting the sole option for survival. We should never forget that everybody can access the resources necessary to become a developer, and the occupation can be profitable under certain conditions.
Of course, not all of the new players bring value to the game, and some of these bad developers more easily grab opportunities due to underbidding as a way to balance their lack of skill and unprofessionalism. Companies, sponsors, and employers often prefer these cheaper developers, although the final output is always poor and problematic. I’ve witnessed many instances of good developers being hired to replace poor ones, to rework a project from scratch. These types of hiring decisions will almost certainly disappear in the next few years, and the mobile development landscape will be in better shape. All it takes is for employers’ culture and way of thinking to mature so that they realize using bad developers is a waste time and money. When that happens, the number of professional developers will increase.
Another factor separating the pros from the hacks is how professionals respect trends, technology, and user needs. They invest the time and effort required to learn and make new things; they are open to new changes and challenges that will appear in the future. Possessing only the iOS knowledge or that of any other mobile platform is not enough. Developers must have at least the basic knowledge of the Web and its technologies, so they are able to exploit them and add cool new features to their apps. Today’s apps must have dynamic content, and that requires data to be exchanged with online servers. Other times, developers are called on to make the server side work, too. For me, having both mobile development and Web development skills is important, and I strongly believe that is going to be a basic requirement in the near future.”
We asked Gabriel what project he’s working on right now that we can share with our readers.
“We’re making a new, really cool app here at Ideaste that we think everyone will love. However, right now I can’t disclose anything or share any information about it. However, once it’s ready to be published, I’d love to share it with you.”
If you’d like to learn more about Gabriel, or get in touch with him, check out his Google+ page or his GitHub page. He’d love to hear from you!
Rollout is an advanced feature management solution that gives engineering and product teams feature control, post-deployment. It’s the most effective way to roll out new features to the right audience while protecting customers from failure and improving KPI’s.