Transitioning Into Mobile App Development
Through the years as a web developer, I have discovered that if you are not learning, then you are not growing. This is not only true for developers but any field of endeavor you might involve yourself in.
There is such a vast amount of knowledge out there for whatever you involve yourself in as an occupation. Some people aim to stop learning the moment they get that certificate or degree. I do not think it should be like that though. Lifelong learning is what we must all strive for.
Don’t get me wrong; by learning I do not necessarily mean formalized education. In this day and age, there are so many avenues for one to expand their knowledge around any subject. You can pick up a book, go online and learn from the numerous channels ranging from the for free such as Youtube or the paid such as Udemy. There are even blogs and articles to learn from that do not require a lot of time investment.
There is so much information out there about any subject such that it is impossible to acquire it all but it is definitely important to improve yourself. For me, it is crucial to always seek a better version of myself in all aspects of life and career development is one area where this can be done.
Tech, especially in software, is an area that evolves very rapidly when compared to other fields such as accounting. As a result there is more pressure to learn new things, otherwise you quickly get left behind and cannot compete.
The deeper I went into web development the more I wanted to learn and get better at it but further than that, I realized that there was an area that was missing where I could do more, and that is venturing into mobile application development.
Influence of Convergence Of Technologies
In the blog post titled Convergence Of Web and Mobile Technologies, I discussed how technology has a tendency to converge with the progression of time. A good example of this is between the Web and Mobile ecosystems.
The Web and mobile technologies evolved separately under the common banner of the Internet. Initially and ideally, if you visited a website on a laptop or desktop, you would be served a different version of the website than if you visited the same web address on a mobile device. Either that, or you would be presented with the same website as on a personal computer but one that is cumbersome to use on a mobile device.
This set of circumstances proved to complicate the lives of web developers. It meant that for every website, in order to be proficient, a developer had to develop at least two versions- one for the Web and the other for mobile devices. The setup was such that the device accessing the site at the particular address would have to be detected and the appropriate version of the site served for viewing.
A recent development in response to this problem is the Responsive Design paradigm. In this paradigm, a website is coded to automatically detect the size of the screen of the device on which it is being viewed and alter its form to properly display on that device’s screen.
This was a remarkable development because it meant less work for web developers and an ability to design according to screen size. Since the responsive design is configured based on the screen size, the design can be completely altered to fit the screen size instead of just shrinking the desktop version, for example.
When I started out as a web designer, responsive design was just on the horizon and when it appeared on the scene, I embraced it with a passion. Before responsive design, I hated the fact that you had to scroll sideways to view parts of a site when viewing it on a mobile device if a separate mobile version was not available for a site.
Apart from the advantages thus full described, responsive design brought me something remarkable. It brought into my consciousness the world and concept of the mobile app. You have to understand that until something is brought into your consciousness, you are otherwise totally blind to it.
Responsive Design and Web Apps
Like I said, I embraced responsive design with a passion and mentioned this fact to everyone for marketing purposes. It is really cool if you comprehend the implication. So, from the moment I discovered responsive design it become part of every website project.
When I discovered responsive design, I was just a web designer and subsequently my evolution into a web developer eventually took form. What’s the difference; in short, a web designer designs websites whilst a web developer develops apps for the web.
When I started developing apps for the web, I tried to use responsive design to develop apps that I hoped would do well on the Web and mobile devices. In some cases this worked because some clients were not particular about their app and were content with only having a web app.
At the same time, there were some clients who wanted native apps on mobile platforms or both to offer web and native apps to offer their users more options. A native app runs on the operating system of the mobile device whilst web apps run on the mobile device’s browser in the same way that a website does.
It bothered me that I could not build native apps to meet the needs of clients who were not interested in web apps and this led me to starting to learn mobile app development. There is traditionally a caveat when learning mobile app development since there are two prominent mobile platforms.
Learning Cross Platform Mobile Development
The mobile market has two competitor operating systems. Some users use Android from Google and others use iOS from Apple and there are also some insignificant mobile operating system in the market.
At the time of writing, according to StatCounter.Com the global market share for Android is 76% and 22% for iOS whilst in the United States, iOS has 56% market share while Android has 44%.
This presents problems for developers and clients alike. For clients, usually developing for one platform is not good enough since they lose out on reaching clients on the other mobile platform. Often a client will need to develop two apps, one for each platform. App development is expensive and this usually means engaging two teams to develop the same app twice, one for each platform which pushes the cost up.
For developers, this means either maintaining two development teams for each platform or having developers that are proficient in programming for both platforms, which is rare, since each platform uses completely different and separate programming languages as well as tool-chains.
The idea of learning two languages and their respective tool-chains was a daunting prospect for me. So, I looked for a workaround and found it in cross platform mobile development. With this approach, a developer uses one programming language and then compile the code into native apps for each platform.
This is an approach I can live with. I had some false starts but now have found a technology I can work with. At first I tried using React Native, gave it up for Vue Native and then went back to React Native but I am now comfortable with Flutter. These are all exciting technologies and the details of which will be for another blog post. Until then, keep learning and keep growing.