Sommaire
Bonjour Bonjour 😁,
Cette semaine, une fois n'est pas coutume, nous allons parler de développement logiciel (non, sans déconner ? 🤣).
Et je vais tenter de mettre en lumière le choix de pourquoi j'ai choisi le développement web plutôt que d'autres domaines, et ... il y en a ! (qui pour faire un peu d'assembleurs là ? 😁)
Vous avez une boisson chaude à portée de main ? OK ! alors c'est parti 😝
Cette liste ne sera pas exhaustive, il y a forcément des domaines que je n'ai pas cités, mais je vais essayer de vous donner une idée de ce qui existe.
Avant-propos : Quand je dis le mot "natif", c'est que l'application est conçue pour la plateforme citée juste après, a contrario des technologies dites "hybrides" qui permettent de cibler plusieurs plateformes avec peu de modifications ou pas de modification dans le codebase, mais avec des limites.
Vu que je suis dans l'écosystème Apple, ça aurait pu être mon choix principal, du coup je commence par ça...
Le développeur iOS est un développeur qui développe des applications natives pour les iPhone, et par extension pour les autres produits de la marque à la pomme, comme l'iPad, ou encore le Mac.
En fait, tout comme les clients de la marque, le développeur iOS est dans un écosystème, il utilise xCode pour faire son travail, xCode c'est l'IDE (environnement de développement) d'Apple, c'est un peu comme Visual Studio pour les développeurs Windows.
Tout est intégré et cela fonctionne très bien, tant que vous restez sur du Apple et respectez les guidelines d'Apple.
Auparavant, Objective-C était le langage de programmation utilisé, mais depuis quelques années, Apple a décidé de se mettre au Swift, un langage de programmation plus moderne.
Le gros désavantage selon moi, c'est que vous êtes totalement à la merci d'Apple, qui contrôle strictement ce qui se passe sur ses plateformes.
Après, c'est pour cela, qu’en tant qu'utilisateur, l'iPhone est si bien... mais en tant que développeur, c'est un peu frustrant.
Le seul moyen de diffuser votre application (officiellement et donc utilisé par la masse) est de passer par l'App Store, il y a un processus de validation qui peut s'avérer fastidieuse (j'en ai des souvenirs...), et gare si vous ne respectez pas les règles.
L'accès à un compte développeur Apple, coute $99 par ans, et vous devez avoir un Mac pour pouvoir développer (« xCode » n’existe que sur Mac).
Par exemple l'affaire Epic Games, qui a voulu contourner les règles de l'App Store en vendant directement en jeu, sans passer par le "in app purchase" d'Apple, et qui a été bannie de l'App Store.
Respectez les règles d’Apple, j’ai dit ! Pas possible ça 😛
En fait la raison principale pour laquelle autant j'utilise Apple comme utilisateur, mais que je ne développe pas pour cette plateforme, c'est ça.
Je ne souhaite pas donner trop de pouvoir à mon gagne-pain à une société tierce...
Car il n'y a pas vraiment de garde-fou
Le développeur Android, il crée des applications natives pour Android.
Son environnement de développement est Android Studio, si vous utilisez la suite Jetbrains (PHPStorm, Webstorm, Rubymine...)
Vous pouvez vous faire une idée d'Android Studio, car il est basé sur IntelliJ IDEA.
Auparavant, le langage de programmation utilisé était le Java, mais depuis quelques années, Google a décidé de se mettre au Kotlin.
Pour diffuser ces applications, vous passez majoritairement par le Play Store, mais il existe des alternatives comme F-Droid, ou encore l'App Store d'Amazon.
C'est le côté plus ouvert d'Android par rapport à iOS qui donne la possibilité d'avoir des alternatives au Play Store.
Cela reste cependant minoritaire, le Play Store reste le moyen principal.
L'accès pour pouvoir déposer vos applications sur le store vous coutera $25, à vie.
Plus ouvert qu'iOS, Google pousse de plus plus les PWA (progressive web app), permettant aux développeurs de créer des applications web, qui sont ensuite "installable" sur Android, cela se rapproche de l'expérience du natif même si ce n'est pas encore parfait.
Plutôt orienté vers les entreprises, il développe des applications pour Windows.
(Microsoft étant en écrasante majorité dans le monde de l’entreprise)
Windows ayant beaucoup évolué, auparavant, les applications natives étaient basées sur l'api appelé Win32.
Microsoft a mis en place l'api UWP (Universal Windows Platform), l'idée est qu'avec un seul codebase, il est possible de cibler l'écosystème Microsoft (en gros, la Xbox).
Un bel exemple d'application exploitant bien UWP, est Unigram, le client Telegram non officiel pour Windows.
Dans l'écosystème Windows, les langages de programmation « star » vont être des choses comme le C# ou des choses de plus bas niveau telles que le C++.
Windows ayant toujours été ouvert, il est possible de distribuer ses applications avec un "installateur" classique, néanmoins, il voudra le signer avec un certificat attestant de votre identité.
Moins restrictif qu'Apple, ce certificat peut vous être délivré par une autorité de confiance autre que Microsoft.
(Chez Apple pour les applications Mac, vous devez les faire signer par big A)
Bien que Windows ait toujours été très ouvert, depuis Windows 8 - 10, Microsoft met, comme les autres, son store d'application en avant.
Il existe des frameworks, permettant de cibler plusieurs plateformes avec le même code de base...
React Native (oui, c'est le petit web du framework web React) par exemple vous permet de créer des applications avec un feeling "natif", avec du JavaScript Ciblant principalement iOS et Android (et j'ai cru voir qu'il y a aussi du Windows qui commence à se faire).
Flutter, qui nous vient de chez Google, lui utilise le Dart comme langage de programmation.
Venant de chez Google, les tutos et le design sont très orientés "material design", les éléments d'interface poussés par Google.
Je n'ai volontairement pas mis "Ionic" dans cette liste, car celui-ci est purement web, autrement dit votre application est un navigateur embarqué qui affiche du HTML et du CSS et qui exécute du JavaScript.
Il y a également des choses comme QT qui existe, plus bas niveau, car, c'est du C++, mais cela vous permet de crée pour plusieurs plateformes (dont Linux).
React Native ou encore Flutter, eux utilisent les éléments natifs des systèmes d'exploitation pour faire l'affichage.
Comme je vous l'ai dit, cette liste n'est pas exhaustive, je voulais juste montrer que le monde du développement est vaste.
Maintenant qu'on a fait le tour de ce qui se fait, parlons web !
Il y a plusieurs notions...
Le back-end, c'est le code qui tourne sur le serveur, qui va gérer les données, les requêtes, les utilisateurs, etc.
En gros c'est le code que vous en tant qu'utilisateur ne voyez pas.
Les langages de back-end peuvent être les suivants (non exhaustif) : PHP, Python, Ruby, Java, NodeJS, C#, etc.
Et comme framework on retrouvera : Symfony 😍, Laravel, Django, Ruby on Rails, Spring, etc.
Le back-end communiqué avec votre base de données (PostgreSQL, MySQL, MongoDB, etc...), des « bases en mémoire » comme Redis, ou encore des bases de données orientées graphes comme Neo4J.
Le back-end expose toutes les données qu'il faut pour que le front-end puisse les exploiter.
C'est ce qui se passe dans le navigateur, c'est le code que vous voyez, qui va afficher les données, les formulaires, etc.
Ici le nombre de langages est restreint, puisque c'est du HTML, CSS et JavaScript.
Il y a des variantes à JavaScript, comme le TypeScript, qui est un superset de JavaScript, qui ajoute des fonctionnalités, comme le typage.
Le Typescript est transpiré en JavaScript, et donc il est possible de l'utiliser dans n'importe quel navigateur.
Dans les frameworks de front, il y a de quoi faire : StimulusJS, VueJS, React, Angular, svelte, etc.
Si vous avez un la flemme de faire du CSS from scratch (comme moi quoi), il y a des frameworks comme Bootstrap, TailwindCSS, etc.
C'est les développeurs qui savent gérer toute la chaine, ce qui se passe sur les serveurs et dans le navigateur.
Je fais partie de cette catégorie, mais, pour le front, je tente de rester dans la simplicité, je connais React, mais si je peux plutôt utiliser Stimulus, j'y vais.
Car je trouve que React (et surtout Redux) complique trop souvent les choses.
React, ou encore Angular sont des technologies quand on veut les maitrises à fond, on ne peut faire que ça, alors que des technologies comme Stimulus ou VueJS sont quand même plus simples
Une technologie comme React n'a de sens comme moi que dans les grands groupes comme Facebbok (son créateur).
J'en parle rapidement ici, car c'est un sujet d'actualité
Le microservice est l'idée de découper son application en plusieurs services, qui communiquent entre eux.
Il est souvent utilisé dans de grandes entreprises, car il peut être pertinent, chaque équipe travail sur ses micros services indépendants.
Le monolithique, que je vous conseille si vous vous lancez, tout se retrouve dans un gros projet "le monolithique majestueux".
Je vois souvent des entreprises type PME, vouloir allez dans le microservice, selon moi, c'est une erreur, c'est une méthode de travail efficiente quand on a de grosses ressources humaines (et donc, technique).
Tout ça pour ça ?
ici, je pense, à Ruby on Rails ou encore Symfony...
Imaginons, vous n'êtes, de base, pas développeur et pas très fortuné, mais vous avez une idée...
Ruby on rails ou encore Symfony, après avoir appris à s'en servir, vous permettrons de créer ce que vous voulez créer sans que cela vous coute trop cher, et j'en suis un exemple.
Il y a deux ans, je me lançais en 100% indépendant... et j'ai basé toute mon activité sur Symfony.
Il m'arrive de travailler sur des projets assez fous, ou je suis seul développeur, un projet similaire avec d'autres technologies demanderait au client bien plus de ressources (il en faudrait cinq des comme moi).
Mais il m'arrive aussi de bosser dans de plus grandes équipes, toujours sur Symfony, car il sait s'adapter et être aussi pertinent dans des structures plus grandes que des PME.
Ce site est un exemple, avez-vous eu besoin de quoi que ce soit pour lire cet article ? Non, vous passez par votre navigateur, et c'est tout.
Il n'y a également aucun tiers entre vous et moi (enfin si, votre navigateur, s'il respecte les standards Web alors, ce n'est pas un problème).
Il est donc possible de créer quelque chose, le rendre accessible, sans attendre la validation de qui que ce soit.
Le temps est une ressource très précieuse, passez des jours à attendre la validation d'un store, c'est chiant.
Tant que l'on respecte la loi (normal), personne ne peut vous retirer votre site où application web, sur un store, si Apple ou Google décide de vous virer, il ne reste plus que les yeux pour pleurer.
Il n'y a pas de problème de compatibilité avec les plateformes, le web, ça passe partout.
Si vous souhaitez faire une application qui "s'installe" vous le pouvez avec des outils comme Electron, certes c'est un gouffre à mémoire, mais ça marche et ça a permis à des entreprises de se lancer (Slack, par exemple).
Comme je le répète, c'est un standard ouvert, autrement dit plein de personnes travaillent dessus, et de là des choses super cool en sortent
C'est d'ailleurs pour ça qu'on a une aussi grande variété de framework front...
(Et c'est parfois compliquer pour s'y retrouver).
Vue, Angular... et mes chouchous Turbo et Stimulus, qui est la base de Symfony UX 😍...
Cette évolution constante fait que le secteur s'autorégule, on va parfois vers des inepties, la mode de Redux en était une.
Redux dans une PME n'a aucun sens, d'où l'article de son créateur
Du coup, aujourd'hui en plus d'avoir la possibilité d'en apprendre tous les jours on en a aussi pour tous les gouts de la petite entreprise qui se lance au grand groupe qui fait un bénéfice en milliard de *Inserer une monnaie ici*.
En fait, mon avis (subjectif, j'en conviens)…
Est surtout basé sur des valeurs de liberté et d'accessibilité, et je ne dois pas être le seul à avoir ces valeurs.
Et évidemment en tant que bon geek, moi je vois une formation sur SymfonyCast, je passe mon week-end dessus ... (à l'aide)
Bref, le web permet de faire des trucs fous... une idée suffit (et un peu de skill tech, bon j'avoue !)
Passez une très bonne semaine 😁, et, à bientôt pour un nouvel article.