Over the past year, the software development industry has continued to stride forward. Looking back on 2016, we saw more emerging popular languages, frameworks and tools that are changing the way we work and opening us up to more possibilities. But in this business, it’s hard to keep up with trends. So at the end of each year, we offer you some advice on what’s most important and what you should learn in the year ahead.

Big trend

Progressive Web Apps

In 2016, we saw the Progressive Web App concept take off. It means that Web applications can work offline and provide the experience of a native mobile application. They can be added to the home screen of your smart device and even send you push notifications, bridging the gap with native mobile apps. We believe that in 2017, progressive Web Apps will become even more important and worth exploring. See an overview here.

Chatbot

Everyone is talking about chatbots now, from the platform on which they run to the framework on which they are built. And the community is busy with it. (Read our profile.) Robots are an emerging mobile app that we’re excited about. If you hurry, you can still catch the wave. However, once the novelty wears off, it can only take on boring roles, such as automated customer support. However, believe that we can achieve the dream.

Consolidation of front-end frameworks

In the JavaScript community, there’s something new every week with an incredible mix of frameworks and tools. Until recently, it was hoped that the old tools would be replaced by new ones, but that is not what we want to see in 2016. Instead, we see the idea of a popular framework exchange, as well as innovative elements that can be incorporated into a newly born framework. So in 2017, it doesn’t matter which JS framework you choose, because their features are mostly comparable.

The cloud

As things stand, companies and developers are embracing the cloud. The cloud is a virtualized computer infrastructure that can be fully configured through the control panel based on different requirements. The top three Cloud providers are Amazon AWS, Google Cloud and Microsoft Azure. As their competitive prices have been falling, allowing small companies and individual developers to incorporate the cloud into their budgets, familiarity with cloud workflows will be a good investment for 2017.

Machine learning

Machine learning (ML) has exploded over the last year. It was also in the spotlight when AlphaGo played Lee Se-dol in March. Smart computer systems that learn from raw data are changing the way we interact with our mobile devices. It looks like machine learning will be a bigger factor in 2017.






A programming language

JavaScript continues to move at an incredible pace of innovation. Due to the rapid release schedule of Web browsers, the JS standard is set for annual updates. Therefore, “ES2017” is expected to be completed in mid-2017, and it will also bring a new feature that JS developers have been waiting for — аsync/аwait for asynchronous functions. And thanks to Babel, you can now write ES2017 in every browser.

TypeScript 2.1, released in late 2016, will bring Async/Await asynchronous solutions to older browsers and improve type inference. TypeScript is a statically typed language that compiles to pure JavaScript. It enhances the classic OOP model and optional static typing, making large code bases easier to maintain. It is also the preferred language for writing Angular 2 applications, and we encourage you to try it out. Here’s a quick start guide to it.

C#7.0 is expected to be released in 2017, and as an excellent programming language, it will also get much improved. Microsoft surprised everyone when it launched its open source Visual Studio code editor and.NET Core. Not only do they run on Linux, Windows, and macOS operating systems, but you can write fast, efficient applications in C# (read more here). At the same time, both tools have created vibrant communities. We believe that they will bring us more surprises in 2017.

Python 3.6 will be released in December. IT is solidifying its position as the scripting language of choice for developers, IT professionals, and scientists. It applies to automation, Web development, machine learning, and scientific computing. While the separation of Python 2.X from 3.X has been a years-long struggle for the community, for now, you can confidently opt for Python 3 and enjoy full library support. For those who need extra performance, I suggest you check out PyPy, a Python runtime JIT enabled alternative.

Ruby 2.3 was released earlier this year with some performance improvements. Ruby is also a good choice for learning a general-purpose scripting language, but it works best when it works with Rails. With the announcement of the Ruby 3×3 project, the upcoming Ruby 3 release will be three times faster than the current version. You can also open the door to using Ruby in many more situations.

The 7.1 version of PHP was released in December with minor enhancements to the language. This release builds on major performance improvements made in last year’s 7.0 release, transforming PHP into a fast platform for building Web applications. If you’re going to learn, we recommend you take a look at best practices in the TAO of PHP.

Java 9, due for release in 2017, will bring some new features welcomed by developers, such as repL evaluation of code, HTTP 2.0 support, and some new apis. There is a strong demand for these new features among talented Java developers and those who use the language extensively for their projects. If Java isn’t your cup of tea, there are other JVA-BASED programming languages like Kotlin and Scala that you can check out.

The Swift 3 was released earlier this year. Simplifying application development on iOS and MacOS is Apple’s vision for modern programming languages. Because Swift is open source, a large community has sprung up. Swift 4, scheduled for release in 2017, will improve the language and introduce server apis aimed at making it a good choice for writing Web applications and backends.

If you’re looking for something to get you excited about, try Crystal and Elixir. They all have syntax-friendly features and excellent performance similar to Ruby, or you can look at functional languages like Haskell or Clojure. Two other fast programming languages, Rust and Go, are recommended.

Pick one or more: JS (ES2017), TypeScript, C#, Python, Ruby, PHP7, Java/Kotlin/Scala.



The front end

There have been two major advances in Web platforms recently: Web Assembly bytecode technology and Service Workers technology. They open the door to fast, efficient Web applications and effectively bridge the gap in compiling native applications. Service Workers is a startup technology for progressive Web apps that provides notification support for Web platforms and more apis in the future.

Angular.js 2 was also released this year. The framework is maintained by Google and is favored by many enterprises and large corporations. It has so many features that it makes it possible to write anything from the web to the desktop and mobile applications. The framework is written in TypeScript, which is the recommended programming language for writing applications. There is still more to read, but we think Angular 2 will be a good investment in 2017.

This year also saw the release of Vue. Js2.0, which borrows good ideas from Angular, React, and Ember and is lighter and faster than the first two frameworks. We recommend you give it a try this year, and you can start with our vue.js tutorial.

Ember is another good choice for a JavaScript framework. It supports bi-directional data binding and automatically updates templates, components, and server-side rendering. The benefits of using it are that it is more mature and stable than its competitors, while the low frequency of major changes to the framework and the community’s emphasis on backward compatibility make it the perfect choice for developing applications with longer life cycles.

Two other frameworks worth mentioning are Aurelia and React. The React ecosystem has become increasingly complex over the past year, making it difficult to recommend for beginners. But experienced developers can combine the library with GraphQL, Relay, Flux, and Immutable. Js into a comprehensive, complete, full-stack solution.

Nothing would be complete without mentioning the front end of Bootstrap. Bootstrap 4 is currently in Alpha and is expected to be released in 2017. Notable changes are the new common card component and Flexbox grid (see comparison to regular grid), which modernize the framework and make it more comfortable for users to work with.

SASS and LESS are still the two most popular CSS preprocessors. Although Vanilla CSS already had support for variables, SASS and LESS still had better support for mixins, functions and code organization. If you haven’t already, check out our Quick start guide to SASS and LESS.

Learn one or more: Angular 2, Vue. Js, Ember, Bootstrap, LESS/SASS



The back-end

There are many options on the back end, but all of them depend on your preference for a programming language or specific performance requirements. A continuing trend in Web development is to move away from back-end business logic and shift that layer onto apis used by front-end and mobile applications. But a full-stack framework is generally simpler and faster to apply to development, and it remains the most efficient choice for Web applications.

Node.js is the primary way to run JS outside of the browser. This year, we’ve also seen many new releases of it. In addition to improved performance, coverage of the entire ES6 specification has been added. Node has a framework for building fast apis, servers, desktop applications, and even robots, and it can create a huge community of every module imaginable. Here are a few frameworks you might want to explore: Express, Koa, Next, Nodal.

PHP is a Web development language with a wide range of Web frameworks to choose from. Thanks to its great documentation and features, Laravel has built an active community. Version 3 of the Zend Framework has been released, marking a significant upgrade to the business-oriented Framework. This year, we’ve also seen a number of new releases of Symfony, making it a better choice for full-stack solutions.

For Ruby, the Rails framework is preferred. Rails version 5.0 was released this year and provides support for Web Sockets, API models, and more. Sinatra is also a good choice for smaller applications, with Sinatra 2.0 expected for release in 2017.

Python has a full stack/mini-framework that uses Django and Flask as a combination. Django 1.10 was released in August of this year, introducing full-text search and a significantly revised middleware layer for Postgres.

There are still plenty of popular Web frameworks to choose from within the Java ecosystem. Play and Spark are two must-have choices, and can also be used with Scala.

For hobbyists, there’s also Phoenix, written in Elixir, which tries to be a high-performance, complete replacement for Rails. If Elixir is one of the languages you want to learn in 2017, try Phoenix.

Learn one of them: full stack backend framework, a microframework



The database

PostgreSQL has released two full versions this year — 9.5 and 9.6. They bring the UPSERT (AKA ON DUPLICATE KEY UPDATE) feature we’ve been waiting for since MySQL, as well as better full-text search and speed improvements thanks to parallel queries and more efficient copying, aggregation, indexing and sorting. Postgres works well with large, terabit-sized datasets and busy Web Apps, and these optimizations are welcome.

MySQL 8.0 will be the next major release of the database. Due for release in 2017, it will bring more improvements to the system. MySQL remains the most popular database management system and the entire industry is benefiting from these new releases.

For fans of NoSQL, we recommend CouchDB. It is a fast, extensible JSON storage system that exposes a Rest-ful HTTP API. This database is easy to use with excellent performance. The counterpart to CouchDB is PouchDB, which works entirely in a browser and syncs data with Couch. So you can use PouchDB on an offline app, and when connected to the Internet it automatically syncs data.

Redis is our favorite key-value store database. It is small, fast and full of features. You can use it as an alternative to an intelligent distributed caching system as a NoSQL data store or as a process message and synchronization channel. It offers a wide variety of data structures to choose from, and in the upcoming 4.0 release there will be a modular system and improved replication capabilities.

Learn one of them: Postgres, MySQL, CouchDB, Redis.



tool

Yarn is a Node.js package manager developed by Facebook. It is an upgrade to the NPM command-line tool and provides faster installations, better security, and deterministic builds. It still uses the NPM package registry as its back end, so you can even access the same JavaScript module ecosystem. The package.json format used by Yarn is compatible with the package.json format used by NPM.

As two of the most popular open source editors for developers, Visual Studio Code and Atom, we’ve seen some incredible innovations over the past year. Both projects are built using Web technology and have attracted a large following in the community. The editor comes with a high level of extension that provides plugins such as syntax checking, linting, and refactoring tools.

Git is the most popular source code version control system. Although it has no server, you can turn any folder on your computer into a repository. If you want to share code, GitLab, Bitbucket, and GitHub are good choices. In 2017, we recommend familiarizing yourself with the Git command line, because it’s more convenient than you might think.

Desktop applications haven’t gone away. Even as Web apps get more powerful, sometimes you still need powerful features and apis that the Web platform doesn’t provide. You can leverage Web technologies to create desktop applications using tools like Electron and Nw.js, while also having full access to the operating system and the breadth modules available to NPM. To learn more about these tools, read the tutorials on Electron and Nw.js.

The latest trend among software development teams is to put developers in charge of deployment on their own software projects, also known as DevOps. This results in faster releases and faster fixes for problems in production. Developers with operational experience will be highly valued, so getting familiar with the technology that makes this happen now will be a huge boost. Our recommended tools are Ansible and Docker. Also, Linux command line and basic system administration skills will be a big plus in your career.

Try one or more: Yarn, Git, Visual Studio Code, Electron, Ansible, Docker.



technology

With large companies shutting down data centers and adapting their entire infrastructure to the cloud, we can see that the cloud has won over the entire software industry. The three main platforms are AWS, Google Cloud and Azure. All three platforms have powerful capabilities and continue to expand their feature sets to include virtual machines, database hosting, machine learning services, and more. Thanks to rapidly falling prices, the cloud has become accessible to both small businesses and individual developers. Deploying a side project on the cloud will be a great learning experience for 2017.

Artificial intelligence was the buzzword of 2016. Speech recognition and image classification are just two parts of the technology in user-facing applications where the performance of ai devices matches or exceeds that of humans. Many startups are applying AI and machine learning to their new domains, and many open source projects have been launched, including Google’s Tensor Flow and Microsoft’s Cognitive Toolkit. Machine learning is a topic that is very relevant to math, and for those just starting out, there are comprehensive online courses for you to learn.

Virtual reality (VR) and augmented reality (AR) have been around for some time, and finally the technology has matured enough to provide compelling experiences. Facebook (Oculus Rift), Google (Daydream), and Microsoft (Windows Holographic) all have VIRTUAL reality platforms that welcome third-party developers. But VR wearables still face daunting challenges. For example, how to eliminate the nauseous feeling of the wearer, and how to create a compelling use case for being out of the gaming world.

Pick one: cloud deployment, machine learning libraries, VR development

If you think it’s good, give it a thumbs up. ^_^

Note:

  1. If there is any improper translation, please correct, I will timely modify;
  2. The copyright of this article belongs to the author. If you need to reprint the translation, please indicate the source, thank you!

英文原文 :
The Languages, Frameworks and Tools You Should Learn in 2017


By Martin Angelov


Translator:
IT application lion


原 文 :
https://zhuanlan.zhihu.com/p/24369470