Le temps passe vite !
En effet j’ai commencé chez Genesys Conferencing en tant que développeur Java/C/C++ en l’an 2000 dans l’industrie de ce qu’on appelait les « téléconférences » et qu’on appelle aujourd’hui « Unified communications as a service « . Autrement dit je participais au développement d’un logiciel serveur sous UNIX qui permettait à nos clients de rejoindre des réunions virtuelles et de les piloter avec leur téléphone.
J’ai vécu l’arrivée de la VoIP (Voice Over IP), qui consiste à faire transiter le média (la voix) sur nos réseaux Ethernet et grâce à laquelle la séparation informatique et télécom est devenue un peu plus floue. En tant que chef de projet / développeur j’ai accompagné activement cette transformation, tant coté serveur que client.
Dans la continuité, j’ai intégré Arkadin quelques années plus tard afin de participer au développement d’un logiciel de Visio conférence. Plus qu’une nouvelle stack technique (web, c#, .net) j’y ai découvert le travail en mode Agile et DevOps !
Aussi, j’ai œuvré pendant 18 ans dans cette industrie assez technique où les maîtres mots sont performance et robustesse.
J’ai récemment intégré Genapi, société du groupe Septeo, en tant qu’architecte solution. Avec mon équipe, nous tentons d’avoir une vision globale de tout l’écosystème informatique. Nous nous occupons de l’urbanisation des services afin de maintenir un « tout » cohérent, robuste et évolutif. Nous accompagnons les équipes de développement sur certains aspects techniques complexes. Nous faisons aussi le lien avec les équipes métier pour recueillir les besoins clients en amont et avec les équipes réseaux et systèmes et opérationnelles en aval.
À titre plus personnel je suis également référent sur nos outils DevOps, évangéliste et facilitateur. Le but étant de transmettre mes connaissances, mais également de continuer à favoriser le dialogue et les échanges entre les différentes équipes.
Il y a 15 ans, la stack technique était assez réduite. Nous avions souvent besoin de « réinventer la roue », parfois même pour développer des choses relativement simples. Un développeur pouvait connaître facilement les langages et les framework les plus répandus car ils étaient peu nombreux. Il y avait de ce fait moins de spécialisation et moins de métiers.
Internet n’était pas encore au cœur des enjeux, les smartphones n’existaient pas, ou à peine. Les utilisateurs étaient excessivement moins nombreux, tout comme les concurrents. Bref, on créait souvent un logiciel autonome, lourd (monolithe), qui était installé directement sur l’OS d’un ordinateur ou d’un serveur physique, par le client lui-même ou bien par des équipes opérationnelles dont on connaissait à peine l’existence.
Enfin, les cycles de développement étaient assez longs et si ma mémoire est bonne, nous livrions 4 ou 5 versions par an ….
Bref, j’ai l’impression que c’était plus simple !
Le développement logiciel n’a cessé d’évoluer depuis 1970, et ce, à grande vitesse car l’usage de l’informatique au sens large n’a également cessé de croître. C’est pourquoi, nous, développeurs nous devons nous adapter et nous réadapter quotidiennement. Cela a toujours été le cas, certes, mais je sens un changement plus fort ces 5 ou 6 dernières années.
Je pense que cette complexification s’explique de plusieurs manières :
D’abord parce que le fonctionnel s’est considérablement étoffé. Le moindre logiciel aujourd’hui se doit d’être « connecté », utilisable depuis un navigateur web, depuis un mobile, une tablette, voire même depuis une TV ou une voiture ! Il doit être internationalisable, skinnable, et même pilotable par la voix!
Les données sont désormais digitalisées, ce qui implique que :
Il y a également le paradoxe qui existe entre :
Pour accompagner cette évolution sans précédent et répondre de manière toujours plus précise aux besoins, des moyens se sont mis en place petit à petit :
Nous rencontrons une problématique certaine dans le choix de tous ces moyens : la multiplication des outils et solutions dans lesquelles il faut se retrouver.
D’autre part, parce que les attentes du client ont également changé. Alors que l’on pouvait se contenter de livrer des fonctionnalités deux ou trois fois par an, il faut être capable aujourd’hui de le faire « au fil de l’eau », plusieurs fois par mois. Le client doit être alimenté en flot continu de nouveautés.
Le client est également beaucoup plus exigeant et la panne de moins en moins tolérée. Pour répondre à ces nouveaux besoins et livrer plus rapidement de la valeur, tout en proposant un niveau de disponibilité optimal et tolérant aux pannes, il faut donc mutualiser les ressources et mettre en place des architectures et des infrastructures complexes.
Les applications sont maintenant distribuées, certaines fonctionnalités sont portées par le poste client et d’autres, par des composants serveurs. Toutes ces briques, chacune avec leur propre responsabilité, permettent de développer plus rapidement mais leur exploitation est bien plus complexe et leur mise en œuvre fait appel à des concepts nouveaux, complexes. Voici quelques concepts et techniques qui n’existaient pas il y a seulement 8 ans : orchestration, application 3tiers, fonctionnement stateless, API Gateway, CQRS, service mesh, Backends For Frontends, … Et d’autres qu’on ne voyait que dans les grandes entreprises : clustering, scalabilité, répartition de charge, etc.
Pour être efficace, le développeur doit donc être sensibilisé au métier des ingénieurs infra, réseau et système, savoir ce qu’est la virtualisation, la conteneurisation, à quoi sert un reverse proxy, un load balancer, un firewall, un routeur, etc. Ces éléments sont souvent invisibles mais sont essentiels car ils composent l’environnement qui héberge nos briques logicielles. Et je n’aborde même pas les problématiques du « Cloud » !
C’est une des raisons pour lesquelles, la philosophie DEVOPS est désormais de plus en plus présente au sein de nos entreprises. Elle aide au rapprochement des équipes de dev, des spécialistes systèmes et réseaux, et nous incite à comprendre les besoins opérationnels et être ainsi beaucoup plus efficace dans le développement de nos solutions.
1ère règle indispensable pour un être un super dev : savoir travailler en équipe ! Les organisations sont de plus en plus agiles, et les équipes de développement aussi. Cette philosophie est essentielle pour être meilleur. Nos journées commencent toujours par un « Daily-meeting » qui nous permet de définir des engagements communs dans le but d’obtenir et d’assumer les résultats ensemble.
Il faut, à mon sens, être avant tout un expert en développement avant d’être expert d’un langage (Java ou .net ou C++, etc.)
Un bon dev doit parfaitement connaître les « patterns » et les « concepts » car ce sont eux qui lui permettront de de s’adapter rapidement aux fameuses nouvelles stack techniques qui font leur apparition.
La conception logicielle doit toujours être au cœur de ces priorités car c’est elle qui lui évitera de subir le fameux « legacy ».
Savoir et accepter que l’on évolue dans un environnement complexe et que l’on doit s’intéresser à ce qu’il y a « autour » de notre logiciel. Être alerte et anticiper les besoins des différents acteurs. S’intéresser aux équipes opérationnelles est primordial pour mener à bien le projet. Et comme c’est réciproque, avec un poil de curiosité, nous apprenons beaucoup les uns des autres, et nous avançons efficacement.
Évidemment, tout bon développeur doit être constamment en veille des dernières technos. Pour autant, il ne faut pas tomber dans le « buzz » et vouloir à tout prix utiliser la dernière à la mode. D’abord parce que la « bonne » techno est celle qui est adaptée à notre besoin, et même à notre organisation et celle qui saura être pérenne. Ensuite parce que notre besoin n’est pas forcément le même que celui des autres.
Ne jamais baisser les bras devant un problème. La clé est de toujours chercher à comprendre.
La première solution à un problème complexe n’est que rarement la bonne ! Elle n’existe que pour nous rassurer.
Ex : « J’ai rajouté un Thread.Sleep (5000) et ça fixe le problème »?
Et si on devait attribuer la palme du dev high level +++, je dirai que c’est celui qui sait conjuguer l’expertise de la conception et du développement, en connaissant parfaitement les langages utilisés. Là on est au top ! ☺
Parlons de Genapi plus précisément car c’est l’entreprise que je connais le mieux.
Historiquement, nous sommes éditeur logiciels et nous nous transformons petit à petit en SAAS provider. Cette transformation s’accompagne de problématiques communes avec d’autres industries plus « hype ».
Nous faisons évoluer un monolithe mono-tenant que nous installons directement chez nos clients en une architecture multi-tenant basée sur des micro-services. Cela nous amène à devoir construire une architecture performante, résiliente, et sécurisée pour permettre à nos clients de digitaliser 99% de leur métier.
Une infrastructure est complexe :
Nous avons en production environ 150 machines virtuelles qui hébergent nos applicatifs et nous protégeons 45To de documents tout en permettant à leur propriétaire de les consulter immédiatement.
Nous devons gérer le stockage de 2To de nouveaux fichiers tous les mois. C’est plus que nos prévisions les plus « pessimistes » !
D’un point de vue technologie, nous n’avons pas à rougir. Nous utilisons en production un bus de données et avons une approche Event-driven pour la communication inter microservices. Nous utilisons évidemment des API REST, accessibles au travers d’une API Gateway et de reverse proxy. Nos microservices centralisent leurs logs avec la stack Elastic et sont tous déployés en CI/CD avec azure DevOps. Et bien d’autres !
Donc oui, pour continuer et accélérer notre transformation, nous avons besoin de développeurs modernes. Mais c’est aussi l’opportunité pour n’importe lequel d’entre eux de s’épanouir, progresser et continuer à apprendre.
Enfin, comme Genapi fait partie du groupe Septeo, c’est aussi l’opportunité de participer à la collaboration qui existe entre les différentes sociétés du groupe et dont émergent des solutions toujours plus innovantes : Intégration de la téléphonie, IA, Cloud, etc.
C’est un environnement très dynamique, loin du cliché de l’informatique de gestion.
Quoi de mieux qu’un environnement complexe et passionnant pour devenir un développeur moderne !
« Autant que nécessaire, aussi peu que possible » ! Et si tout ça te parle, rejoins la Team Septeo !
Adobe, l'empire créatif, et pas des moindres ! Belle ascension de la part de ces…
Est-ce plus simple de créer des morceaux avec les outils de Musique Assistée par Ordinateur…
Changer d’entreprise, c’est excitant. Nouveau challenge, nouveaux collègues, nouveau café. Mais, bien souvent, on oublie…
Ça n’étonnera personne si nous affirmons que le monde du développement logiciel est en constante…
En Allemagne, le travail en tandem à temps partiel, aussi appelé « jobsharing » est…