Wie entstehen Apps?

Was eine App ist, weiß mittlerweile jeder. Doch wie entstehen Apps? Kann wirklich jeder Apps bauen? Lasst uns einen Blick hinter die Kulisse werfen.

Apps sind nichts anderes als Computer-Programme. Sie können klein aber auch richtig komplex sein. Das was auf den ersten Blick aus der Nutzersicht einfach erscheinen mag, muss nicht unbedingt so unter der Haube sein. Im Gegenteil, richtig professionelle Apps sind häufig schlicht im Design, nutzerfreudlich, so dass die Komplexität sich nicht sofort erkennen lässt.

Unabhängig von der Art der App, ob sie im Auftrag oder aus eigenem Interesse entwickelt wird, sieht der Prozess immer ähnlich aus. Zuerst werden Use-Cases definiert, i.e. das nach außen sichtbare Verhalten der App aus Sicht der Nutzer. Mit anderen Worten aus einer App-Idee wird eine konkrete Vorstellung, was man mit der App alles machen kann. Die ganz grobe Skizze wird  in einzelne funktionale Einheiten/Komponente aufgebrochen, welche später auch umgesetzt werden.

Im zweiten Schritt wird geschaut, welche Technologien für die Umsetzung genommen werden. Die Wahl der Technologien hängt stark von Anforderungen ab. Entscheidend dabei sind Fragen, soll es eine App für nur ein Platform z.B. iOS werden oder müssen mehrere Platformen unterstützt werden, wie viele Resources stehen zur Verfügung, wie viel Zeit steht zur Verfügung etc.

Die Umsetzung an sich ist ziemlich staightforward. Es können sich natürlich unterwegs unvorhersehbare technische Schwierigkeiten ergeben, aber meistens läßt sich dieser Abschnitt des Prozesses gut planen.

Anschließend kommt Testing und aufregender Moment des Ausrollens der App. Obwohl die Prozesskette relativ einfach ist, steck der Teufel im Detail. Über einzelne Schritte im App-Development Prozess kann man lange Artikel schreiben. Das Ziel dieses Postings ist aber erst mal einen generellen Eindruck über die App-Entwicklung zu vermitteln. Wer sich fürs Thema App-Entstehung mehr interessiert, kann sich gerne die Postings zu PolterApp und Cheat-Sheets App durchlesen. Das sind zwei Beispiele aus der Praxis mit konkreten Fragestellungen und konkreten Lösungsansätzen.

Progressive Web Apps

Last week I had a pleasant acquaintance with Adam Giemza, head of solution architecture and security at DB Schenker AG. He asked me about Progressive web and my opinion to it. Frankly speaking, I had no opinion at all, because I’m specialized more on native apps for iOS and Android. Of course, hybrid apps, mobile first approach, responsive design are the things I heard of and had even a bit experience with them. But what are Progressive web apps? I began to read about it.

The term “progressive web” appeared 2015  to describe web apps taking advantage of features supported by modern browsers, including Service Workers and Web App Manifests. Progressive web apps are:

  • Progressive – Work for every user, regardless of browser choice because they’re built with progressive enhancement as a core tenet.
  • Responsive – Fit any form factor: desktop, mobile, tablet, or forms yet to emerge.
  • Connectivity independent – Service workers allow work offline, or on low quality networks.
  • App-like – Feel like an app to the user with app-style interactions and navigation.
  • Fresh – Always up-to-date thanks to the service worker update process.
  • Safe – Served via HTTPS to prevent snooping and ensure content hasn’t been tampered with.
  • Discoverable – Are identifiable as “applications” thanks to W3C manifests and service worker registration scope allowing search engines to find them.
  • Re-engageable – Make re-engagement easy through features like push notifications.
  • Installable – Allow users to “keep” apps they find most useful on their home screen without the hassle of an app store.
  • Linkable – Easily shared via a URL and do not require complex installation.

As far as I understand the main difference to the hybrid apps, e.g. based on Cordova is that progressive web apps are not wrapped into some mobile application, but are more like a website. It is the web browser features, i.e. service worker and manifest which make these web application look and feel like native apps. And in opposite, the difference to a responsive web site is that progressive web apps can be used offline and look more “native”.

The concept of progressive web apps is very interesting. It is on one hand the next step towards cross platform development. On the other hand it is the step towards app distribution without app stores. I can think of many use cases where a progressive app has more advantages over native implementation for multiple platforms. Some examples of progressive web apps can be found here.

 

“App Programmierer” auf Ebay Kleinanzeigen

Auf Ebay Kleinanzeigen wird man fündig. Gebrauchte Lampen, Fernseher, Spielzeuge, Gartenmöbel und auch “App Programmierer”. Die letzteren werden zwar selten angeboten, dafür aber gerne gesucht.

Ich habe eine sehr gute Idee für eine App für Smartphones und würde diese gerne umsetzen

Ich bin auf der Suche nach engagierten und couragierten Programmierer

Ich brauche eine App, wo man mit Geld verdienen kann

Das sind nur ein Paar Anzeigen, die in Essen im Umkreis von 10 km veröffentlicht sind. Um Gesuche besonders attraktiv zu machen, werden Berge aus Gold versprochen, allerdings erst wenn sich die Projekte rentieren. Ein User mit dem Namen “Eva” möchte gerne auch ein oder mehrere Entwickler für die Umsetzung seine Ideen gewinnen. Anteile am Startup, Mitbestimmungsrecht und andere irdische Güter wären dabei denkbar. Davor hat Eva 15 andere Anzeigen veröffentlicht: Alufelgen, hochwertigen Schubladenschrank, Couchtisch… warum eigentlich nicht was anderes probieren?

 

Popular programming languages 2016

Every year various programming communities try to create and to analyze the rating of existing programming languages. Just to mention few of them:  TIOBEPYPLIEEE etc. These ratings are based on different approaches, e.g. popularity of tutorials for particular programming languages, data analysis at GitHub and StackOverflow or even analysis of messages in Twitter.

These ratings might help when making a decision about what programming language should be adopted when starting to build a new software system. Also they can be used by students or starting programmers to get a better feeling of what skills are mostly asked. Of course, every programming language despite of its rating, has a particular goal. It is designed to fulfill certain tasks. Even if one language is much more “popular” than some other, it does always not mean, that it is better. More frequently one programming language cannot even be substituted by some other due to system requirements. For example, it is not possible to write iOS apps in JAVA and Web browser can only execute JavaScript and no C++ code. Like every plumbing requires its own tools, so every development depends on the current requirements.

So what are the most popular languages of the year 2016? First place is traditionally JAVA. Also C and C++ stay at the top of all the ratings. C# has its stable high position as well. Popular script languages are PHP, Python and JavaScript. Functional programming languages like R become more and more popular.

Merry Christmas and a Happy New Year!

It’s the time of candles, cakes, songs, presents and laughter. Before we all dive into the joy of Christmas holidays, I want to say “thank you” to all those who actively supported me this yeah by development of the PolterApp. We worked together and we reached more than expected. What we made so far is a good base for further development and another victories.

I wish you all a Merry Christmas and a Happy New Yeah!

New look, new goals

field-viewI gave up my private web site i-gorod.org and now moved my internet presence to a new domain. It is not only the domain name that was changed, but also the concept. i-gorod was once a chat for the friends of mine. Afterwards I made it to a developer blog and never found time to full it with content.

igoMobile is in opposite my business card. On one hand it enlightens the projects I work on. On the other hand it will help me to maintain the contacts, extend my network and find new challenges.