Lacking experience
I have several development projects I want to work on.
The only problem is that I'm not an experienced developer. My current role as Data Engineer does not involve actual large-scale software development. I have a good development understanding, but I usually tinker more than create something from the ground up. In the past, I did write my own content management system using plain PHP, but it was 17 years ago.
17 years... Man! I feel old!
Anyway, it was not good programming, just a great experience and a fantastic way to understand many things. In the meantime, I completely stopped developing it and even forgot about my website.
Just to put things in perspective, at that time, Prototype was the king, jQuery did not exist, Ajax was still THE buzzword, Javascript was considered as a slow, buggy, and, yes, shitty, programming language.
A brave new world
So much changed during those 17 years.
Me, to begin with! At that time, I was still a young nuclear engineer, working as a Safety Engineer at a Belgian power plant. IT was my hobby, and this hobby led me to my first job as Data Engineer (the term did not exist at the time). I really don't regret changing paths, and enjoyed my work ever since.
In the IT field, even if the good old C/C++, C#, Java and Python are still in the top 10 of the most used programming languages, databases, cloud, and dev practices completely changed. There are now more frameworks than one can keep track of, an astonishing count of NoSQL databases, and last but not least: AI entered the chat!
When I first began to code, a friend of mine just wrote some basic (qbasic actually) functions on a paper, and I began coding on my PC. Without Internet! To learn PHP, I read a book! Just imagine!
Now, you just have to Google something, or ask one of those impressive AI, copy-paste, tinker and get something that works. I'm convinced that AI will going to become a major part of our lives. Being able to use them, to quickly access the right information, and to ask the right questions, is going to be the next most sought skill. Personally, I don't want to be left in the dust because I overlooked this new technology.
That's why I'll use AI intensively to develop my next project!
I'll use both the Bing Chat bot and ChatGPT. As soon as it's available in Europe, I'll give Bard a try also.
The App
I won't detail every functional aspect of my project. Let's just say that it's a tool for business users and related to databases. It holds some aspects of Self-BI but in a constrained environment.
The tech part, on the other hand, I will detail during the development process.
I already set several requirements :
- Provide API's (anything you do or see in the UI, you can get from the API)
- Be fast
- Be scalable
- Be Cloud Native (I'll settle with GCP, to begin with)
- Handle different databases (for the app configuration and for querying)
- Be enterprise-grade (clean, manageable code, known and tested environment and techs)
- Be in one of the 10 most used languages
- Be in a language I already know a bit
Let's ask Bing Chat Bot :
Based on your requirements, I would recommend the following languages:
- Java - Java is one of the most popular programming languages for enterprise applications. It is fast, scalable, and has a large community of developers. It is also cloud-native and can handle different databases.
- Python - Python is another popular language that is known for its simplicity and ease of use. It is also fast and scalable and has a large number of libraries that can be used to build APIs.
- JavaScript - JavaScript is the most popular language for web development. It is fast, scalable, and can be used to build APIs using Node.js.
I hope this helps!
Considering I'm really bad at Java, it's out.
I don't really like Python to code big projects, so out too.
This leaves me with Node.js, which was my personal choice anyway. Thank you AI! I'll do it in Typescript, considering it's more structured than Javascript, and will be easier to maintain.
That was the easy part! Now, I need a frontend framework and a backend framework. I read many articles and posts, I realized I'm completely out of the game here.
Frontend
Let's ask Bing Chat Bot again :
Question :
Could you list the 5 most used fronted Javascript frameworks, with a short description for each framework, and a difficulty level from 1 to 5. Add JS if it's only javascript, TS if it's only Typescript and JS/TS if we can use both.
I actually asked the question in 3 steps, asking for more details each time.
Here are the five most popular JavaScript frameworks for front-end development :
- React - React is a JavaScript library for building user interfaces. It is maintained by Facebook and a community of individual developers and companies. Difficulty level: 3/5. You can use both JS and TS with React.
- Angular (Angular 2 or higher) - Angular is a TypeScript-based open-source web application framework led by the Angular Team at Google and by a community of individuals and corporations. Difficulty level: 4/5. You can use both JS and TS with Angular.
- Vue - Vue is an open-source model–view–viewmodel JavaScript framework for building user interfaces and single-page applications. Difficulty level: 2/5. You can use both JS and TS with Vue.
- Backbone - Backbone.js is a JavaScript library with a RESTful JSON interface and is based on the Model–view–presenter (MVP) application design paradigm. Difficulty level: 2/5. You can use only JS with Backbone.
- Ember - Ember.js is an open-source JavaScript web framework, based on the Model–view–viewmodel (MVVM) pattern. It allows developers to create scalable single-page web applications by incorporating common idioms and best practices into the framework. Difficulty level: 4/5. You can use only JS with Ember.
I hope that helps!
I have to consider it's going to be a one-guy project and that I have no prior knowledge of any of those frameworks. I never heard of Backbone or Ember before and they seem to be Javascript only. That rules them out.
I'll select Vue, which should be more than enough for my use. It's rated 2/5 on difficulty level and is Typescript compliant.
Backend
This was easy to ask :
Question:
Please do the same but for the node.js backend frameworks
Here are some of the most popular Node.js backend frameworks :
- Express - Express is a minimal and flexible Node.js web application framework that provides a robust set of features for web and mobile applications. Difficulty level: 2/5.
- NestJS - NestJS is a framework for building efficient, scalable Node.js web applications. It uses modern JavaScript, is built with TypeScript (preserves compatibility with pure JavaScript) and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Reactive Programming). Difficulty level: 3/5.
- Koa - Koa is a new web framework designed by the team behind Express, which aims to be a smaller, more expressive, and more robust foundation for web applications and APIs. Difficulty level: 2/5.
- Hapi - Hapi is a rich framework for building applications and services. It enables developers to focus on writing reusable application logic instead of spending time building infrastructure. Difficulty level: 3/5.
- Fastify - Fastify is a fast and low-overhead web framework for Node.js. It is inspired by Hapi and Express and is one of the fastest web frameworks in town. Difficulty level: 2/5.
- I hope that helps!
A little addition with this post I found on Reddit I have done a full benchmark of a POST REST API on my computer....
If I trust this post, Express is out. I don't want to use "new" frameworks because I target big companies, which rules out Koa. Hapi and Nest are rated 3/5 and I want to keep it simple (for me).
Fastify it is, then!
Next Steps
My next step is to ask for a bit more information about Fastify and Vue to ChatGPT and the Bing Chat Bot, then read some stuff on the subject. I'll also draw a little architecture, and test a simple use case.
Conclusion
I'd be happy to have your input on the whole subject. Are my choices good or am I totally in the wrong? Do you have advice on those frameworks?
Motivations
In half of our recent projects, we had to use workarounds to meet our business needs, and this app could fill a gap. I would be surprised if we were the only ones missing this app. That's one of my main motivations here.
It will be a part of a Hive-related project, too.
But I also expect to :
- practice Docker and Google App Engine
- practice Document-oriented Databases (Google Firestore, MongoDb, ...)
- improve my coding skills
- improve my software architecture skills
- increase my GCP understanding