Many used bulletin boards and therefore know how convenient it is. In one service thousands of offers of various subjects are collected. Used goods, freelance services, etc. You can choose the appropriate product or performer, or you can offer something to visitors to the site. At the same time, the service acts as an intermediary and provides all the technical details of the interaction.
Thus, the service saves you time and money, especially if you are not a consumer, but a seller of goods or services. The cost of creating, promoting and supporting even an elementary landing page will cost you at least several hundred dollars. If you need some specific functionality for the site… The amounts will be substantial because the services of programmers and SEO-specialists are expensive. Creating an account on a service like Amazon doesn’t cost either anything or a penny.
It’s not surprising that such sites, by the way, are usually called “aggregators”, are becoming more and more popular every year. In some niches, the entire top of search results is clogged with aggregators, rather than sites of specific companies. You use such services almost every day, just probably did not think much about it.
So my customers decided to implement such a product by creating the aggregator of notaries notafast.ru
Website development began in early 2017. The task was entrusted to the web studio and it slowly did its job. From my point of view, the result wasn’t very high quality, but that was also partially because of the client changing his mind and demands in the process multiple times.
In general, among many customers, there is an opinion that since the services of web studios are more expensive than the services of freelancers, the quality of work will be better. Unfortunately, this is not always the case. It depends solely on the specific web-studio and the specific performer. Most web studios are focused on “riveting” landing pages. One of the ready-made templates is selected and filled with customer data. You don’t even need a programmer for this – just about everyone who knows how to use a computer and has some basic understanding of the layout will be able to do this.
Do not think that I want to say that studios are evil, and freelancers will do everything correctly. Among my freedom-loving colleagues, there are a lot of under-education and irresponsible personalities. But think three times before ordering the development of a complex application from a web studio. Do not get fooled by the “make a website for $ 200” ad. They will make it, of course, but that will be a template landing page. Companies engaged in serious applications, measure the budget of a project in the tens of thousands of dollars. And this is justified because a complex project will take hundreds of man-hours of highly qualified, and therefore expensive specialists.
One way or another, something didn’t deal between my customer and that studio. The aggregator of notaries went into work, but “crude”, with a heap of defects and imperfections.
Through my brother, who once worked with one of the co-founders of the project, the site owners contacted me and asked me to make a couple of additional services.
Expanding the site’s capabilities is certainly great, but first I had to figure out what the fellow programmers from the studio had done.
Let’s start with the good – the site is written on the Laravel framework so beloved by me, though on a very old version 5.4. SASS is used to work with CSS, which is also not bad. jQuery with a couple of plugins and somewhat old-fashioned in my opinion Gulp. The site is hosted on a VDS, which significantly expands opportunities compared to shared hosting, though I had to beg for access details to it for about a week before I was able to get started. Thanks to the framework, the code is more or less structured, which significantly speeds up the process of entering a new person into the project.
On this, the pros end. The code immediately shows that several people worked on the site and not all of them bothered to read the documentation for the framework. Some queries to the database hit me to the depths of nature, for example, such code:
Controllers of several thousand lines of code. There is no optimization of database queries at all (on one page the number of queries reached 570). For layout, floats are used, which are morally obsolete 5 years, if not 10 years ago. There is no Bootstrap either, and everything is crooked on small screens. SEO is not configured at all. Realizing that there are many flaws here, I immediately created a task board in Trello and began to create a card for each such misunderstanding. There was a couple of dozen of them.
Customers did not appreciate my impulse to fix the flaws, but they liked the idea of the task board, and then we worked through it. I broke down a complex task into subtasks, created a separate card for each and several times clarified whether the customer and I understood each other correctly. This is a very tedious and not the most pleasant organizational part, but absolutely necessary so as not to work in vain, incorrectly deciphering the wishes of the customer. By the way, I picked up just such a word for a reason))
So, the first block of work was the addition to the site of a new service under the loud name “Submit documents online”. Its essence was as follows:
- a site visitor places an order for any notarial action,
- fills in all the necessary data,
- waiting for what notaries to respond to this order,
- selects notary,
- the notary receives all the necessary information so that he can prepare the necessary documents in advance,
- at the agreed time, the client comes, and without queues and long waiting, he receives the service.
In turn, notaries receive notifications when a client in their city or district places such an order. If desired, respond to it. And if the client chooses this notary, the data necessary for the execution of documents are sent to the notary.
The customer also hoped to attract new notaries to the site through these orders, of which there are not so many on the aggregator yet.
Here we already get some kind of freelancers exchange. Honestly, I didn’t like the idea, but since the client asked, it’s done. The main difficulty is a huge number of various notarial actions, for each of which the client needs to provide a different set of information. Riveting these forms will be tormented, that’s where the copying skills of developers from web studios could be useful))
By the way, why I think the very idea of this service is not very good:
- An adequate client who really needs some kind of notarial service will choose a convenient office and sign up for a particular notary, and will not sit and wait – who will respond to his order.
- Notaries are not freelancers. If he or she rents an office in a good location and has a good reputation, there will be no shortage of customers. Such a notary will not look at virtual orders, wait for him to be selected, fill out documents in advance. Especially given the way people do not show up at the appointed time, or they cancel their plans, without bothering to let others know about it.
But the opportunity to receive by appointment all the data in electronic form, copy it with the magic key combination Ctrl + c, Ctrl + v, is really convenient. However, at that time I still did not know the customer well enough, and therefore I kept my opinion to myself and did what he asked.
The next important task was to convert the record page to a notary public, making it something like a personal page. There was also a proposal to enable any notary to set a beautiful address for his page on the site, but to make this service paid. A dispute arose between the owners of the site about this, and I intervened, offering to sell not just beautiful addresses, but a whole range of services to notaries. It’s doubtful that many will want to pay money just to boast a business card with a beautiful address on this site. But if premium access allows you to create, in fact, your own mini-site… Everyone liked my proposal and I started to develop it.
The first thing I had to do was optimize the database queries. I already wrote above that to display some pages, 570 database queries were required. This page was just the one that I had to rework, adding a bunch of additional functions there. I had to work hard.
Any sane PHP developer knows that an application should be divided into at least three levels:
- View – that is, displaying data to the end-user
- Model – the main business logic of an application, saving, retrieving data, etc.
- Controller is the link between the Model and View levels. Responding to user requests interacts with the Model and returns the desired View or data.
This pattern is called MVC (Model-View-Controller) and although it’s not the only way to organize the software architecture, it’s the most popular and easiest to learn. Nevertheless, there are a lot of lazy (or under-educated) programmers who stubbornly mix the levels, making database queries directly from the View. The result is what is known by the term spaghetti code. For it’s very difficult to work with such code.
This is exactly what I came across. So it took me almost four hours to reduce the number of requests from 570 to 145… It’s a very ungrateful kind of work because it’s entirely on the backend and isn’t something visual – and hence it’s hard to explain its value to clients and convince them to invest in fixing this, even though it definitely pays off in the long run. So I had to overcome the desire to reduce the number of requests three times and move on.
I won’t bore you with the details, the story is already too long. The result, from the point of view of the end-user, can be evaluated on the product advertising page. I also had to work with the admin panel, set up interaction with Robokassa, add some additional features to free notary accounts, do basic SEO optimization. And, of course, little by little to correct the heavy legacy of previous developers, to eliminate the identified bugs.
Although this section of my site is called “Completed works”, work on this site is still plenty. But since there was a short break, I decided to write down the passed stages.
Thank you for your attention!