So you would like to start a web application? How will you begin and what are the things to keep in mind?.. I have listed 10 things that you might want to look at before you jump into your new adventure.
1. Programming language
You can choose between multiple programming languages. The most famous ones are Java .Net and PHP. Often business people are not too interested in which language the application is build. However, this is quite an important choice for later when you are having success with the application. For example the future of a programming language, or the availability of engineers for that language will definitely affect your business. Imagine you let your technical guy build a system and find out that its some kind of rare language nobody is using anymore.. Well , with the three languages from above you will not have that problem. All are very popular and capable of almost everything. Technical people often have a total different discussion which is often more a religious discussion about which programming language is best and what language is build on top of the other, etc, etc. In the end, we need to look at the business requirement of the system and guarantee that future requirements can be made as well.
Just a small introduction to .Net, Java and PhP.
- Java is the open source language. Initiated by Sun which is now bought by Oracle. In Java there is a large movement around the Spring framework community. Spring (Interface21) was bought by VM Ware for 420 mln dollars in 2009.
- .Net is the Microsoft language. It is capable for almost all business functionalities you need.
-PHP is popular because it is an easy to learn language. Many people without a programming background can build simple applications.
2. The Supplier
What kind of applications did the supplier do before and does the supplier have customer recommendations on his website? Are you allowed to call customers to do a background check? What can you find on Google about the supplier? The background of the technical team and the owners of the company all matter. Does the company have body and can it guarantee the continuity of the knowledge of your application?
The supplier will sign a contract with you about the scope, delivery date and the payment. Keep in mind that you focus well on the Copy / intelectual property rights. You are the investor of the system and should end up with the IP rights of your own application. For each new request after the initial project you will also need to have sub-contracts that mention that the IP will be yours since that is required by law.
3. The infrastructure and security of your code
Make sure your supplier works with a versioning system. This is a system in which all iterations are recorded and if necessary its possible to go back in time to find back issues. A professional company works with a versioning system and a continuous build environment which makes sure that the latest version of your code is stable (all unit tests in the code are ok). Of course everything in the network should go over secured lines and the local computers should be password protected.
Also make sure you write in your contract that you are able to request your code (IP) at any time from the supplier. Even better is to let them send you periodically the code in case something strange happens. This is of course something that you should do when setting up the contract.
4. Functional design
The functional design is the document on which the supplier has to give estimations or give a proposal. The scope of this design will be guarded by the supplier to prevent any extra work to sneak in. Make sure that the requirements are written down in detail and that your assumptions of “this is common sense or logic” could be a risk for you since the supplier might see it as extra work since its not written down. It works like this: everything not included in a functional design is considered out of scope. The supplier will mention ” you also didn’t mention a rocket-ship in your functional design, so you expect us to build it as well?” Of course this is a very childish example, but just to stress that the contract will refer to a described scope.
Often a functional design will be accompanied by a wire frame. wire frames can be simple drawings, made in Excel, or done by more professional systems such as Axure.
Keep in mind to mention in your contract on which browser you want your application to be tested. Recommended is; Firefox, IE, Chrome and Safari. For each browser you can ask the 2 last versions to be tested. Keep in mind, that if you are just building an application for a specific group in your company that only uses Firefox, it could save you some money by telling the supplier to only focus on Firefox.
5. Process and communication system
Software suppliers should work with a process. In our company we work with Scrum. A process to keep things transparent for the project team and customer. Scrum also helps by splitting up one large project in milestones (called sprints). This way it is easier to keep the project in control. Scrum also facilitates in extra work, scope setting and delivery.
But only a methodology is not enough. A project management system is needed to keep track of all the activities of the team and all the communication such as questions, approvals, etc. The system keeps a history and prevents you for managing 5 different versions of excel spreadsheets or Word documents. We have build our own project management system since it also facilitates Scrum and lets the engineers easily write their time when closing down their tasks.
6. Server.
You will start on a small server in the beginning since you will use it for testing purposes only. But before you want to go live you really should consider in upgrading your server to make sure you can handle the new visitors in your application. You can just make a deal with your server provider. They can easily upgrade. The other thing is that when you want you application in the Cloud you can select various upgrades from the Amazon or Google cloud servers.
It could happen that your application becomes very big and you will need a clustered environment (multiple servers). Your software supplier will be able to inform you about this.
7. Performance
The performance of your system is often in the beginning very good. But as you add more data in it and functionalities increase as well, you might one day come to the conclusion that you want to do something to make your system faster. This is possible by using a larger server, but it is smarter to look for improvements in the code, do caching, etc. Keep in mind that performance is just a new bottleneck that needs to be killed. It is wise to keep this in the back of your mind and reserve some budget for that.
8. Security
Security is of course extremely important. Make sure you understand the kinds of security measures that are taken by your supplier. Security of data transfer, but also making the application only accessible for the people that have the rights to use it. There are very good security frameworks and encryption methods available. Just make sure that you know whats going on in your application. By testing you can also keep extra focus on the security of the application. Test different roles and the expected outcome for example. There are also specialised companies that can help you with testing your application.
9. Design and SEO
Many people expect the software company to make designs as well. Some software companies can do that, but keep in mind that the design of your commercial site and product is more a marketing skill than a software skill. There are many companies specialized in web design. It doesn’t have to be very expensive, and is definitely worth the investment. The moment the design company finishes the design. The deliverables are often Photoshop documents. The software company can take over these documents and implement them. If you are building an application for your internal company use only, you can ask the software company to make a simple corporate layout. This is always an easy solution.
SEO is yet another skill. You will need to promote your web application if you have a web application that targets customers on the web. You will need to keep in mind that the public pages are SEO friendly to attract more traffic to your website. If you are building an internal company application you will not have to worry about this when setting up the application.
10. Delivery
So when the moment has come that you are able to deliver, you will get a lot of feedback from your potential customers. Try to have a group of people available to help you with testing and communicate their ideas to you. Make sure you are not building functionalities that nobody wants to use in the end. This is exactly the reason why you should keep the milestone periods small and try to get feedback from as many people as possible.
Hopefully this post will help the people that are considering building a web application. It is a very cool experience, but there are many pitfalls on the way. Maybe by reading this post you will be able to prevent some trouble and move with full speed to your final goal.
Nice summary! This will help a lot if you want to avoid the pitfalls when dealing with software development.