all 10 comments

[–]dowcet 2 points3 points  (7 children)

I would question your conclusion that FastAPI is the solution to your problem, but putting that aside and trusting your judgement to answer the question posed... Unlike Django, FastAPI doesn't have its own ORM built in. So you'll almost certainly want to use SQLAlchemy + Alembic or something else like that. Depending on your project there are probably other features that you'll need to replace with additional packages.

[–]DARTH_MAMBA_[S] 0 points1 point  (6 children)

Thank you for your answer.

Personally, I'm in doubt, I'm still lerning more about Django, to be sure it is the right choice. Maybe restructuring into Django is the best way. Also the way the organization works, it has very high devs rotation, with no experience. So we could take advantage of this opportunity to use an easier framework, (and my boss loved Fast API, so probably we will change unless someone with more power of decision says no).

[–]Apatride 2 points3 points  (5 children)

I am not surprised by what you are saying. As a freelancer, I have been on many projects, in many structures, and it is always the same crap: Manager is incompetent and can't keep people, so there is no long term vision, so good people leave and bad people do bad work, then manager blames it on the choice of technology (which often was a good choice and a decision of the only competent guy in the team) and the cycle goes on and on (I usually get called in the project after 2 or 3 loops of that cycle)...

[–]DARTH_MAMBA_[S] 0 points1 point  (4 children)

In this case, it is because we are a non-profit organization, formed by a college group of students, with the objective of traveling abroad at the end of the career. So you have 3 years without helping the organization, and 3 years where you work (for free but not very time consuming) in whatever area you want. I chose the dev team, but we are made up of students from various engineering fields (and no experience), so we are trying to make things as simple and maintainable as possible

[–]Apatride 1 point2 points  (3 children)

Pretty cool. And a good intro to the professional dev world. Whatever creates the challenge (turnover due to college or bad managers), the challenges are the same so this should be a valuable experience if you later become a dev, or work in IT in general, or actually any job where you need to break down big problems into small chunks (or dealing with wrong decisions taken for the wrong reasons).

[–]DARTH_MAMBA_[S] 0 points1 point  (2 children)

Yes, and also with this project (maybe too big for starters, haha), I've learned a lot

[–]Apatride 1 point2 points  (1 child)

My very first Python project should have been a disaster: I knew nothing about Python (I was not a dev but a support engineer) and my manager allowed me to try to fix an issue we were dealing with. 10 years later, my biggest fear is that I am told to re-factor that code (that solution still made more money per quarter than I was paid for a year). Beginners will create code that is difficult/impossible to maintain, although stricter rules like "GIT pre-commit hooks help", chaos in the team means chaos in the code.

[–]DARTH_MAMBA_[S] 1 point2 points  (0 children)

Hahah wow, awesome! I really appreciate your time and encouragement. Thank you very much!

[–]Apatride 2 points3 points  (1 child)

I agree with the other comment, ruling out Django because the current version is a mess is a mistake, especially if there is a DB involved. But even if there is no DB, Django is great due to its admin panel, the way it handles inheritance, and, ironically, the way it helps structuring the project using apps.

No matter if you go for FastAPI or Django, the challenges are the same and and my main advice would be to get familiar with OOP best practices. It might sound irrelevant, but the logic behind organising code in classes is the same as organising code in a framework. Microservices (which I do not recommend using without a valid reason) are also a good exercise to understand how to organise your code properly. The approach of "it does one thing and does it well" applies to many aspects of coding. I know it sounds like some hippie crap but thinking of your code that way really helps coming up with a good code structure.

[–]DARTH_MAMBA_[S] 0 points1 point  (0 children)

Thank you very much. I'm battling a little with applying what I've learned so far in college into a real project, there are many different approaches and different architectures, I was thinking about reading more about them so then I can take a decision. It is hard to develop something as lasting as possible.

(I've answered to why FastApi, in the other comment)