Recently I had a discussion with a colleague about developing Web Applications. We ended up mainly into two questions.
- Which tools / frameworks shall I use for which applications?
- Which project methodology should I use?
Tools / Frameworks
You have to strictly differentiate between intranet/extranet applications on the one hand and internet applications on the other hand.
You have to differentiate between Business or Business-like applications on the one hand and Fun applications on the other hand.
I think I don’t have to describe the term Business application. Have a look at the Fiori Apps library for this. Business-like applications are applications that a user uses to organize his life, be it managing his personal insurance contracts, sell personal gadgets on an auction platform, manage a personal todo list or managing a shopping list.
A fun application is an application that users only use to have fun like games of any kind, sharing photos, communicating with friends about the next party etc.
Frameworks for different Application Types
In his opinion all internet applications, that are applications which are made for a private and/or (semi)business user group and are accessible via the internet, must not be developed with the new SAP UI technologies (Cloud, Fiori) cause those applications are not fancy and sexy.
He wants to develop Internet Applications with Twitter Bootstrap and design the UX aka UI layout, design and behaviour for every application individually.
Extranet / Intranet applications can, so his argumentation, be developed with SAPUI5 / OpenUI5 especially if you are living in a SAP business environment.
I think that SAPUI5 / OpenUI5 is suitable for all business-like applications. But of course also Twitter Bootstrap with AngularJS is equally suitable. I agree and have to admit that UI5 with its current theming is not really sexy but if I have a look at the Fiori 2.0 previews I’m convinced that SAP will fill the little existing gap to the internet.
For me more important than the question which technical framework to use is the question: Do I use an existing design guideline or do I reinvent one for each application?
In my opinion we cannot afford to create a new design guideline for each application in todays fast changing world. Cause we have to be able to develop and adjust applications in very short time we should reuse the work others already did and shared with us on the internet. In this respect I know the two guidelines Material Design by Google and Fiori Design Guideline by SAP. If you have a look at both and the applications that are written utilizing them you will see that they are not that far away from each other.
Examples for Material Design are:
- Google Inbox
- Google Account Management
Examples for Fiori Design Guideline are
- All Fiori Apps like the ones of the Fiori Apps library. Have a look at the Fiori Demo Cloud Edition.
As already mentioned both guidelines are not that far away from each other and I believe that they will grow together more in the future cause the principles and objectives are the same: Develop web applications that are easy to use for everyone, that are reduced to the max and that have a high recognition value.
Days in which internet applications had to be spectacular by including a lot of information on one page, showing complex graphics or enclosing a lot of advertisement are gone. Users want to be able to achieve their tasks very fast to have time for other things in their non virtual world. Internet changed from a playground to a place where we work, collaborate and communicate.
Our web applications have to meet these requirements.
Material Design vs. Fiori Design Guideline
If you agree with me that a guideline is more important than the tools / frameworks we have to ask: Which guideline is the best?
I think there is no general answer to this question. If you choose Material design you are closer to Google, Twitter Bootstrap and AngularJS as technical implementation frameworks. If you choose Fiori Design Guideline you are tied to SAPUI5 / OpenUI5 and Fiori.
Whatever guideline you decide to use you have to be aware that this is an important decision for the future of your company / business. You have to be aware of the fact that changing from one guideline to another is not done in days or weeks. Of course you can write an application with the one or the other tools within this time even if you don’t have any experience with them, but to get the most out of them and produce really good applications that have a sustainable architecture, are maintainable, easy to expand and are future ready you have to dive deep into the eco system around the tools and frameworks. This is not achieved in days or weeks. It takes much more time.
After I had a 4-6 weeks look at AngularJS 1.0 (material design wasn’t born at that time) I decided to move to SAPUI5 with Fiori and Fiori Design Guideline for my personal business-like applications cause in my customer projects I also use these frameworks. This decision is more than two years ago and I feel totally fine and comfortable with the tools and the eco system around it. But at the other side I’m learning new things and features every day.
Of course your decision may lead you to the Google way or another that I didn’t mention here but don’t try to sit on more than one chair at the same time unless you have a big company and can build several separate departments.
Project Procedure Model (Methodology)
The next question in our discussion was: How do we develop a new application?
We have to write a business blueprint first, in parallel check the demand for the application, create a basic prototype and after that we have to convince the investors to give us money for it. In other words we have to create a business plan supported by a prototype to get money for our project. Depending on the project we need several weeks or months with a few FTEs for this.
After we got the money for the project we start with an agile development process.
We have to be convinced of our idea, write down a very basic 1-2 page fact sheet with the main features of the planned product, transfer the features into a basic roadmap with several releases, create a very basic prototype with a prototyping tool that gives just an impression of what we want to realize and then go to the investors and try to convince them to give us money.
After we got the money to start our work we should setup an appropriate project environment, dive into the details of the first milestone, create a more expressive prototype, write more details into our backlog, create sprints and come back with this to the investors to get more money for the next steps.
If we also cleared that hurdle we start developing the first sprint and in parallel begin to plan the next one. But we do it step by step and it should be always possible to change the direction of the project into either this or that direction. Of course we have to discuss each direction change with the investors.
The definition of Agile Development
The question that arises from the above statements is: What is agile development and when does it start?
I think that my colleague does not a holistic agile thinking. He wants to develop the application with an agile approach but he does not want to change project management to agility. I admit that the latter is much more difficult than the first. People of a development team are used to fast technology changes and therefore are able and willing to adapt new methodologies. Investors often are old school. They have learned to minimize the risk of an investment before invest anything. Therefore they want to see a complete business plan with which they can estimate the risks. If they don’t work in this way they may loose their jobs or at least loose their yearly bonus.
I think that if a company / project writes the word AGILE on its papers they have to be agile in any respect not only inside the development process/team. If projects are realized in that way there is a benefit for all involved parties.
- The investors don’t go a too high risk cause they invest only little money at the beginning.
- The investors can stop their investment at each time if they think the performance of the project is not satisfactory or in the meantime there is no more necessity for the product.
- The developers can be creative in spite of spending time on creating business plans.
- Investors and developers get a result much earlier.
- Investors and developers can steer the direction of the project into a new more effective and appropriate direction easily.
- Cause there is a much earlier result, customers can influence the further features with their feedback.
- Customers get a strong relationship to the product because of their engagement into the planning process.
At this point I would like to mention that SAP’s new products are developed in this agile way and as we all can see when we e.g. look at the speed with which new features are introduced in HCP and Fiori we have to admit that it really works.
SAP develops their products by leveraging the design thinking process with great prototyping tools, involves it’s customers by running CEI projects and develops as well as evolves their products in small chunks. This helps them to adjust the roadmap and features for their products in an agile way.
No matter which development solution you choose for your application but you should decide it beforehand very carefully and if you have decided to use an approach you should keep using it for more than just one project. Only if you really use a methodology, product, framework, tool in depth and over a longer time you get the best out of it. Don’t switch from one approach to another with each new project and don’t reinvent the wheel each time. Build on the results big companies like Google, SAP and others have worked out in their R&D departments.
If you use an agile methodology use it within the complete project resp. inside all involved departments of your company.
At the end I would kindly ask you to share your view on this discussion in the comments. I’m looking forward to a great exchange of ideas.