How to make your choice of technologies when starting a new website?
As a developer, designer, or probably full stack developer you use many technologies for your daily jobs. Not because you have to use all but maybe those you use for a specific project aren't suitable for some other project.
Moreover, you know many not because you want to, but from time to time new technologies and practices emerge, and one needs to upgrade or patch his workflow. And we end up with a whole bunch of possibilities which always makes us doubt which one to choose.
Besides, that doesn't deprecate any technology. What you might have stopped using two years ago, someone is still using it today and feels better with it. I remember while going through codepen, meeting a lot of recent code where people are using compass
, while I stopped using it since last year. This is to say the choice of technology is more of personal and contextual than a standard.
In this post, I would like to share with you how I go about choosing my tech when starting a new project.
This could also be of good help for any beginner who is not used to working on projects from the beginning to the end, or who is looking for other alternatives to his usual methods.
Starting a new project is always fraught with a lot of confusion. This makes us think of which tools or what technique to use in order to match the project requirement, to stay in the time frame, and ease the project continuation. The choice is usually conditioned by a certain number of constraints:
- The project requirements
- Goals to reach
- Project evolution line
- Maintenance options
- The role the designer/developer has to play in the project life-cycle
- Platform interaction(UX)
- Audience
- Time
- Client choice of tools
- Workstation
- Team set up
You will surely find more and more depending on your situation. No matter the case, one thing is sure you will have to make a choice. Go for python, Ruby, PHP, or even nodeJS. Go for bootstrap, foundation, Materialize. Go for sass, less or go raw, etc.
For each branch, you take it's always full of options which are all good and adequate. So, what can help you eliminate some? To answer this question here is a list of things I think of before choosing.
Is it a personal project or for a client
While this may sound weird to most of you, it's actually a crucial criterion that influences how you work. I take a lot of time on my personal projects. I hardly have a deadline for them. I can reach a level break it down and go for another option. I can create a website and omit some functions in the admin because I can get other ways to do it. But, all this isn't possible with a client's project.
If it's for a client, what does he/she want to achieve with the website?
This is very important to me to know from my client because most of the time they don't have any idea of the details going on under their project, but they have a general idea of what they need which is pushing them to create a website. This could be in the form of:
- Just a website to create a presence of our company online
- A website to help us display our products to more people online, no need to order online
- We want to increase our sales online
- We want to automate our payment system
- We want to have sponsors and partners
- etc
That way I understand the real need my client has. This is kind of, whatever you can use to achieve that, just use.
Who will be in charge of the final project?
The next thing to think of is how to make the usage easier for my client. Or, will I be the one(as a developer) in charge? I will now look at his level, or any possible person who will inherit it.
How long do I have to complete the project?
Probably the most important factor to consider. The time frame is where everything has to fit in. Your choice of technology has to help you in that.
The project cost
Anything can be possible, but sometimes we just have to go for some other things because the budget is not enough. I hate this idea, but I've come to understand that, sometimes we really have to sacrifice. But, still, I think if the time frame is good enough for you to go for technologies that are most suitable, you should go for it, even if the cost doesn't match your requirements.
Maintenance option and my input involved
The way the project is going to be maintained matters a lot. Imagine a client who wants to be able to modify his website's structure and content at any time without involving you. This will automatically make you think of a CMS(WordPress, Joomla, or built by you).
The other side of the case is to know if I would be involved in maintenance. As a developer, I would like to go for more geeky CMSes than WP.
Does the client have any preference?
When that happens, it will usually make your life easier. Because it will help you know what you have to use. Up to you to adjust yourself in.
Is it teamwork or I am alone?
If you are working alone, you deliberately choose or ignore anything you want. Working with people is different. Everyone comes with his own favorite tools. Some have to give up on some tools, some have to adopt others' tools, and so on. The workstation too can impact here. Because you might not all be in the same place(or at least, sometimes).
Which tool/technique do I/we master?
Personally, this is my final question. when working for a client I always go for tools I master the most than what I am experimenting. It has the benefit of saving me a lot of time.
What to avoid
Do not be seduced by buzzy and fancy terminologies and throw yourself into a hole you will find hard to come out from. Many developers have that habit of always trying to use something because people are talking about it or a friend is using it.
Never make that mistake. The ideal tool or technique is the one you've mastered. The same is applied to your programming paradigm. I saw many friends trying with all their power to use MVC
on their projects without even knowing what it means. They named their folders after the M, the V, and the C and threw in any garbage. And in the end, they don't know how to make calls to their files and functions. It's a mistake.
Always remember, that the project is meant for an audience. Your focus should always be on serving them in an adequate way. Do not abuse your tech and develop things that aren't needed.
Wrapping up
You've certainly noticed that this is more of your choices and what the situation offers you. Never what you want or can do, nor it's a fashion choice.
Priority should be placed on the end users. We all know very good ugly websites and very beautifully useless websites.
Take your time, and be realistic. Avoid being a developer/designer who follows the buzz. Use what you master. If you want to upgrade, find some time and make it gradually on a personal project or on a project you have more freedom and time.
I probably didn't say everything. And your situation will allow you to consider more cases. This is how it works. Although this seems to be directed to a website project, I believe you can still apply it to any other field.
If the little information here was useful to you, please help me share it with your friends. Thanks for reading.