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.
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.
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.
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.
Frameworks and Technologies
I may use Flutter in the future but for now, the developer community is not that big enough to make that decision.
Sketch app - enough said.
Summary for Web Technology Stack 2018
Django rest framework
Google Cloud / Digital Ocean - for Infrastructure