We always have preferences to code architecture, languages, and of course, tabs vs spaces. :-) However, there is a bigger question we always forget to ask and simply jump into a pattern without asking ourselves the most important question
Why are we using <React, Ember, Angular, Meteor, C#, Java, Python /> and is there a simpler option?
We need to ask WHY? I have heard so often, we need to use React.js for this, and we need to implement BEM for our Sass development and we need to migrate this to a no-sql database. We "need"... Do you? Do you absolutely need? Will your product no longer work if you don't do this? Or, are you simply leveraging your work environment as a playground to learn a new technology under the guise of a technical need to justify your education so you can leave your job with the new skill that the job you are looking at requires?
Yes, I said it. Technical people lie. They know that you don't know things and they want to do something so they make it more technical sounding so you believe them because you are supposed to trust them. Here is where a PM can simply become more technical in one word, ask them "Why?"
They will either become combative and often condescending, or they will have a valid reason. Obviously if the former happens, you can probably call BS on them and their knowledge of the "need".
I'm going to go into a little of my history and experience and the shifts I have seen. If you don't need the narrative you can skip this section.
Here are the Whys?
- The existing staff are familiar with Python.
- The existing code base (that is working) is written in Flask.
- I am expanding the code base, not rewriting it.
- Refactoring smaller pieces is MUCH easier than rewriting everything.
- Introducing a new JS framework is pointless with a smaller team, because the shared components are not needed. You only need to share your CSS in most cases.
- By leveraging the existing code base, I can learn from past developers on practices and improve where I see fit.
So next time you are diving into a project, ask yourself why are you choosing a framework, an architecture, a provider, anything.
Sometimes the answer may be as simple as "It is what I know and I can move the fastest with this." That is an acceptable answer, you need to be able to admit that and understand the why.
I created 30 sites in 30 days, which is really a lie, I created about 17 in 30 days and only about 7 of them were completely done. However, that fast turnaround time made me get really good at getting started. It made me refine my process for building a new site, and it helped me realize what I needed and what I didn't.
Here is what I have learned from that:
- I love development, simple as that.
- I like static sites for fast development.
- I like devops more than I openly admit.
- Creating a website, and creating a website that is deployed are different - Localhost is never enough.
- Codepen.io is an amazing place to learn front-end techniques.
- Doing one thing over and over again doesn't make you good at it, you maybe doing bad practices over and over again. It does make you faster at whatever you are doing.
- Question your process, and think of why you are doing something.
I'm hoping to repeat this process in Julyish? and do all the sites in Flask with Python.
The main tools I love to use for development are this:
- Visual Studio Code - It wins, stop telling me about anything else. :-)
- Docker/Kubernetes - Yes, I've converted to containerizing everything.
- MySql - It handles connections better than postgressQL and is free.
- Flask/Python/SqlAlchemy - It is my new favorite technology. IT IS AMAZING.
- Sass - If you are still writing CSS without Sass, you are wrong.
I hope this helps you become a little more inquisitive into your own process and default answers when someone says, I need a website.