Quelles compétences techniques essentielles acquérir en 2016 ?

Learn New Skills (Pixabay, Geralt)BeyondTheCode professe que l’essentiel pour réussir, ce ne sont pas les compétences techniques (hard skills). En effet, elles sont nécessaires mais non suffisantes pour mener une carrière dorée. Cependant, elles restent nécessaires ! Et l’une des aptitudes non techniques (soft skills) les plus fondamentales pour avancer dans la bonne direction, c’est justement de ne pas se tromper de direction.

Ne vous lancez pas à corps perdu dans l’apprentissage d’une technologie informatique à l’avenir incertain, au prétexte que vous la trouvez « cool »… ou « facile ». Pour vous aider à faire des choix professionnels éclairés, que vous soyez étudiant ou jeune employé ou en reconversion, nous répertorions dans cet article les méthodologies, outils, frameworks, langages et technologies qui ont cartonné en 2015 et feront le bonheur de 2016.

Vous en connaissez sûrement la plupart, au moins de nom ! Nous nous contentons donc de vous les présenter brièvement et de vous donner les liens utiles pour en découvrir plus par vous-même. La liste n’est d’ailleurs pas exhaustive !

L’idée n’est pas que vous les appreniez toutes, ni que vous vous forciez à acquérir celle que vous détestez, au prétexte qu’elle vous permettrait de décrocher rapidement un job très bien payé ! Vous perdriez tout aussi rapidement votre motivation au travail… Non, sélectionnez celles qui vous parlent, qui semblent vous correspondre, qui semblent compatibles avec vos envies personnelles et vos objectifs professionnels.

Autre méthode de sélection, très efficace : analysez les offres d’emploi des sociétés dans lesquelles vous adoreriez travailler, et dressez la liste des aptitudes qu’elles réclament. Cet article a justement été inspiré par une annonce « Web Development Engineer PHP » de BlaBlaCar. Outre les qualités humaines requises pour le poste, elle demandait les qualifications « dures » suivantes, dont certaines vous sont peut-être inconnues :

« You feel at home in the world of PHP5.4+ and you like to work with Symfony2, […]. You have worked with at least two other major technologies that are part of [our] technology stack; such as Java, RabbitMQ, ElasticSearch, MySQL, memcached or Redis.« 

Et si certaines vous paraissent complexes, n’hésitez pas à sortir de votre zone de confort. Vous serez d’autant plus fier d’avoir réussi ! Car à vaincre sans péril, on triomphe sans gloire. 😉
Ensuite, n’oubliez pas les fondamentaux ! Rien ne sert de vouloir maîtriser Symfony si vous ne connaissez rien à PHP ou à SQL… De même, jQuery vous sera inutile si vous n’avez pas les bases en JavaScript…
Enfin, spécialisez-vous si nécessaire, cela vous apportera une différenciation prisée par le marché.

La synthèse :

Une 30aine de suggestions classées par ordre subjectif (plus une 20aine d’idées en vrac). Merci de ne pas troller parce que vous considéreriez qu’une techno ou aptitude vaut mieux qu’une autre « moins bien placée » ! 😉

TypeNomDescription
(soft skill) CommunicationCommunication et esprit d'équipeAcquérir n'importe quelle hard skill ne vous servira à rien si vous n'êtes pas capable de bien communiquer avec vos collègues, patrons, subalternes, clients et fournisseurs. Encore moins si ces soucis de communication mettent à mal l'esprit d'équipe dans votre service ou votre entreprise. Agissez vite, et relisez notamment nos articles video2brain/Lynda.com et Coaching pour Réussir.
(soft skill) LangueAnglaisOui, parler anglais est LA compétence indispensable pour réussir dans le monde de l'informatique. Point-barre. 😉
A défaut, il faut savoir lire l'anglais technique fluently. Idéalement, le lire et l'écrire sans trop de difficulté, quel que soit le domaine, est un vrai plus. Bien entendu, inutile de dire que vous DEVEZ bien parler français également !
Oubliez vos cours de lycée, il existe des méthodes d'apprentissage modernes et ludiques : Babbel, Duolingo, etc.
MéthodologieScrumLa gestion de projet traditionnelle, en "cycle en V", ayant montré son manque d'efficacité dans le développement logiciel, ne faites pas l'impasse sur les méthodes agiles ! Et quitte à en choisir une excellente, nous vous suggérons Scrum. Ses créateurs la définissent comme "un cadre de travail permettant de répondre à des problèmes complexes et changeants, tout en livrant de manière productive et créative des produits de la plus grande valeur possible".
Liens : site officiel, article Wikipédia, livre de Claude Aubry.
MéthodologieDevOpsMot-valise issu des mots anglais "development" (développement) et "operations" (exploitation), ce mouvement émergent cherche à améliorer la qualité des services fournis par les solutions informatiques, notamment en faisant collaborer intimement deux fonctions qui ont souvent des objectifs contradictoires, à savoir les codeurs et les administrateurs système. Généralement combinée à une approche Agile et complétée d'outils puissants (Git, Jenkins, Puppet, etc.), cette méthode d'organisation vise à booster la compétitivité de l'entreprise numérique, par exemple via l'intégration continue.
MéthodologieVeille technique et formationDans un monde idéal, tout spécialiste de l'IT devrait consacrer au minimum 10 % à 20 % de son temps de travail à surveiller les tendances et évolutions de son domaine, ainsi que se former aux nouveautés. Dans la réalité, les projets à terminer "pour demain" s'enchaînent sans laisser de répit pour autre chose que de l'opérationnel, "la tête dans le guidon" ! C'est comme ça qu'au bout de quelques années, on se retrouve obsolète, has-been, dépassé par les petits jeunes. Je vous en conjure : prenez du temps pour fureter, veiller, évoluer !
Ayez une "vision sur le futur" pour éviter de devenir un "vieux crouton"...
MobilitéDéveloppement mobileA l'ère du smartphone, qui n'est plus un téléphone mais bien un ordinateur de poche connecté, le développement pour le mobile est devenu un incontournable. Domaine rendu relativement complexe par la multiplicité et l'hétérogénéité des plates-formes ! Le bon développeur devra connaître (voire maîtriser) les outils gérant la matrice "3x3" : 3 plates-formes majeures (Android, iOS, Windows) fois 3 architectures d'application (native, Web, hybride). Sans compter les langages (Java, Objective C, C#, etc.).
MobilitéResponsive Web Design (RWD)L'ordinateur a perdu l'exclusivité de l'accès au Web : on peut désormais surfer sur smartphones, tablettes, montres connectées, etc. (la part des connexions via mobile a même dépassé celle des PC en 2014) ! Autre tendance : de plus en plus d'applications mobiles sont à base de technologies Web. Pour qu'un site ou une application Web soit consultable de façon optimisée sur ces différents supports et expériences utilisateur, et leurs tailles d'écran très variables, il doit être "adaptatif" (responsive en anglais). Mieux : on parle maintenant de "mobile first", consistant à développer d'abord pour mobile, puis à adapter pour les écrans plus grands...
LangagePHP + MySQLIl y a trop de développeurs PHP sur la planète, aussi ce n'est pas ce langage qui vous permettra de sortir du lot. Cependant, il fait partie des incontournables du développement Web, et ne pas le connaître pourrait vous porter préjudice. (Symfony est notamment basé dessus !)
Arrivé récemment en version 7 après 20 ans d'existence, il est devenu à la fois puissant, rapide et mature, et fait tourner près de 80% des sites Web de la planète, généralement combiné avec la base de données MySQL.
LangageHTML 5 / CSS 3Comme pour PHP, ce n'est pas votre maîtrise du couple HTML/CSS qui vous permettra de réussir, mais si vous n'avez pas cette base, vous échouerez également ! Aucun site Web ne peut se passer de ces 2 langages de présentation et de mise en forme, notamment de leurs versions les plus modernes.
LangageJavaScript + jQueryDe langage de script mal aimé et essentiellement utilisé pour la validation de formulaires côté client, JS a acquis en quelques années ses lettres de noblesse avec l'arrivée des applications Web, qui en font massivement usage. Mais ce n'est pas du JavaScript "de base" dont on parle : c'est de celui maintes fois étendu par des bibliothèques orientées-objet ultra-puissantes, à commencer par jQuery, et exploité en conjonction avec des formats d'échange de données performants, par exemple JSON.
Liens : Javascript, langage de l’année ?
FrameworkSymfonyRécemment arrivé en version 3, Symfony s'est imposé comme LE framework de développement Web, qui a élevé les standards de codage PHP. Non seulement il accélère la création et facilite la maintenance d'applications PHP, mais ses nombreux composants sont autant de bibliothèques intégrables dans des projets PHP non-Symfony (via Composer). On en retrouve d'ailleurs dans le CMS Drupal !
Collaboration / VersioningGit + GitHubGit est un logiciel Open Source de contrôle de versions, ce qui permet de travailler à plusieurs sur un même projet de développement sans écraser les lignes de code écrites ou modifiées par un collègue, en gardant l'historique de tous les changements, et en gérant les différentes "branches" du projet. Chacun possède une copie des codes source sur son poste, qu'il synchronise avec le serveur de versions, puis résout les éventuels conflits de mise à jour.
GitHub facilite l’utilisation de Git : son logiciel fournit une interface visuelle pour gérer localement vos projets, et son service en ligne les stocke sur le Web (en mode public ou privé) en leur apportant des fonctionnalités de réseau social.
Alternative à GitHub : BitBucket (par les créateurs de JIRA).
Liens : git - petit guide, GitHub Pour les Nuls, Cours OpenClassrooms, Comprendre enfin Git.
DomaineCloud ComputingDepuis que l'accès au Net est permanent et sur tous supports, que les technologies Web ont explosé, les "logiciels" font la part belle aux "applications Web". On n'installe plus d'outil sur un PC : on ouvre un compte sur un service "dans le Nuage informatique", 100% en ligne, accessible partout dans le monde (en mode Saas). On stocke ses fichiers sur Dropbox, crée des tableurs dans Google Docs, gère ses projets sous Wrike ou Trello, communique via Slack, regarde ses films en streaming, etc. Et quand la limite du compte est atteinte, la mise à niveau s'effectue en quelques clics. Bref, il suffit d'un navigateur pour (presque) tout faire, et les ressources deviennent illimitées, allouées à la demande. Et en mobilité, une application smartphone prend le relais. Réduction des coûts, haute disponibilité, mise à jour instantanée, etc. : une lame de fond qui balaie tout sur son passage.
5 acteurs majeurs des infrastructures Cloud : Amazon AWS, Google Cloud, Microsoft Azure, Numergy, OVH Cloud.
StatistiquesBig DataL'exploitation des "données massives" ou mégadonnées est devenue un enjeu crucial de ces dernières années. Héritier du Data Mining, de la Business Intelligence et de l'expansion constante du stockage, il consiste à recueillir puis analyser les milliards de milliards d'octets d'informations générés par l'activité d'une entreprise ou d'un secteur d'activité pour en tirer des enseignements clés qui impacteront la stratégie ou la tactique à venir. Le Big Data a donné naissance à un nouveau métier très prisé : Data Scientist.
StatistiquesR"R est un logiciel libre de traitement des données et d'analyse statistiques mettant en œuvre le langage de programmation S." Ca ne serait pas très intéressant si l'heure n'était pas au Big Data et si R n'était pas doté de milliers d'extensions sous forme de "packages", qui lui donnent des possibilités infinies ! On peut ainsi interfacer directement R avec des bases de données comme PostgreSQL et MySQL, exporter les résultats en LaTeX ou OpenDocument, etc. Du pain béni pour les data scientists.
Liens : page Wikipédia, Cours OpenClassrooms.
LangageJavaLangage de programmation orienté-objet inspiré du C++, créé dans les années 1990 par Sun Microsystems (rachetée en 2009 par Oracle). Sa force : permettre de concevoir une fois des applications portables sur toutes les plates-formes ("write once, run everywhere") avec peu ou pas de modifications. Cette portabilité est assurée par la production d'un "bytecode" compilé ou interprété par une machine virtuelle adaptée à la plate-forme hôte. Assorti d'un environnement de développement complet et de bibliothèques très vastes (Java SE), c'est l'un des outils les plus polyvalents au monde : applications classiques (Windows, Mac, Linux, ...), exécutables embarqués (téléphones, objets connectés, ...), applets et servlets Web, etc. Malgré les coups de butoir des langages et frameworks créés depuis 25 ans, il a su résister et s'adapter en continu !
Liens : page Wikipédia, tutoriel OpenClassrooms.
LangageGoSelon Julien Dubreuil, Go faisait partie en 2015 des "5 technologies à surveiller". Il le décrivait comme suit : "Go est un langage de programmation compilé créé par Google dont la force est de réaliser des opérations concurrentes. [Créé] pour la programmation système, [il] a depuis été étendu aux applications web. Il est maintenant possible de générer du code pour Android avec Go et certaines librairies. [Il dispose aussi] d'une bibliothèque de serveur HTTP permettant de se passer de Apache ou Nginx." Bien que jeune (2009), sa puissance, sa simplicité et son ouverture le rendent très attractif.
Liens : page Wikipédia, article Scriptol.fr, Go by example, e-book en anglais.
DéploiementDockerExemple-type de technologie d'avenir, ce logiciel libre (écrit en Go) automatise le déploiement d'applications dans des "conteneurs" logiciels. Il permet d'empaqueter une application et toutes ses dépendances dans un conteneur virtuel, qui pourra être exécuté sur n'importe quel serveur (avec un système d'exploitation Linux ou Microsoft). L'application devient ainsi extrêmement portable, pouvant tourner sur une machine locale, un Cloud privé ou public, etc. Contrairement à une machine virtuelle, un conteneur Docker n'inclut pas de système d'exploitation, mais partage les fonctionnalités de celui de la machine hôte avec les autres conteneurs, en isolation de ressources.
Docker simplifie ainsi la mise en œuvre de systèmes distribués en permettant à de multiples applications et processus de s'exécuter de façon autonome sur une seule machine physique ou à travers une grappe de machines virtuelles.
Liens : page Wikipédia.
FrameworkAngularJSAlors que les frameworks sont légion pour le codage côté serveur (back-end), il n'existait quasiment rien pour le côté client (front-end) : conçu par Google, en Open Source, AngularJS comble le fossé. Ce framework JavaScript rend le développement front-end simple et robuste, implémentant une architecture MVC, le data-binding, une version allégée de jQuery, l'injection de dépendances, la manipulation du DOM via des directives, et une haute testabilité du code.
Liens : page Wikipédia, site tutoriel, tutoriel OpenClassrooms, comparatif 1, comparatif 2.
Alternatives : Ember.js, Backbone.js, ReactJS.
FrameworkNode.jsTrès populaire, Node.js est un environnement permettant d'exécuter du JavaScript côté serveur, complété d'une bibliothèque OpenSource et d'un serveur Web intégré. Par rapport aux langages serveur comme PHP, il tire sa puissance et sa rapidité du moteur JavaScript V8 de Chrome et de son modèle événementiel à entrées/sorties non bloquantes (programmation réactive). Autrement dit, il permet de gérer des tâches en parallèle, pilotées par des événements, d'où sa vitesse d'exécution... impliquant aussi une façon bien spécifique de coder des applications Web !
Liens : page Wikipédia, tutoriel OpenClassrooms, tutoriel developpez.com.
Format d'échangeJSONPrenant de plus en plus le pas sur XML, JSON (JavaScript Object Notation) "est un format léger d'échange de données, facile à lire ou à écrire pour des humains, aisément analysable ou générable par des machines". Bien que basé sur un sous-ensemble du langage JavaScript, c'est un format texte complètement indépendant de tout langage, dont les conventions d'écriture seront familières à la plupart des programmeurs.
Liens : comparatif de tendance XML/JSON.
DesignBootstrap"Bootstrap est le framework HTML, CSS et JS le plus populaire pour développer des projets responsive et mobile first sur le Web." Cet outil Open Source conçu par Twitter permet de créer des interfaces adaptables à tous les supports à partir d'une même base de code, de gérer ses CSS à l'aide des pré-processeurs Less et Sass, et fournit de nombreux composants HTML / CSS / jQuery pour booster, embellir et harmoniser l'ergonomie de votre site. Un incontournable pour les webmasters et les web-designers.
Liens : page Wikipédia, tutoriel OpenClassrooms.
Gestion de contenuWordPress, Drupal, JoomlaDe nombreux Systèmes de Gestion de Contenu (CMS en anglais) sont apparus sur le Web ces 10 dernières années... et ont soit disparu, soit été marginalisés par les 3 ténors du marché : WordPress (à l'origine, outil de blogging), Drupal (à l'origine, outil de messagerie) et Joomla (issu de Mambo).
Vous voulez monter un site complet en 2 heures ? installez l'un de ces systèmes gratuits, choisissez un modèle ou thème graphique (template), ajoutez des modules ou extensions (plug-ins), rédigez un article ou une page (content) et c'est parti ! Mais vous pouvez aussi tout personnaliser et développer vos propres fonctionnalités. Les capacités sont quasi illimités...
Alternatives : Typo3, eZ Publish, ...
MéthodologieMicro-services, API, REST(à venir) Lien : page Wikipédia "Microservices"
Bases de donnéesNoSQLAvec le besoin croissant d'exploiter des jeux d'informations gigantesques et peu structurés, les systèmes de gestion de bases de données relationnels (SGBD-R) ont montré leurs limites. C'est là qu'entre en lice le mouvement "NoSQL" (Not only SQL), désignant une catégorie de SGBD qui n'est plus fondée sur l'architecture classique, organisée en tableaux à 2 dimensions (modèle de Codd).
Né pour manipuler des bases de données géantes pour des services Web comme Google, Amazon, Facebook ou eBay, le NoSQL s'est ensuite démocratisé pour des projets plus modestes (mais tout aussi utiles) requérant une structure relationnelle faible ou des données au format hétérogène. De nombreux outils ont été créés à cet usage, notamment Big Table, HBase (Hadoop), MongoDB, Redis, etc.
DéploiementChef / Puppet / Vagrant(à venir) Liens :
- Puppet - "automates every step of the software delivery process"
- Chef - "automate and continuously deliver applications / containers / infrastructure / compliance / security"
- Vagrant - "Create and configure lightweight, reproducible, and portable development environments"
Web-marketingGrowth HackingCumulant les casquettes de spécialiste IT et de Web-marketeur, le growth hacker (GH) a pour objectif majeur la croissance de l'entreprise, souvent une start-up. En synergie avec toute l'équipe, il définit des stratégies techniques et/ou marketing, les met en place ainsi que des outils de suivi, analyse les bonnes métriques du produit ou service, puis rectifie le tir selon les résultats, de façon itérative. Il cherche à optimiser tout le cycle de vie des clients selon le schéma AARRR : Acquisition (faire venir le client), Activation (l'inciter à s'inscrire), Rétention (le faire revenir), Recommandation (l'inciter à recommander le service), Revenus (le convaincre d'acheter). Créatif, il aime les solutions hors des sentiers battus, l'ergonomie fluide, la viralité, l'écoute du client et les petites astuces à grande valeur ajoutée.
Liens : Intro au GH, blog d'Andrew Chen, 5 étapes AARRR.
Web-marketingRéférencement naturel (SEO) / payant (SEM)Savoir pousser un site en haut des résultats des moteurs de recherche, soit par l'optimisation des pages (architecture, ergonomie, contenu -- Search Engine Optimization), soit par la création de campagnes de publicité ciblée (Search Engine Marketing), constitue des métiers vastes et complexes. Fini le référencement amateur fait par le seul webmestre à coups de balises META et d'inscription dans des annuaires ! C'est devenu une véritable science, qui évolue chaque jour, portée par la montée en puissance du web-marketing... et de Google.
DIVERSA ETUDIEREn vrac, d'autres concepts intéressants (par ordre alphabétique) :
  • Ansible - "a simple IT automation engine that automates cloud provisioning, configuration management, application deployment, intra-service orchestration, and many other IT needs"
  • Apache - "a secure, efficient and extensible server that provides HTTP services in sync with the current HTTP standards"
  • Blockchain - registre distribué et sécurisé agissant comme tiers de confiance dans les transactions sensibles (notamment BitCoin)
  • ElasticSearch - "search and analyze data in real time"
  • Ember.js - "a framework for creating ambitious web applications"
  • Google Apps for Work - messagerie, contacts, suite bureautique en ligne, stockage et partage de fichiers, agenda, discussion texte ou vidéo, etc., tout intégré !
  • Hadoop - "a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models"
  • Internet des Objets (IoT) - lorsqu'une multitude d'objets-ressources sont identifiables par une adresse unique sur le réseau et peuvent communiquer entre eux... et éventuellement avec les humains 😉 (E-book complet)
  • ITIL, Information Technology Infrastructure Library - cadre de référence recensant et synthétisant les bonnes pratiques du management des systèmes d'information
  • Jenkins - serveur d'intégration continue OpenSource écrit en Java, extrêmement populaire (Guide complet)
  • JIRA - "conçu pour permettre à votre équipe de développement de planifier, de suivre et de livrer d'excellents logiciels"
  • Lean Startup - la création d'entreprise et de produit par le biais de preuve de concept + tests utilisateurs + processus itératif + validation des enseignements + pivot
  • Memcached - "free & Open Source, high-performance, distributed memory object caching system, [for] speeding up dynamic Web applications by alleviating database load"
  • MVC-2 (patron Modèle-Vue-Contrôleur v°2) - modèle de conception logicielle imposant une séparation des données (modèles), des traitements (contrôleurs) et de la présentation (vues) ; la version 2 ajoutant un méta-contrôleur comme point d'entrée unique
  • Nginx - un logiciel libre de serveur HTTP asynchrone ainsi qu'un proxy inverse
  • openstack - "Open source software for creating private and public clouds"
  • Pomodoro - technique de planification du travail basée sur des périodes de 25 minutes sans interruption, séparées par de courtes pauses, avec des cycles itératifs chers aux méthodes agiles
  • Python - "a programming language that lets you work quickly and integrate systems more effectively"
  • RabbitMQ - outil Open Source de gestion de files de messages basé sur le protocole AMQP (Advanced Message Queuing Protocol) (article)
  • ReactJS - "a JavaScript library for building user interfaces"
  • Ruby On Rails - "an open-source web framework that lets you write beautiful code by favoring convention over configuration"
  • Slack - une plate-forme de communication et de gestion collaborative qui cartonne
  • Sublime Text - "a sophisticated text editor for code, markup and prose - You'll love the slick user interface, extraordinary features and amazing performance"
  • Développement piloté par les tests (TDD) - méthode de développement préconisant d'écrire les tests unitaires avant le code source
  • Vagrant - "Create and configure lightweight, reproducible, and portable development environments"
  • etc.
  • Et vous, quelles compétences possédez-vous, voulez-vous acquérir ou développer ?

    Mise à jour 2017 (à défaut d’un nouvel article) :

    A lire ailleurs :

    Une réflexion sur « Quelles compétences techniques essentielles acquérir en 2016 ? »

    Laisser un commentaire