Your success is also our success, that’s why we want you to know some basic guidelines of how to most effectively prepare to an IT project.
There are a few key aspects on which you can judge a developer or a company that handles your project.
The key aspect is a good communication - you have to make sure people you work with understand you fully. If they do, you can expect to receive some constructive feedback.
If you plan to keep developing your project for a longer time, stability becomes an important factor. Usually the bigger the team, the better the stability of the company.
Technology is important - the one that you choose at the beginning will most likely stay with you for the whole project. It’s important that it’s widely used, with good prospects for the future and good development tools.
Coding environment is a next important factor. Best companies have deployment tools, testing tools, code generators and prebuilt modules they can use as patterns.
You can also analyze project management. With good management you have quick access to the product, you can regularly give feedback and you’re always well informed about the progress. It’s good to ask about details of project development to check if companies indeed use methodologies they claim to use.
It’s important to analyze company’s portfolio. It’s not enough to look at nice pictures. Website’s template can be created in one night. A good website can take one person’s work year to prepare. Ask company about projects similar to yours that they worked on - this will make assessing them easier.
Ask what tools company will use to make your website scalable and well optimized. Ask for test data, compare answers of a few developers. Make tests. It’s very easy to be cheated by a developer here as you won’t have much tools to verify their words. When site is badly written, most often you will have to rewrite it completely to make it scalable and well optimized.
The answer is simple - project documentation. Once you have an overall description of the system, you can already approach developers. From now on, they should actively help you in documenting the project. By analyzing documentation, you can confirm that you’re on the same page.
It’s good to first focus on creation of mockups and graphs.
Mockups are a graphical representation of a system’s interface. Mockups prepared by developers should be a synthesis of your documentation and their knowledge. They may vary based on developer experience, their codebase and technology. Good mockups should be optimized in terms of UI and UX, and should plan the most efficient way of implementing functionalities.
Graphs are useful for more complex functionalities. They depict dependencies that otherwise would be hard to understand, and are a good platform to discuss processes.
Mockups and graphs usually give you a very clear view of how developers see your project, and allow you to check whether all your requirements are met.
After you prepare this graphical documentation, developers have to prepare a technical specification. It’s advised to review this specification as well.
I will start with a quote from Donald Knuth:
“Premature optimization is the root of all evil”There’s a lot of truth in this phase. You should think about optimization only when you know you need it. Even though you don’t have to optimize from the start, you should have a clear plan of how to optimize when it becomes necessary.
Even though you don’t have to optimize from the start, you have to make sure your code and technology allow for an optimization.
On the code level, this means clean structure, which allows you to easily rebuild elements without breaking the whole system. Your features should be well encapsulated, with well defined interfaces. They should be independent of each other, so that you can optimize them one by one. Automatic tests help a lot as well.
On the technology level, this means ability to scale both horizontally and vertically. You should be able to move particular services to different servers, and you should be able to replicate services on multiple instances. This usually shouldn’t be architectured from the beginning, however it’s important to know that your technology allows for it.
Once you actually need to optimize, first perform a profiling. Even better if you have historical performance data for particular services. You need to know what to optimize. Even if you have very strong guesses, it’s important to confirm them. Believe us, we learned it the hard way.
Once you run good profiling, you can define bottlenecks. They can vary greatly - from issues in the code, throught server setup, to holes in technologies you use. You can’t predict all of them, and each problem has different solution. You should tackle them one by one, and profile afterwards to confirm results.
Remember to optimize only when it’s needed. Before optimization, know your goals.
This advice is more about how to prepare for a start. If you want your project to be on point and efficiently developed, there is much you should do before you begin an actual implementation. We usually separate this preparation into three phases.
1. Setting your goals
It’s a very good practice to write down all those business requirements. It’s even better to do a market research to make sure your project meets those goals.
Once you have your main goals, you should create a general specification. This specification can take multiple different forms, some of which we present below. You can choose one, or any combination that works best for your project.
You can define key roles in the system, and afterwards define operations that each role can perform. Example:
If you prefer to sketch interface of the system, this also works well. You can use any of available online tools, or just sketch on paper. Personally I would recommend to use Evolus Pencil.
You can just write down modules that you plan to use in your system and describe in a few sentences how those modules should behave. With this approach, it’s important that you’re specific with your descriptions.
Once you have a plan for your project, it’s invaluable to consult it with your potential clients, as well as with people experienced in the matter. Believe me, it will save you a huge amount of time in next phases.
This all depends on your technical requirements. You have to answer to a few key questions:
There are three main hosting solutions that you could use
This solution focuses mainly on low cost.
VPS or dedicated server
Those solutions give you your own server, which you can freely configure. VPS give you your own virtual machine, working just like dedicated server, however resources of a physical machine are shared with other users.
With this solution, you need to have a sysadmin to handle your server, or your developers should provide you support.
This is an integrated environment that allows to better control scalability and adding new services. With this solution, you need to have a sysadmin to handle your server, or your developers should provide you support.
good processing power
you can host any technical solution
you can scale without limit by increasing processing power, or adding new machines
you have additional flexibility of using services which are easy to set up for complex systems
There are three three key aspects of SEO. The first one is technical SEO - how your website is built. Second one is content SEO - how the content on your site is structured and what is it’s value. The third one is link building - how your site is being referred to by other pages. Neglecting any of those parts lowers your rating.
This part should be taken care of fully by developers of the site. Most important points are:
This part should be taken care of by a person preparing content for your site. Main points are:
The more pages with good authority and good diversity link to your page, the better is your own authority and position in search results. Main points to improve your position here are: