The challenge of starting a new development project

in #hive-1693212 years ago


Image generated by Bing Image Creator

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

Thumbnail image generated by Bing Image Creator, modified with Canva


Sort:  

https://leofinance.io/threads/cocaaladioxine/re-leothreads-vpdhfx5v
The rewards earned on this comment will go directly to the people ( cocaaladioxine ) sharing the post on LeoThreads,LikeTu,dBuzz.

Yay! 🤗
Your content has been boosted with Ecency Points, by @cocaaladioxine.
Use Ecency daily to boost your growth on platform!

Support Ecency
Vote for new Proposal
Delegate HP and earn more

Congratulations @cocaaladioxine! You have completed the following achievement on the Hive blockchain And have been rewarded with New badge(s)

You distributed more than 4000 upvotes.
Your next target is to reach 5000 upvotes.

You can view your badges on your board and compare yourself to others in the Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

Check out our last posts:

Hive Power Up Month Challenge - May 2023 Winners List
Be ready for the June edition of the Hive Power Up Month!
Unveiling the Exclusive Web3 Berlin Conference Badge. HiveBuzz Adds a Touch of Excitement!

Nice rundown of your thoughts when trying to assemble a tech stack. I can totally relate to the whirlwind of choices out there and trying to match them up to what would work and what you'd possibly enjoy using. But that doesn't mean you HAVE TO use new tech.

Yes, new tech has benefits... and drawbacks. Probably in the same ratio as older tech after years of working hands on with the stack and trying to bend it to your will. I'm not bashing the new stuff at all, but never feel like what you have experience in is less than worthy, in this case PHP. If you really enjoyed PHP, pick it back up and start using it again.

Most of the exotic and extreme efficiency come from heavy customization and creative abstractions. So when you step back and think about it, these "faster" race wars can be insightful, but also may serve to be amusing at best in the long run.

Would love to hear more as you dive into the development and hit milestones and revelations along the way. Hope you enjoy the app build!

Hey! Thanks for the nice and interesting comment!

I thought about using PHP, but in the companies I worked for there is this idea that PHP is inherently insecure. No matter the version, no matter if you thought about it during development. That's why I ruled it out. It would have been difficult to sell the idea to them.

JavaScript, and more specifically Typescript, is interesting for me as I'll have only one language for both front and back ends. I do also have a VSCode extension under development and it's typescript too.

I don't have enough free time to invest in different languages, so it's an obvious choice.

Ahh ok. I thought the app may be a project for yourself or your own company. It's important to have the companies you provide to, fully backing the technologies you choose.

Can't go wrong with JS front and back. Me personally though, I liked it but never loved working in it. But, that's for my own projects :)

Great chat!

To be precise, it's a project I hope to be able to monetize one way or another.
Worst case scenario, I'll learn stuff and make it free ^^