Intro
With the appearance of Covid, many offline small businesses started to move Online, but what business owners are starting to realize is that they are now in the IT business and that success depends on a different set of rules that those offline, and their old abilities don’t help them very much.
This article is a bit long, if you want only the conclusions you can jump at the bottom of the page.
I will try to explain the problem by telling you the story of Bob…
The story of Bob
Bob is in the teaching business. He owns a business that provides different courses to people. So he has rented a location, created several different classrooms, hired some teachers, and everything is good.
He is still in the small business category, is not rich yet, but the business provides him an amount of money for him and his family to live a normal life.
Now the corona comes and Bob is out of business, all teaching activities are closed and moved online. The classrooms are empty but he still has to pay rent if he wants to keep the space. He also invested a lot of money in space decoration, all those expenses are gone if he decides to not pay the rent anymore. He also is forced to fire the teachers because he is not doing any profit now.
There is not much left for Bob, if he doesn’t adapt, he is over. He needs to find a new job…. After some thoughts, Bob decides that he wants to fight for this business, and decides to move his courses online.
Before the teaching business, Bob was an economist by profession, he doesn’t know anything about Software, except for the Excel and Office suite that he has used. Bob can’t afford to hire a company to build a professional solution. Bob searches on the internet for already built solutions but they seem too expensive for him. So Bob speaks to a friend who knows a friend who knows someone who is a programmer and knows how to build a website.
That’s how Bob meets Jim. Jim is a student who is studying computer science. Jim is at the beginning of his career as a software developer, he is excited about this opportunity and has built in his life around two or three small websites.
So Bob and Jim agree on a price for the website, they gather some initial requirements and they start working. Jim starts to work and has more and more questions… Bob answers them and Jim implements the business logic.
After a month or so Jim presents a draft version to Bob. Bob likes it but sees some things that can be different, so Jim modifies again the website… and this cycle continues.
Bob also realized that in order to change a text, he needs to pay Jim to change it. So he asked Jim to build also an administration area for the website. Also, Bob had customers so he wanted a Customer relationship management software. He speaks with Jim and establishes the requirement for the CRM. Jim is happy to help.
In the end, after a couple of months Bob has:
- A website (with a custom framework made by Jim)
- An administration panel for the website (with a custom framework made by Jim)
- A CRM (with a custom framework made by Jim)
- A dropbox account for hosting videos. They are using the Dropbox showcase feature. The solution was proposed by Jim, who did not know how to build a video hosting system.
New customers were coming, and everything was working fine for a couple of weeks. Bob had invested a lot of his money in this software system but was happy that his business was still working. “In one year I will recover all the money invested and start to make a profit” — He thought.
One last thing was missing although… Online payment! Until now the users paid by bank transfer. They sent an email that has paid, and Bob verified his bank account, if money where received, Bob gave them access to the Dropbox showcase for that particular course. But more and more users were complaining about the payment. So Bob decides to call Jim.
Jim agrees to integrate into the website an online payment system, but they didn’t discuss the price. Bob and Jim were like friends now, they had some months of collaboration, and Bob kinds of had an idea how much things costs. Jim said to Bob that he can deliver in one week. One week passed by and Jim says he needs more time. Two weeks passed and online payment was not ready. A month passed by and the feature was not ready yet. Jim says to Bob that is not so easy. After one month and two weeks, Jims says that the integration is ready. Bob was happy, and asks Jim for a price… Jim comes up with a price that surprises Bob. The price was way too high for Bob’s budget and compared with other prices that Bob has already paid.
So Bob with Jim fight … and the result is that Jim will not work anymore for Bob.
A week passes by and Bob sees that there were some mistakes in the invoices. The invoice numbering was not sequential was 1 3 5 7 … this is a huge problem in the accountancy.
Another problem was that Dropbox announced that they will close the Showcase feature. This was for Bob the core of the business, without a place for the users to see the courses, the website, and CRM was useless.
Those problems need to be solved quickly.
So Bob decides to hire a new developer, he found Mike online. Mike was an experienced developer and asked Bob to take a look at the code, and then offer him a price. For him to take look he needed to start the project locally on his PC. So Bob provided him a zip file that Jim had provided to him. Mike unzips, imports the database data, and takes a look at the code.
Pretty fast Mike observes that things were badly messed up :
- They did not have a test database. Bob has given him the Production database, with more than 10 000 customers with real data, their name, address, email, phone number, bank details, payments … etc…
- The code was very messy, many files were over 5000 lines of code.
- More than half of the code was commented out. There were comments all over the place.
- Security was missing. Bank passwords were hard-coded in the source code. The passwords were not encrypted in DB and the site was very vulnerable to hacking attacks.
- Code duplication was sky rocking… The same query was copy/paste in over 25 files. If you wanted to change it, you need to change it in 25 places.
- Debugging was hell…
So Mike tells Bob all those things and says that he don’t want to work on such a project.
Bobs try to find other developers but get the same response. No one is willing to work on such a messy project. If someone is willing to work he asks for a lot of money.
So Bob is stuck. He has new customers every day, but the software is not helping him… If he doesn’t find a solution fast, he may lose his customers.
Bob has realized that running an IT business is very different from what he was used to in his offline teaching business. He realizes that having someone project-based to work for him is not a solution. People will take his money, take shortcuts to solve his current problem, but add complexity to the system, make it harder to understand, maintain, more buggy and in the future will cause him more problems. Having someone rewrite the current system is not an option either, no one guarantees him that the new guy will not make a mess again.
Bob realized that the only option is to find a good programmer and share the business with him. Only this way the programmer will do what is good for Bob’s business because is also his business. Will work extra hours for free, because in the end is his business also. This programmer will rewrite the system to best serve the business, with clean code, security, and best user experience.
Conclusions
If you are an business owner without a technical background, and you just started an online business, you need to find an good programmer and make him your business partner.
You may have a good business idea, but if your software system doesn’t support it, the idea is worth nothing. What users are experiencing is the implementation of that business idea. And if the implementation is not good, the user experience will be not good, therefore you will lose your users.
Some practical advice for you:
- Find a good programmer and make him your business partner.
- If you decide to hire developers project-based, make sure you also hire someone who will evaluate what the developer has delivered: code quality, security, extensibility, testability, reliability, etc…
- Put the developer who will build the system to build technical documentation about the system. How it works, how is build, how is deployed, etc…
- Don’t build the core of your business on external system features. Ex: Dropbox Showcase, when Dropbox will close the feature, it will close also your business.
Some technical advice:
- Never share the production database with the developers! Preferably you need to have a test environment with a test database.
- Use a versioning system like git, svn, etc… for the code. Check https://github.com/, https://bitbucket.org/product/. Don’t distribute code over email by zip.
- Have all passwords encrypted in the database! Also, make sure you are not vulnerable to SLQ injection.
- Have all passwords that cannot be encrypted, in a configuration file and not hard-coded all over the place. Also don’t version this configuration file.
- Don’t let the developer reinvent the wheel by creating a custom framework, ask them to use a well known existing framework.
Ex: symfony in PHP, spring in Java, etc…
Last modified: September 15, 2024