Development 2017

What does the new year bring to professional enterprise-centric development?

I don’t expect much technological disruption to be honest which is good once in a while. Many technologies will stabilize and provide further automation and abstraction layers.

And don’t believe anybody who says that this year will be the great disruption by AI, VR/AR, IoT or machine learning, that’s something these people for decades. The technologies will continue to evolve, we will see and use them, but your bread and butter will still be the next CRUD dashboard.

I guess the best advice this year is to deepen the understanding of the basic tools like your VCS, dependency management, editor and devtools.

Frontend

JavaScript’s usage will increase and become more natural for companies, whether it’s frameworks like Meteor or just a plain Node server, e.g. for proxy functionality. Full-stack JavaScript will be a good option for companies which have adapted to the previous changes.

We will see a lot of improved tooling which will shift the focus from manual labor to automatization (e.g. angular-cli) and a better development experience in general (e.g. yarn).

Angular 2 adoption rate won’t be steep enough to conquer it’s predecessor’s throne since the learning curve is high and the technologies involved require a rather different mindset (e.g. RxJS). I even think, that it’s possible it will never gain the popularity of Angular 1 and become a niche framework like Ember.

React and all it’s direct offsprings, e.g. React Native, or lesser known indirect offsprings, e.g. Preact, are the first choice for their respective use case. Especially, React Native will gain a lot of traction in scenarios where native mobile applications aren’t absolutely necessary.

The closely related ecosystem, e.g. Redux or GraphQL, will be recognized as independent and continue to perform strong and probably become the de facto standard.

Functional programming skills will be the most viable technical quality for a programmer. In the same vain, immutability (e.g. Immutable) is a must — independent of the framework you actually use.

Backend

Spring Boot is the only choice for conservative enterprise anyway but we have a lot of options with specific frameworks like Spark, Ninja, Ratpack or even another JVM language. However the existing ecosystem around Spring is so strong, that it is hard to justify any deviation right now.

As I said last year and before, the language you choose on the server is becoming less important and with the new paradigms you are much more flexible in choosing different languages suited for specific tasks.

I think that TIOBE’s language of 2016, Go, is ready to take over most classic scenarios where Java dominated. However, we won’t see a gigantic adoption rate, it will continue to do its work for smaller standalone parts of larger projects until most developers (and their environment) are comfortable with it.

Unfortunately, Elixir and Phoenix probably won’t be considered in enterprise environments with Meteor being more approachable for similar tasks. However, the Ruby community will continue to hype it and I’m happy about it.

While everyone would agree that there’s no single person who can do everything, in practice there are many customers who think that there’s one group of developers or a company who can do everything perfectly. Hint: There isn’t.

A mistake developers can make is implementing cryptography without having a PhD in a related field and I think the same applies to authentication. I hope Authentication-as-a-Service (e.g. Auth0) will gain more influence but it probably won’t and developers will continue doing costly mistakes and implement new identity providers for every new project.

The Rest

Jenkins worked for the old world but it won’t handle the new challenges even with the proposed changes. Furthermore strengthens the bad practice of providing one instance for everyone.

What we need is a deployment pipeline which handles containers and environments without adding a ton of hacks, concourse looks nice. I don’t know whether it will be used or if another tool will emerge, the pain is not strong enough right now it seems.

Consumer-driven contract development is a must to ensure stable services which provide a clean and extensible interface, Pact is the tool of choice but the concept also spans communication between consumers, providers and requirements analysis.

For certain industries like finance, I’m pretty certain that 2017 will be a year that increases the pressure on those companies which don’t want to adopt or don’t have a business plan to buy innovation, e.g. via start-ups. It won’t probably be enough for a collapse, but it will be another nail in their coffin.