Roadmap for Full-Stack Web & Cross-Platform Mobile Development in 2018

April 17, 2018

Background & Context

From 2015-2017, I was a full-fledged banking analyst where my main roles were in business development, marketing, product management, and project management. This was tremendously helpful for me as I had spearheaded some of the largest scale initiatives and ideas in one of the largest financial institutions in the world. In fact, my successful involvement in these projects led me to become one of the youngest industry financial scholars funded by the Singapore central bank, the Monetary Authority of Singapore (MAS) and as the first Commonwealth Scholar of Innovation - a scholarship inaugurated by Queen Elizabeth II the Head of the Commonwealth. I currently study an Mphil in Technology Policy from the University of Cambridge. It is my core mission to provide a better standard of living and wealth to all peoples.

SO it seems like I am successful? I am set for life? HAHA. VERY far from it, in fact at this very moment, I struggle to secure a good job in the payments and venture capital industry. As I written before, Failure is expected and good, but very painful - SO I must grow to have the relevant skills to secure that next job and then eventually fulfill my vision.

Despite finishing a computer science degree with first-class honors (highest order of grade possible), I felt deep frustration not having developed a skill set of a commando - ready with the technical, business, and financial skills to be a entrepreneur. Despite having released mobile games & apps before, it was done with my good friend Benjaming Kang who often focused on the tech stack where I focused on the UX and UI and pushing the app to production on the Appstore or Play Store. This post focuses mainly on my strategy to develop my technical skills to handle my next challenges for the next 5 years - year 2018-2023.

Choice of "first" programming language for Algorithmic Practice and Scientific Thinking:

Just like English is my first language, the choice of a "first" language is Python. As a language for computer science research, it offers a plethora of libraries for machine learning, data analysis, web scraping and Object Oriented Programming (OOP) data structures for research etc. As a language for entrepreneurs, it offers frameworks such as Django and Tensorflow/Keras that are production-ready and scalable to bring some of the largest companies to market such as Instagram, Bitbucket, Pintrest, Mozilla Firefox websites. It is a clean and beautiful language that offers your mind to focus on the algorithms instead of syntax.

It is not the fastest language for your server, but it is the fastest for brain thoughts to bring products to market.

Back-End Technologies

Database Server

For a relational database, I chose PostgreSQL. It is ACID compliant which is critical for someone in financial services where people cannot withdraw the same balance twice. It is used in Transferwise, Pintrest, Facebook, and many others. If I were to go with a no-SQL solution that in some examples can be much easier to scale horizontally without the need for complicated sharding and consistent hashing, I would use MongoDB as they are soon to become ACID compliant.

Application Server

Django is the weapon of choice. It abstracts out the SQL queries that I would have otherwise needed to make if I had gone with something like PHP & MySQL, it uses the Model-View-Controller (MVC) concept to enable modularity of functionality. Also it allows more control compared with Ruby on Rails. Furthermore, since it is written in Python, I can integrate my python scripts, algorithms, and data structures I wrote for personal projects that are already running on my computer into the cloud server. If I were to do a relatively short-term project on a small server hosting budget but to millions of people, I would use Node.js as the performance and concurrent connections of this lightweight software is incredible. Using Node.js feels like the biggest technology infrastructure leverage possible for a small wallet - side note - another one is Go language developed by Google although the developer community is tiny.

Server Infrastructure

All cloud baby. Digital Ocean and Google Cloud are the go-to technologies for load balancers, database & app servers, and static storage server. To be completely honest, I am trying my best to avoid performing server administration and making linux commands. At the same time, I want to avoid Heroku as I don't think you get value for money and there is quite a strong lock-in effects for your software development lifecycle.  That's why for a combined app & database server, I would go with a Django server droplet from Digital Ocean. For serving static files such as videos and photos, I would go with Google Cloud storage.

Front-end Technologies

Frameworks and Technologies

React.js for the web and React Native for cross-platform mobile applications. React.js is the third-most popular framework for the most popular web language Javascript. React Native has been proven to be a top cross-platform mobile framework built for Facebook, used in Facebook, Instagram, Skype, AirBnB, and Tesla... This framework is fast too, putting hybrid apps to shame.

I just figured if I am to write javascript using React on the front-end for the web app, I might as well use a similar frameowrk built on top of React.js - React Native for mobile app development. More to be elaborate later.

I may use Flutter in the future but for now, the developer community is not that big enough to make that decision.

UI/UX Design

Sketch app - enough said.

Summary for Web Technology Stack 2018

MySQL

Django rest framework

React.js

React Native

Google Cloud / Digital Ocean - for Infrastructure