Because possibilities are endless, but resources - limited. We need to use our brains and hearts to discover what matters most about your idea and get excited about it. To be effective, we cut it down into small pieces, and focus on one piece at a time.
What kind of software development process is best?
Creative & Iterative. Find out more
Our process starts with learning about your business history and your idea. You need to tell us what excites you about your project, and why it is needed on the market. It really helps if all the team members involved understand what’s unique about your idea and why it works.
Goal: Get excited about the idea
Competition makes us all better but how well do you know your competitors? We look at what they do best, what could be improved and how to differentiate your service. We can do this step together, but if you have completed this step by yourself, we will be eager to learn from your findings. This will help us to refine the idea, and prepare our team better.
Goal: Learn from the competition
Discovery should end with a plan of action for your project. Even if you just need a clearly defined set of functions, it’d be still helpful to know your thoughts on how the project should be executed, identifying the small and big goals.
Goal: List of milestones
Interview your potential users and customers to confirm their needs first-hand. Even quick, but open-minded research can reveal very surprising information.
Goal: Discover what users need
An interaction flow diagram describes what happens in your app. It’s essential to have this kind of diagram before any development is started, to make sure all people involved agree on the scope of the work. Changing the diagram is easy. Changing working software code is harder. Unless your design idea is set in stone, we will continually refine the diagram.
Goals of the interaction design:
A rough design of how the app looks, but without too much detail or styling. By looking at wireframes you will be able to quickly “see” your app. Changes at this stage are very much encouraged.
This is where the fun starts. Your users are presented with a click-through prototype and asked to perform various tasks. By gathering their feedback and observing their behaviour, we have a great chance to identify the strengths and weaknesses of the app before any code is written.
We cannot overemphasize how crucial this step is. While being still at a relatively early stage both calendar and budget-wise, we already collect very meaningful feedback on what your users are drawn to and if there are any usability issues or bottlenecks.
Any serious user experience concern recognized at this stage should be seen as success as it means saving future development time.
Goal: To give your users voice before software development is started (you will be surprised the amount of meaningful feedback you get this way)
One of the essential deliverables of the app design process are the graphical user interface visualisations. At Visla, we take great pride in delivering the user interface to be not only functional but also beautiful.
Our UI design process is detailed and doesn't leave much space for the developer’s imagination. And this is what developers love, as they can focus on what they’re really good at: coding.
Software developers receive a set of style guides for all UI elements in the app, so they don't have to improvise on what the author meant. All the while making sure your app looks professional and consistent.
To synchronize designers and developers and avoid miscommunication, we use specialized collaboration tools such as Zeplin, where developers can quickly understand the details of the design specifications and guidelines and even generate front-end code-snippets.
We develop software using the well known Scrum framework, which relies on daily 15-minute meetings (dailies) and bi-weekly planning meetings (sprints). The goal of each sprint planning meeting is to define what’s to be done. The essence of the process is that long-term goals are transformed into short-term, quickly achievable goals. This makes it much easier to control the progress and avoid time vortexes.
The progress of the app development is tracked in project management tools such as Trello, or Asana. They offer fast access to current status of various tasks in a form of a user friendly and lightweight Scrum board.
We use top modern technologies for web and mobile development. To keep our minds fresh we investigate new frameworks and languages every year.
Yet, as much as we love new things, we also have lot of trust in the good old “if it ain't broke don't fix it” approach. If your current system runs on old-school tools, we won’t be necessarily advocating for turning it upside down just for the sake of being modern. In the end these are all just means to an end, and not objects to worship (although some of us would probably disagree.)
Below you can find our typical tech stack for new projects:
We develop code according to object-oriented programming principles. It provides a clear modular structure of the application, and brings its implementation to a higher level of abstraction.
Object-oriented approach requires slight tech design effort, but pays off heavily. Well implemented, object oriented architecture is easier to maintain and faster to develop. It enforces a higher code integrity of the system, and in the longer run lowers the total cost of ownership.
We use strict MVC and MVVM design patterns to avoid the risk of ending up with spaghetti code. Data, interface and logic are clearly separated from each other which makes the code easy to maintain and enhance in the future.
You can always access the code we develop for you in the Git repository. We use version control tools such as Github, Bitbucket or Gitlab. The code is typically separated into few branches such as last stable branch, development branch, and branches for particular features or change requests.
We use strict MVC and MVVM design patterns to stay away from risk of ending up with spaghetti code. Data, interface, and logic is clearly separated from each other, what makes the code easy to maintain and enhance in the future.
The internal tests of the smallest units of the system, such as particular classes, functions and procedures. Each method in addition to its code is equipped with extra automated tests, so that each time anything in the code is changed, the tests are run to detect if it’s still in line with its specification.
Manual human tests to verify if the app meets the agreed requirements. These tests are run at various stages, typically: alpha and beta testing.
Tests performed in unfavorable conditions, such as bad internet connection, CPU or memory overload, power issues, etc.
Tests to determine maximum performance of the system e.g. in terms of maximum concurrent users or devices, maximum possible data transfer or minimum time to perform a task.
We automate the process of software release, so whenever an alpha or beta version is committed to the repository it is also automatically deployed on the testing server so your team can see new version immediately.
We deploy the software to a cloud-based infrastructure such as Amazon AWS or Leaseweb. We can also work with any server house of your choice. In case of the corporate world we often work with secure servers behind a VPN.
If your project requires heightened security measures, it won’t be news to us. We’ve been working for international airlines and banks, where data security and data sensitivity plays extremely important role.
No need to remember about the back-ups. If you choose to use Amazon AWS services for your server infrastructure, software images of your virtual machines will be automatically snapshot (Amazon EC2) and the database will be backed up on the fly (Amazon RDS).
We understand all too well that good customer support is a crucial part of the overall package. In all app development projects we offer a convenient maintenance and support service, where the Visla team is responsible for making sure your app runs seamlessly at all times. In case of any issues our team is available and supportive.