Free Docker Course
Docker tutorial for beginners through examples - a step by step tutorial
1. Docker tutorial for beginners through examples - a step by step tutorial
Dockerfile tutorial by example - basics and best practices [2018]
2. Dockerfile tutorial by example - basics and best practices [2018]
What is Docker and what is Docker used for? [2018 tutorial]
3. What is Docker and what is Docker used for? [2018 tutorial]
Docker containers vs VMs. What is the difference?
4. Docker containers vs VMs. What is the difference?
Docker compose tutorial for beginners by example [all you need to know]
5. Docker compose tutorial for beginners by example [all you need to know]
Docker Swarm Tutorial | Code Along | Zero to Hero under 1 Hour
6. Docker Swarm Tutorial | Code Along | Zero to Hero under 1 Hour
Docker logs - Container, Compose, Swarm and Engine Logs
7. Docker logs - Container, Compose, Swarm and Engine Logs
Docker prune explained - usage and examples
8. Docker prune explained - usage and examples

What to Prototype in 2020 to be on Top of Your Game?

0,What to Prototype in 2020 and be on Top of Your Game?

Introduction

I make this report for tech professionals, enthusiasts, students and anyone who wants to see what technologies real-life projects are using. My goal is to help you (and me) to find those new tech components, libraries, frameworks that are worth your time reading, experimenting and prototyping.

I use Stackoverflow data to find out what’s trending and set up a list of what I want to prototype and learn during the year. I’m sharing my findings with you now, maybe you spot a new skill to build, or create a prototype that will change your life.

The report is based on Stackoverflow data, so you can assume it’s pretty close to reality. It tells you about the technologies that real-life teams are discussing in Stackoverflow questions and answers.

The backing data is a dump of all Stackoverflow questions and answers. Stackoverflow releases their data every quarter and it’s available in the internet archives at https://archive.org/download/stackexchange.

I download the Stackoverflow files every year and add them to a database on an external SSD that I labeled DWH. Having multiple archives at hand lets me create trends that would not be possible with one dump only. Everything you read here is the result of tedious data crunching with Emacs Org Mode, Python and Postgres.

Every Stackoverflow question has one or more tags assigned to them. I start from the list of top tags on Stackoverflow and dig deeper from there. You can see the top tags in the table below.

# tag # of questions
1 javascript 1,909,662
2 java 1,613,332
3 c# 1,363,768
4 php 1,320,075
5 python 1,297,831
6 android 1,237,204
7 jquery 971,432
8 html 863,524
9 c++ 644,544
10 ios 615,326

img

You can see the number of questions with the top tags since 2008, when Stackoverflow started in the table above. The graph shows the number of monthly questions created with the top tags as the percentage of all questions.

I take the questions marked with broader tags like Javascript or Docker and see what other tags are present in those questions next to the main tag; like React next to Javascript or Kubernetes next to Docker.

The chapters of this report are structured around those significant tags that indicate a domain and we explore tags within these domains and their growth trends. I followed the data to create the table of contents:

  1. We start with Python and its two applications that generate most buzz; machine learning and data science. The most inspiring IoT and Embedded projects are related to AI, so we inspect them here.
  2. We look at application building; web applications, mobile development, enterprise apps looking at tags like Javascript, Java, web-applications, mobile, android and ios. We include some Python web tech where applicable.
  3. We go beyond code and dive into devops and docker and two more work related topics; architecture and enterprise.

These are the areas that I found most interesting based on the data. If something is missing, it does not mean that it’s not important, it just means that I could not read the data in a presentable way. Let’s dive in!

Python, machine learning and data science

img

Python has become the fastest growing tag on Stackoverflow and took over the leading position from Javascript. Python’s steep incline started around 2012 as you can see on the graph in the introduction.

The heat map here shows the most used tags next to the python tag in Stackoverflow questions.

You meet many data science and machine learning related tags like pandas, numpy, matplotlib and tensorflow here.

Tags like regex, django and flask prove that the scripting and web application side of Python is still strong.

In order to have a good idea of fastest growing tags, we take a look at Python questions and see which additional tags got the most growth in question views last year. This growth is depicted in the tables below.

I split this table into 3 parts. You find this categorisation in all chapters, so let me explain quickly how this works.

  • Established tags are the tags that have a high number of questions, they have been around for a while and many projects use them.
  • Trending tags are the tags that have less questions, but they also have a solid track record on Stackoverflow.
  • Emerging tags are the ones that have a few questions, you find newcomers and hidden gems in this category.

Based on the tables you probably agree that we can attribute most of Python’s growth in the past years to data science and machine learning applications.

Established tags

# tag growth(%)
1 keras 138.83
2 tensorflow 75.46
3 dataframe 70.66
4 pandas 67.79
5 machine-learning 66.29
6 scikit-learn 62.50
7 python-3.x 54.11
8 opencv 53.01
9 selenium 47.88
10 flask 46.54

Trending tags

# tag growth(%)
1 pyqt5 96.05
2 deep-learning 92.38
3 jupyter-notebook 91.67
4 pyspark 80.89
5 anaconda 73.92
6 apache-spark 68.40
7 amazon-web-services 62.04
8 django-rest-framework 53.98
9 pycharm 50.15
10 python-requests 49.73

Emerging tags

# tag growth(%)
1 azure-databricks 47976.09
2 odoo-12 26496.88
3 webdriverwait 1175.36
4 tensorflow-lite 710.58
5 ubuntu-18.04 612.13
6 pynput 605.95
7 python-3.7 576.63
8 google-cloud-functions 524.90
9 yolo 518.16
10 google-cloud-firestore 509.84

Let’s talk about the tags in the table a little bit. The tables are the best place to find new tech to learn or prototype.

The top established tags are usually the ones that are used by most projects to accomplish core tasks. Keras, tensorflow and scikit-learn are mainstream machine learning tech, all great to start learning.

Pandas and the dataframe are fundamental data manipulation tools, this report is also made with them.

Anaconda and Jupyter notebook are in the growth table. You can use Anaconda to conduct professional grade data science and ML work, at the same time it’s a great spot to get your hands dirty, it contains all the tools you need to get started.

Jupyter notebooks are notebooks containing your Python code, execution results and Markdown documentation. It’s a great way to work, present, share and collaborate. Jupyter notebooks comes with Anaconda.

Thanks to Google we have a cloud version of the notebook available for free at https://colab.research.google.com. If you build your first Python data crunching or machine learning prototype, start here!

Computer vision and natural language processing are the fields of machine learning you can meet every day (just think about phone apps with face recognition or voice assistants). So it’s not a surprise to see opencv on the established tags list.

img

img

Let’s look at the top tags next to machine learning in the first graph and data science in the second graph and discover more options for prototyping.

As you can see these domains are dominated by Python related libraries and frameworks, actually both lists start with python itself.

Let’s note the other fast growing language in the field; R.

We also find tags here that represent broader fields like deep-learning, neural-networks, computer vision and nlp.

Neural networks and deep neural networks are the state of the art machine learning methods and these charts also confirm that computer vision and nlp are the common applications.

The next table contains the detailed growth segments of machine learning.

Established tags

# tag growth(%)
1 python-3.x 128.14
2 keras 127.49
3 data-science 90.27
4 conv-neural-network 83.71
5 pandas 76.91
6 deep-learning 68.64
7 python 66.29
8 tensorflow 63.80
9 scikit-learn 61.53
10 numpy 52.03

Trending tags

# tag growth(%)
1 pytorch 372.07
2 lstm 85.76
3 xgboost 75.17
4 recurrent-neural-network 72.76
5 cross-validation 65.36
6 logistic-regression 58.00
7 linear-regression 50.04
8 time-series 48.28
9 text-classification 47.46
10 apache-spark 47.20

Emerging tags

# tag growth(%)
1 tensorflow.js 526.04
2 ml.net 449.21
3 google-colaboratory 361.87
4 amazon-sagemaker 334.10
5 yolo 314.60
6 spacy 245.45
7 loss-function 243.18
8 lightgbm 194.38
9 convolutional-neural-network 177.01
10 multiclass-classification 159.22

An important change from past years is that cloud platforms are climbing up the growth charts.

Amazon Sagemaker and Google Colaboratory are emerging tags and we have Azure Machine Learning Studio and IBM Watson Studio to choose from. AI is becoming industrialized, it’s important that you build skills on at least one of these platforms.

Additional prominent trend is to bring machine learning to mobile and edge devices. The top growing machine learning framework in the trending tags, Pytorch, has capabilities to run ML on edge devices including iOS and Android.

Google’s popular Tensorflow machine learning project is moving in the same direction with Tensorflow lite. Tensorflow also provides Tensorflow.js (the top emerging tag in the machine learning table) a Javascript library to use ML in the browser and Node.js.

Apache spark appears both in the Python and machine learning growth tables. Apache Spark and pyspark (Python API to support Apache Spark) let you analyze large volumes of data on clusters. Microsoft’s Apache Spark based analytics service, Azure Databricks, is the top item on the Python emerging tags list.

Real time object detection and industrial grade nlp are represented by Yolo and Spacy. I made a quick prototype with Yolo and got a cool image with boxes around every object. It’s too personal to share, though; my wife is standing there between a potted plant and a backpack smiling frantically surrounded by box that says: “person”.

Let’s look at some cool applications of machine learning beyond image processing and nlp! You find some of these tags in the table above, while some other tags come from additional exploratory queries that I run.

img

The Gym toolkit is an open-source project to build reinforcement learning projects. You can use it to teach your machine to walk or play games.

Reinforcement learning is the kind of machine learning where your software agent is learning from its own experience.

It’s very similar to the way we learn from our own mistakes. This is the kind of AI I find most exciting.

Gym makes an Atari game environment available to train on games, and 2D and 3D robots are also available beyond algorithmic scenarios.

Photo credit https://gym.openai.com/.

Walking and playing games are human qualities, so is conversation. Conversational AI is an emerging platform in terms of user experience, as well as a business opportunity.

Context is the weak point of present chat bots and virtual assistants. Rasa, the open source contextual assistant has 2M+ downloads is available for free or with enterprise support. Sounds like a chance for clever business prototype.

This year is buzzing with AI enabled IoT and embedded projects.

Nvidia’s Jetson product line offers development kits and embedded products to prototype and run neural networks.

You can build robotics applications for manufacturing, delivery, smart cities and retail with Nvidia’s developer kits.

For more information visit the Nvidia Jetson site.

Photo credit: https://www.nvidia.com

img

img

One more cool example is the Crazyflie open source flying develeopment platform by Bitcraze.

The Craziflie is a tiny quadcopter drone that you can extend. It has advanced positioning extensions enabling autonomous flights and swarms.

Photo credit: https://www.bitcraze.io/

Applications created for customers on the web, mobile and the enterprise

img

Javascript has been the top tag on Stackoverflow for many years (before Python took the world) and it’s still the beloved magical beast when we create stuff that will be touched or clicked by users.

The heat map shows the most frequent tags next to Javascript on Stackoverflow questions.

Javascript is everywhere; front-end, back-end, database, IoT and embedded. It also appears in machine learning as you saw in the previous chapter.

Using Javascript goes way beyond using just the language itself. The ecosystem is built up with various frameworks, libraries and asynchronous programming wizardry.

Looking at the heat map you might think that we are back in 2005 with JQuery, HTML, CSS and PHP on top. Well, HTML and CSS are still evolving, although they are hidden behind flashy frameworks. (I know, React is a library…)

Good old JQuery and PHP are slowly expiring, they still run most of the web, but new applications are built with new tech.

Let’s see the tables that show us the top growing tags in the Javascript universe.

Established tags

# tag growth(%)
1 reactjs 77.96
2 typescript 70.91
3 angular 70.10
4 node.js 34.21
5 arrays 27.00
6 regex 21.14
7 google-chrome 20.98
8 javascript 20.17
9 json 19.99
10 css 19.24

Trending tags

# tag growth(%)
1 vue.js 119.97
2 react-native 91.79
3 firebase 68.75
4 ecmascript-6 57.72
5 webpack 53.89
6 promise 40.09
7 express 32.99
8 python 30.36
9 mongodb 27.97
10 object 24.72

Emerging tags

# tag growth(%)
1 react-hooks 9901.93
2 angular7 7191.05
3 vue-cli-3 2887.24
4 nuxt 2362.68
5 nestjs 1529.09
6 lit-element 1404.53
7 tabulator 1249.09
8 cypress 746.32
9 svelte 729.45
10 formik 704.12

The established tags start with the *front-end framework battle that used to be loud a few years back, with heated articles and videos about React vs Angular and later also Vue.

Today the picture seems a bit clearer, Angular is higher on the heat map, which means it has more questions than React, but React is growing a bit faster. We have to come back to the figures next year to see where this trend is going.

In real life these two frameworks (except for React, which is a library, of course) seem to serve different type of businesses and projects.

The enterprise clients I work with use Angular exclusively. My understanding is that they do so because Angular is a framework, meaning there is a built in standard way to accomplish core tasks. This helps a lot with quality and skill building in large organizations.

React is a library; you have several options to extend it with further libraries to build up your own stack. There are however mature and winning combinations and there are some React based frameworks on the rise that provide standardized solutions.

Gatsby and Next.js are such frameworks for React. They don’t appear in the table, but a similar solution for Vue, Nuxt.js, is amongst emerging tags.

img

img

The first graph above visualizes the number of questions created per month as the percentage of total questions for the big Javascript front-end tags.

You see that Angular and React are far ahead with Vue in the third position. Adding Svelte to the picture has no strong visual value, but it’s a fast growing newcomer (it’s on the emerging list on the previous page).

Svelte is inspired by React and Angular and is built on the experience of the big frameworks. It feels a little like a newer generation keeping what’s working well and fixing what’s not so good. I built a chat app prototype with Svelte and it was a pleasing experience, you might want to give it a try.

The second graph shows Next.js and Nuxt.js front-end frameworks mentioned on the last page.

The third tag on the graph, Nest.js, is different; it’s a server side Node.js framework. (I put these on one graph because the scale of the numbers is similar, so you can see the rapidly growing trend.)

Nest.js is built to give you production grade Javascript architecture on the backend. It has controllers, services, middleware, database, authentication, GraphQL, Websockets and more. Nest has been added to JHipster, my beloved application accelerator right now, as a backend solution. JHipster uses Spring Boot as the backend, having Nest as an alternative to Spring Boot shows its potential in enterprise implementations.

Nest can run two Node.js server solutions under the hood; Express or Fastify. Express is the Node.js classic, while Fastify, as the name suggests, is tweaked towards performance. Express has not received new commits in the past 9 months on GitHub, which makes projects like Fastify highly welcome.

Modern frameworks and architecture styles are a lot of fun, but the complexity and infrastructure need is often unreasonable; you might want something simpler for your next web or mobile app MVP.

Here comes Google’s Firebase, a development platform that has the right tools and infrastructure components you need to launch your web or mobile app quickly. (Firebase is on the trending tags list on the previous page and appears in several tables in this report.)

With Firebase you get the Cloud Firestore, a NoSQL database that can notify clients about data changes in real time. Cloud Functions in Javascript, static hosting, storage for images and videos, authentication and a machine learning kit. You don’t need to manage infrastructure or servers.

Firebase offers just the right tools, plus features for A/B testing, predictions, messaging, quality assurance and analytics. I used Firebase in a recent prototype and loved it.

Data editing and visualization has reached Javascript, too. Tabulator, a table editing Javascript library pops up on the emerging tags list.

One of Python’s essential plotting libraries, Plotly, now provides a Javascript library for interactive data visualization on the web. It also works with React.

Mpld3 brings together the power of Matplotlib and d3js to create interactive data visualizations from Python to be presented to your users with Javascript. It’s on my backlog to check how it fits my blog.

To give you another visualization option, you might consider Apex charts, compatible with all major Javascript frameworks, with stunning looks and 8.5k GitHub stars.

img

Java is an amazing creature. I learned to appreciate it with time.

It runs most businesses across the globe and it does its job really well. No wonder large corporations put their trust in Java and are slow to move to hip tech like Node.js.

Java does not appear in trendy articles often, there is no hype, but it’s catching up with features for functional and reactive programming and machine learning.

The main Java use case is enterprise business support systems development and Android development.

Java has the most sophisticated arsenal to support the enterprise, but this machinery comes from the pre-cloud era and it makes Java look a little dated compared to modern options especially when it comes to app startup times, memory consumption or container deployment size with fat jars.

The heat map shows the most used tags next to Java on Stackoverflow.

Do you mind if I write about the Spring framework and Spring Boot right away? Spring is the top server side tech on the heat map and Spring boot is the fastest growing Java related established tech in the table below.

Spring is the enterprise tech lead’s dream come true. It’s computerized Swiss army knife that has all the best practices included that you need to build a serious, secure and performant business application.

You don’t need to reinvent solutions for dodgy functional areas like security, REST, database connections, MVC or microservices; Spring got you covered.

The amount of experience built into Spring is astonishing. If this does not sound intimidating, you can experiment with JHipster, a project that generates Spring applications plus Angular/React front-ends as a monolith or a microservices architecture ready to run in production.

Established tags

# tag growth(%)
1 spring-boot 68.09
2 javafx 31.13
3 spring 25.59
4 maven 24.97
5 json 23.22
6 spring-mvc 21.36
7 mysql 20.42
8 jpa 19.79
9 hibernate 17.26
10 android 17.09

Trending tags

# tag growth(%)
1 java-8 38.54
2 intellij-idea 32.57
3 selenium 27.17
4 android-studio 26.71
5 selenium-webdriver 25.22
6 junit 23.84
7 rest 22.62
8 sql 16.85
9 class 16.18
10 exception 15.87

Emerging tags

# tag growth(%)
1 micronaut 3022.57
2 androidx 1679.12
3 javafx-11 1268.48
4 openjfx 726.93
5 flutter 497.07
6 tomcat9 425.14
7 openapi 421.20
8 android-livedata 375.94
9 java-11 345.95
10 reactive 321.16

Most tags in the growth tables denote some standard tools used everyday in enterprise projects, but there are a few different ones like micronaut and OpenJFX.

Micronaut, a Java based framework to build microservices and serverless applications, promises to deliver on the key weak points of Java; startup time and memory consumption. If you take the time and test it out, please let me know about your findings.

OpenJFX is an open-source project to build cross-platform client applications in Java. Cross platform development is catching up with many languages, and Java is also joining in with JavaFx.

Staying on the server side, let’s mention Python’s contribution. Django and Flask are both on the Python top list and they are a beloved alternatives to Java and Node.js on the server side. They are used for web applications and as microservice backends. Connexion, a project that serves your HTTP request based on your OpeanAPI YAML specification using Flask, seems to be a hot candidate for a prototype.

Now that we saw web front-end and back-end tech, let’s spend some time with mobile development.

Coming from a more classic IT era, it took me some time to realize that mobile first does not just mean to design your mobile website first. It really means to start your business giving a mobile app to your customers and the rest will follow.

I created a couple of online ventures as my own initiative in the past, but never really came up with a service idea on mobile and launched it. If there is something I really should be prototyping is a business idea that starts on mobile.

Thinking about mobile development seems a bit double sided to me. On one hand, it’s just iOS and Android and you have to do both, so I’m not getting any headaches here.

On the other hand, mastering both iOS and Android and maintaining two code bases seems a lot of work. We’ve got cross platform solutions to address this, but many companies say these bring even more pain.

Let’s have a look at the most used tags next to mobile, Android and iOS on Stackoverflow on the heat maps below.

img

img

img

The heat maps show the essential tools of the trade; Android, Java (for Android development), Swift for iOS and some old-fashioned tech like JQuery mobile to build responsive websites.

So what shall the avid prototyper do to lay her/his hands on some new mobile tech? I hope we find the answer in the detailed growth tables. We start with the top tags next to Android.

Established tags

# tag growth(%)
1 kotlin 130.05
2 firebase 58.53
3 android-recyclerview 34.46
4 gradle 26.12
5 android-studio 24.71
6 ios 24.45
7 javascript 18.06
8 json 17.37
9 java 17.09
10 xml 16.22

Trending tags

# tag growth(%)
1 react-native 88.59
2 retrofit2 62.95
3 firebase-realtime-database 50.66
4 retrofit 33.03
5 unity3d 30.92
6 android-gradle-plugin 30.90
7 xamarin 25.53
8 c# 23.47
9 android-volley 20.83
10 xamarin.android 20.31

Emerging tags

# tag growth(%)
1 ionic4 5318.64
2 android-motionlayout 3919.43
3 android-app-bundle 1733.25
4 flutter-layout 1561.22
5 koin 1137.37
6 androidx 1085.38
7 mutablelivedata 953.02
8 flutter-dependencies 695.04
9 android-architecture-navigation 689.11
10 android-jetpack 674.91

We all know by now that Kotlin is a programming language interoperable with Java, but meant to fix Java’s main flaws. We see it on top of the Android growth chart, which I’m sure is great news for devs who are deep into Android development; according to Stackoverflow you can improve your life by giving Kotlin a chance.

For me, who is not into any platform yet, but willing to prototype a new app in 2020, Kotlin is not the solution I’m looking for. I’d rather try some cross-platform stuff. It should be fresh, modern and proven with a solution to every problem.:)

The thing with cross platform tools is that you regularly see news about large companies moving away from one or the other. You also see the opposite; cool tech players committing to one platform for the long run. I don’t wanna put brand names here, please ask google for examples.

There are various reasons to abandon a cross platform development solution, the most common ones being; startup times, worse than native performance, partial coverage of features; meaning some features still need to be developed natively for iOS and Android. This implies that you have to maintain 3 code bases instead of 1 cross-platform or 2 native.

So the question comes, which one should I use in my prototypes going forward? Let’s add the growth table of iOS to the picture and come up with a plan.

Established tags

# tag growth(%)
1 firebase 46.47
2 swift3 34.63
3 swift 29.45
4 android 24.45
5 javascript 20.39
6 uicollectionview 17.86
7 xcode 14.69
8 ios 13.67
9 autolayout 13.34
10 uibutton 12.53

Trending tags

# tag growth(%)
1 swift4 84.69
2 react-native 73.98
3 firebase-realtime-database 37.32
4 alamofire 34.08
5 cocoapods 28.57
6 arrays 22.27
7 xamarin 21.21
8 swift2 21.15
9 google-maps 20.87
10 itunesconnect 19.55

Emerging tags

# tag growth(%)
1 xcode11 27170.43
2 ionic4 2311.21
3 flutter 765.74
4 dart 684.33
5 swift4.2 586.00
6 sirishortcuts 276.22
7 xcuitest 249.36
8 google-cloud-firestore 231.63
9 expo 228.76
10 xcode10 220.94

It’s obvious that I have to put React Native on my shortlist. It’s a top growth tag next to iOS and Android, too. I’ve got React skills (that I acquired through blood, sweat and tears), it seems like a no brainer. But I have a concern.

Learning React was painful because I had to research and choose the right library to be added to React to cover the basics.

React does front-end right, I like its logic, style, I even like JSX, it’s compatible with my brain’s wiring. But React stops at the front-end and leaves the rest of your app to you. I’d rather check out something that gives me more end-to-end support.

We’ve got Xamarin and Ionic in the growth tables and Apache Cordova on the heat map. I would not go with Cordova, because it’s not on the growth list.

Xamarin works with .Net and C#, I saw it in various corporations doing a good job. If you are into the Microsoft ecosystem and already know C#, it looks like a great option, because MS got your back end to end.

Ionic is gives the promise to build your app with web technologies; vanilla Javascript or any one of React, Angular or Vue.

Established tags

# tag growth(%)
1 flutter 390.71
2 dart 303.49
3 reactjs 117.23
4 react-native 105.98
5 responsive 66.77
6 appium 65.15
7 angular 62.14
8 xamarin.forms 49.27
9 node.js 45.71
10 android-studio 44.07

To complete the short list let’s look at the growth next to the mobile tag, too. Flutter by Google and its programming language, Dart, appear on top.

Another Google project, Firebase, is listed in all the growth tables in some form. I’m particularly excited about the real time database, and I’d love to build my mobile prototype with it.

I’d add React Native or Flutter to implement the mobile part. Flutter integrates well with Firebase with good learning materials and examples. I’d have to learn Dart though.

React Native seems easier if you know React, but then you have to figure out how to integrate with Firebase. I think I have to research this.

Architecture, Enterprise, DevOps and Docker

These tags, especially architecture and enterprise are smaller, Stackoverflow is more about code related issues than conceptual matters.

Still I’m very curious about these tags, because like many of you, I also work with enterprise clients, and do solution architecting work.

Prototyping for enterprise makes a real difference when you are in the process of moving into cloud, digital, data-driven, event-based and real-time. I realize, this list sounds like b***shit bingo, but this is reality.

I see these projects happening right now and enterprise experts need a lot of training and guidance to design and implement systems with the new mindset. Prototyping is essential, because this stuff improves the bottom line.

Let’s see if we can find something worth trying!

img

img

The heat maps show the most used tags next to architecture (first graph) and enterprise (second graph).

Tags like C#, Java, MVC and database pretty much summarize what we used to build in-house applications in the past two decades. No big news here.

The way we implement modern applications changes though.

Having iOS and Android on the heat map means that mobile has been a top enterprise priority for years. Corporations with legacy stacks add mobile applications as a new customer channel to their existing applications.

Mobile integration uncovers the shortcomings of legacy architectures. It’s inefficient to retrieve a screenful of information from legacy monoliths, they don’t have the right gateways, the interfaces are too fat and system boundaries are not in line with mobile screen flow.

New enterprise systems are implemented with the microservices pattern and old legacy stacks are re-architected to resemble microservices as much as possible.

Architecture

# tag growth(%)
1 angular 93.30
2 microservices 54.29
3 reactjs 30.56
4 django 30.45
5 cqrs 28.79
6 software-design 25.64
7 python 25.05
8 amazon-web-services 24.32
9 rest 22.61
10 service 20.06

Enterprise

# tag growth(%)
1 sql-server 67.09
2 github 36.94
3 database 20.48
4 in-house-distribution 19.62
5 mysql 18.74
6 .net 17.64
7 python 16.42
8 sql 14.89
9 oracle 12.84
10 provisioning-profile 12.75

You find the top growing tags next to architecture and enterprise in the tables above. Microservices architecture appears right on the top of the list. It’s a vast universe with its pluses and flaws, but it’s totally feasible to build a small scale prototype architecture for learning purposes for yourself.

I built mine with JHipster and I would recommend it to architects and devs who want to play hands on.

You get a Spring Boot backend, an Angular or React front-end, API gateway, Traefik, Authorization system, SQL or NoSQL, Kafka and deployment with Docker and Kubernetes. You get it all generated for you automatically and you can start experimenting. Sweet, isn’t it?

If you want to get into Spring Boot a little deeper, I recommend the courses of this author on Udemy.

On the design side Domain driven design and Clean architecture are the concepts trending on Stackoverflow. To get started check out Domain Driven Design by Eric Evans and Clean Architecture: A Craftsman’s Guide to Software Structure and Design by Robert C. Martin a.k.a. Uncle Bob.

img

img

Our prototyping ideation must touch upon DevOps and Docker. These tools enable whole new levels of automation. This is a hot topic everywhere.

I teach Docker in classroom trainings at large corporations.

People learn the tools first, then they realize that they can solve problems in entirely new faster and simpler ways.

This is the moment when it’s great to be in education.

Docker and DevOps means a lot to me. Not technically, more like personally. From the day when I first saw a computer in around 1986 I firmly believe that technology will take us to a highly intelligent age when everything happens automagically and we’ll all be very happy.

So in my early career it was pretty shocking to see that dev and ops are two different disciplines separated by a giant wall. Why would anyone do that? It was so unbearable that I married the head of application support to put the universe back in order.

No wonder I’m a great fan of The Phoenix Project, a one of a kind IT novel by Gene Kim, that shows dev and ops the way I like to look at IT.

The heat maps above show a good picture about the everyday reality of this domain; Docker, Jenkins, Kubernetes, Ansible, Linux, Git and Cloud skills do the job here.

The table below shows the top growing tags in the DevOps domain and the table after shows the growth tags of Docker related questions on Stackoverflow.

Established tags

# tag growth(%)
1 kubernetes 294.98
2 azure-devops 267.56
3 azure 221.14
4 amazon-web-services 171.38
5 docker-compose 134.40
6 tfs 133.87
7 docker 122.81
8 python 120.64
9 jenkins-pipeline 120.10
10 git 105.00

Trending tags

# tag growth(%)
1 gitlab 148.43
2 amazon-ec2 133.06
3 continuous-deployment 126.02
4 node.js 124.90
5 python 120.64
6 jenkins-pipeline 120.10
7 automation 119.66
8 java 114.82
9 nginx 99.36
10 terraform 95.56

Emerging tags

# tag growth(%)
1 infrastructure-as-code 3246.45
2 aws-lambda 2713.64
3 kubernetes-pod 2195.45
4 terraform-provider-aws 1831.41
5 gcloud 1714.49
6 .net-core 647.74
7 traefik 597.38
8 kubernetes-helm 546.62
9 aws-codebuild 507.07
10 curl 463.02

Established tags

# tag growth(%)
1 spring-boot 110.79
2 kubernetes 109.59
3 python 103.92
4 docker-swarm 98.22
5 docker-compose 97.11
6 jenkins 95.67
7 dockerfile 87.12
8 django 86.62
9 php 86.00
10 java 84.65

Trending tags

# tag growth(%)
1 alpine 156.45
2 flask 151.33
3 .net-core 151.32
4 gitlab-ci 140.70
5 docker-for-windows 136.86
6 c# 135.43
7 asp.net-core 122.53
8 azure 117.05
9 gitlab 115.34
10 docker-volume 109.82

Emerging tags

# tag growth(%)
1 kubernetes-helm 330.85
2 ubuntu-18.04 314.24
3 nginx-reverse-proxy 268.22
4 docker-network 261.80
5 azure-devops 258.39
6 vue.js 253.64
7 keycloak 214.13
8 minikube 198.07
9 airflow 195.87
10 docker-stack 189.77

If you take a look at tags in the above tables, you can see that Kubernetes is at the top both next to devops and docker. The reason for this is that Kubernetes is the most adopted container orchestrator on Earth right now.

Mastering Kubernetes is a pretty daunting task. To cope with the complexity most clients use PaaS solutions like OpenShift or cloud providers to set up and manage k8s clusters.

You can build your first Kubernetes prototype with Minikube and learn the basics. Then try running applications on GCP, AWS and Azure with their respective managed Kubernetes offerings.

Jenkins is at the core of automation, it’s the most popular CI/CD solution for corporations. While there are various cloud options available like CircleCI or Travis, you can always set up your own Jenkins on your own servers. Try running Jenkins with Docker as a prototype, I have a blog post almost ready to publish to show you how you can do this.

Another key tool that you can set up on premises is Gitlab. Gitlab with Jenkins is a frequent combination in enterprise projects.

Moving further into automation you find infrastructure automation with Terraform by HashiCorp and configuration management with Ansible, Chef and Puppet. You find most of them in the top growth tables. Prototyping these tools is pretty easy, just take any web application prototype you already have and deploy it to a cloud service with these tools.

There are good number of solutions to help you deploy a production level Kubernetes cluster. Kubespray works with all major cloud services, supports Ansible and Vagrant and has great compatibility with 3rd party components.

If you deploy your apps on edge devices, you might want to check out microk8s, the zero-ops Kubernetes for workstations IoT and embedded applications.

Identity and access management is an aspect you have to handle in every project. Keycloak, a project backed by RedHat provides all-around open-source identity and access management. I just built a few small prototypes with it and liked the experience a lot. I rebuilt the prototypes with Firebase Auth and liked it even better. I’m also considering another rebuild with AWS Cognito.

If you are new to Docker and willing to learn, check out my Docker tutorial book I teach in classroom trainings; Get Started with Docker in your Projects - through Examples.

Share this article!