Well, the wisest answer is, “It depends”.
Every other essays and articles those which compare one stack after another is only useful when you know your requirements very well. If you’ve come here after stumbling to such articles, you probably know how it feels. I’ve stumbled across such articles a lot, and there are plethora of such articles in the web which are not really helpful to help you decide if you do not know what you need !
To be able to choose the right stack, you as a startup should know the problem you are trying to solve.
Let’s consider a practical example.
Harry is a restaurant owner, and he owns 20 such restaurants in his country operating in a chain. Now he needs to manage the entire business process through digital solutions that would save him a lot of time and also address bottlenecks in the workflow. Before he hires a software company, he should know his requirements, he should know what would make his business more efficient and manageable. He has seen many big restaurants go high-tech and operated efficiently, and similar solutions might be useful to his business too. He as a businessman may not know all the technical details of how to make his business more efficient and productive. He now needs someone who can translate his business requirements into technical specifications so that he could help a software company help him to get to a better draft of requirements in the first stage. Harry knows his business well, but he might also want to know what is possible and safer. Before you choose your tech-stack to address a business requirement, you should know the requirements very well.
Harry and his managers have come up with the following requirements for his restaurant chain,
1. The restaurant chain requires at least 6 Point of Sale (POS) systems in all of their restaurants. One at the Cashier’s Desk, two at the Kitchen, two at the bar, and one at the Inventory. This makes an at least of 120 POS systems to be available in all the restaurant chain.
2. The restaurant manager wants a centralized system from where he could monitor every activity in every single POS systems, or update the menu, delete the menu, disable a particular POS or enable, or send notifications. This access would be called a super user, let’s say. After this, general access to all the managers of respective restaurants are required, but one manager from one restaurants should not be able to access the system from another restaurant.
3. The restaurant also requires that the front-end for each location be different as they are located in different locations and they’d want to show the menu accordingly.
4. The Inventory management team wants to track all the inventories in all restaurants, and also wants to know every raw materials used or thrown away.
5. The financial advisors of the board have asked for a feature that would allow the POS system also act as a device to set their attendance in the restaurant through user identification by either passwords or facial recognition.
6. The restaurant also wants CCTV Cameras installed in its premises, and all of the streaming be available to the super-user, however, the managers from each restaurant would be only be able to monitor their location and not others.
7. In case of failure of the connection, the whole 20 locations could be affected, hence the restaurant wants a decentralized technology, which could serve locally if something goes wrong with the central connection, however, no single restaurant is allowed to touch the server without a written permission from the head office.
8. The managers also want a web-platform, and mobile applications for the restaurants and the customers, so that it is easy to order food from table, or update notifications to staffs about changes, their salary, their tips, or offers, and also discounts for regular clients and such.
These are the basic features Harry wanted in his restaurant after he took some help from his managers. This is a high level requirement. Now Harry chooses your company to build the system. Now what? Is the information enough for you to get started?
The answer is again, it depends. It would depend on the client budget. Are they willing to completely accept the first solution that you designed for them? I do not believe so. They would go through it, and then they would get an idea that your solution (although they were not exactly sure if they were looking for it) is somehow not to their expectations. Things like, the color should be different, the size of the window, or the font, or the layout of the front-end, or the user accessibility, and then comes the latency of the system and so on. Almost no client will okay your design the first time you submit them, it is the truth. What is your solution as a startup ? Take a deep breathe and ask more. You do not understand their requirements well enough to quote a price for the development.
- Will your client be ready to accept the first solution you provide them with a very minute changes in the system? If your client answers they are not sure, it is wise to include them in the design process if your client has not thought of a proper design. It is very wise to get all the designs done upfront, and then iterate for a while to give a feeling of a very good user-experience, and finally head for development. As a startup you already know about how long iterations might take, and quote accordingly. Some companies quote on per-hour basis, no matter what the work is, like 40 USD per hour per developer. Some companies quote the entire project at once in three parts, the best possible case (costs and time), the likely case and the worst-case scenario. Some companies quote on a monthly expenses, like 10,000 USD a month no matter how big the project is. It all depends on on the startup policy.
- Considering your client has accepted to take part in the Design process, you have to decide on how do you communicate with your clients. Is it going to be through E-mails, or something like Trello Board, or maybe collaborate on GitHub or JIRA. You would also want to make sure that these platforms you are using are secure. I prefer open source tools like Telegram to communicate with people, and E-mails but nothing sensitive through E-mails.
- Choosing your design tools can be very tricky, however, you have a fair idea on what tools you would need to choose. For example, I use Inkscape to design almost everything that if offers, like book covers, or website mock-ups, or mobile app screen mock-ups or a logo for a company. Anything static graphics works well with Inkscape, and the software is open source and free to use! Companies that can afford to buy expensive tools go for Adobe Products-Adobe Experience Design, Adobe Photoshop, and softwares like Axure RP which are very good, but sure has some learning curves and you as a startup will need to train your staffs to these tools or hire someone. Marvelapp offers collaborative design but it comes with a price too. Cage offers a free one-project collaboration ,but then it comes with a price at later stages.
- Now you have your design ready to roll on to production, you have many choices , but it really depends on your current team strength. If your team is a Nodejs Expert, switching to PHP Stack to handle this project does not make sense. You should stick with your stack, unless you find evidence that your client requirements are not going to be fulfilled by your expertise. For example, to build mobile apps, your client has not specified if they want you to build native applications separately, you can hire a react native developer for the app development, many big companies like facebook, instagram, skype have adopted this technology and this is pretty good.
For the Web part, it does not matter if you use any web stack available there, but since there will be lots of events in your client’s infrastructure, choosing NodeJS stack like MEAN, or MERN is a good choice. PHP does scale well too, slack uses PHP, even Facebook was run on LAMP stack for a couple of million users for some years. You could choose Erlang or Elixir as your back-end too ! Erlang powers famous App backends like those from Whatsapp and Wechat. Check this out to find out what companies are building their platforms on.
- A POS machine is a hardware device that varies in size, weight, and quality. You need to consider the requirements for the hardware part too. Will your client want printers plugged in every POS terminal ? It is possible, and mostly necessary, for example, to get the order-slip to the kitchen, or print bills for your customers after they swipe their cards off the payment device, bills are necessary, hence printers.
A POS machine can be either a standalone PC serving as the system or a touch-screen which is used as the input device to make orders. Mostly, it is wise to keep a keyboard interface with the POS machine as one might want to add some extra notes. If your client wants innovative solutions, you could also integrate a voice recognition feature in your POS so that you would not have to type everything, but it would depend on the language of the project and its voice-recognition libraries available on the web.
As a startup, you might want to consider different OEM vendors for POS Design.
The above picture is an example of such a POS set-up. The brand in picture is by no way endorsed by this article. From the picture, you can see that on the left, there is a barc-code scanner, and there’s a thermal printer on the right, while in the center there are two touch-screens and a POS Cash-box. Your client should have an idea of the POS screen, on how big they want it, and its specifications, like if they want the best display out there in the market or they would not mind with any brand. It would be up to your company to suggest them some good brands, as your company would probably be involved in maintaining the system for years for them, or at least for a few years after installation although you would be charging them annual maintenance charges, aka AMC. Selecting good hardware would definitely result in an increased quote, but your client would probably recognize the quality of the devices you are selecting. It is always wise to ask for your client’s budget in the design phase to know exactly how much you can choose to spend on certain things beyond the required functionality. Functionality versus quality can stretch pretty far.
After you have decided on the POS specs, what operating systems would you choose to run your POS Application, would you be hosting a Windows System, or a Linux, or a Macintosh, or an Android maybe! Anything is possible there. Now, if your team is capable of building Windows Apps for Desktop, you should definitely choose to install a Windows System on the POS, if your team is expert in Android Systems, an android system might make up a good choice. I would either choose Linux ( Ubuntu ) or Windows systems. Windows systems are prone to cyber-attacks, but so do the Linux Systems, nevertheless, Linux systems are far more efficient than Windows Systems if you are deploying servers.
6. Security plays a big role in a company’s image. There should be a way to trust a company’s infrastructure by the customers. How do your clients know that your card-machines are not bugged, or are of good standards, or the website. Here comes compliance. Many countries have several levels of compliance guidelines to follow on how to operate a business that deals with sensitive customer data like credit-card, debit-cards, emails etc. The electronics for payment processing have certain standards to follow in the Europe and the US, or Australia. Your digital platform should be compliant to various laws and financial regulations as per your Client’s location. For this, you would need to consult a lawyer to figure out what kind of data policy and regulations prevail. In Europe for example, you need to know about the GDPR, which is already effective in Europe. Failing to comply could jeopardize your business operation or lead to a hefty fine. Check this out! to see the law into action! About information security, your company needs to make sure that your platform is as secure as possible although there are numerous flaws discovered every day, it is wise to put up security measure around your digital platform. If you are hosting your client’s systems in a dedicated server make sure you have hired a good server admin to configure your systems well, and also a security professional to prevent breaches to some extent. Your code alone could be well flawed, let alone the numerous security holes in the stack of your choice. It is therefore a good choice to hire expert developers who code with security on mind, this might take a while for the whole development process but as the old proverb goes, a stitch in time saves nice is absolutely true. No tech stack is bullet-proof. Hence, it is always wise to quote your client from this aspect too. For a good security, I recommend Linux Systems than Microsoft Systems. Below is a good estimate of Windows 7 system vulnerabilities discovered as of 2019. There were 162 vulnerabilities found in 2019 alone! This totals to 1195 since 2009, and that is massive for systems that are not updated.
7. Once you have build your platform, you would need to test your platform and document it. Consider this in the quote too, as it is one of the important steps in finishing up a project. There is no hard rule on how to test your platform, and how to document, the motive is to save your time in future if something unexpected comes up. In fact, documentation is very important it saves your time in the long run.
8. The new block of trust
Now you know that selecting a Technology stack is dependent on your client’s needs. You can build a website on Wix does not mean that building websites from scratch in PHP or WordPress has gone obsolete. It all depends on the situation of your client. If your clients wants a quick and a cheap solution, do pick some free themes, tweak them a little and make some sales. That is beneficial both for you and your client. If your client is design conscious, needs a tailored solution for their business, then starting from scratch is not a bad idea for you, as long as your clients budgets meet your expectations.
I might have missed many things, let me know and I’ll add more. 🙂
Connect me on Telegram : satishluintel