Development Whys?
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.
I originally was C++ developer and created desktop applications. It was fun, kind of, and I worked hard (not often smart). I then moved into SQLWindows (which later became Centura) and that was like Visual Basic UI development for SQLServer. I then moved into ASP (now called classic ASP) and I fell in love with the web. I did that until ASP.Net was created and worked on ASP.Net/C# for years. I then moved back into SQL development briefly, but always keeping my chops sharp with .Net. Then came the flood of JavaScript. node.Js changed so much development... one language for all of the Web. Then I got into the framework/library game... jQuery, ExtJS, Knockout, Backbone, Angular, React, Ember, Meteor, Vue... I became a React fan boy for a while and loved what it could do with shared components and a consistent look/feel across projects. Then Vue simplified it even more and I love Vue. Then I enter the digital agency world and realized that each client has their own preferences and I had to learn each one as they came along. I never paused and asked why until then. Why are we using that CMS? What are the advantages of rewriting an entire working code-base on a new framework that may become obsolete in 6 months? Then I move on to a python shop that was all functional programming and was looking for web development. So I dove into Flask and Python and I had the reason on why from the start. The existing data science staff were familiar with Python so why not build on that existing knowledge. Now, I don't use React, Angular, Node (much), and live in the flask world.
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.