Le marché du freelance en dev logiciel/fullstack est mort si on ne fait pas du Java/Angular ?
snake_case
Bonjour,
Je constate que les temps sont devenus durs pour chercher de nouvelles missions freelance en particulier dans le dev. Si on touche à des stacks de niche ou utilisées moyennement et qu'on s'enferme dedans, ça devient vite un vrai casse-tête pour trouver des missions. Ce que j'en tire principalement (simple étude statistique) c'est que les offres Java/Angular prédominent dans le marché et sont plus au moins réceptifs à des profils parfois moins séniors (3-5 ans d'exp). Cependant pour le reste des stacks à l'instar de Node.js (Express/Nest) combiné à du React/Redux/Vue, il y a quelques annonces qui tirent de leurs épingles. Certaines pour du Python (FastApi) avec un framework TypeScript en front. Peu de missions en PHP, en dev logiciel en C++ ou Rust. Et pour autant, les missions se raréfient et exigent des profils avec un certain nombre d'années de séniorité !
J'en reviens donc à me demander si des membres de cette communauté n'ayant pas comme stack de prédilection du Java (Spring) ressentent par rapport à cette situation et je voudrai également savoir s'il existe des gens ayant eu l'opportunité de basculer sur du Java (l'ayant déjà fait dans de précédentes expériences mais pas assez, ou encore ayant touché à des stacks similaires à du Java comme du C#/.NET Core).
Pour info, je suis dev depuis 2 ans et je fais principalement du NestJS/Angular dans le projet dans lequel je bosse actuellement. Nest étant très similaire à du Spring Boot, j'ai pour souhait peut-être de basculer dans cette techno même si ce sera pratiquement pas facile vu l'état du marché actuel puisque je me ferai laminer par des profils n'ayant fait que du Spring !
Je vous remercie pour vos retours
-
FreelanceDream
Nombre de posts : 152Nombre de likes : 120Inscrit : 10 juin 2012Alors plusieurs points
1) Fullstack
Y'a fullstack et fullstack. La plupart des profils fullstack que je vois sur le marché, c'est souvent des gens qui font du front en JS (rien à redire, normal) et qui commencent à faire du back avec du JS. L'argument c'est que c'est le même langage (JS ou Typescript) ce qui est pratique.
Sauf que le vrai fullstack à mon sens, c'est justement de faire le back avec autre chose que du JS, pour sortir de sa zone de confort et apprendre d'autres paradigmes...
Quand on fait du back avec du Java (ou .NET dans une moindre mesure), on apprend plein de concepts:
tests unitaires
tests d'intégration
refactoring et design propre via les classes
type paramétrés (generics)
programmation fonctionnelle
SQL et connection à une BDD
ORM
transactionnalité (couplage BDD + queue, rollback en cas de souci)
certificats TLS à installer sur son Tomcat/Netty/...
proxy web/HTTP à configurer
gestion des caches et invalidation de cache
multi instance
validation des inputs et protection contre les injections SQL/HTML
...
Je suis sûr qu'on peut faire tout ça en JS mais il ne faut pas se mentir, les langages backend comme Java ou .NET on une longueur d'avance sur ces sujets pour des raisons historiques
Et puis les petits jeunes qui voulaient enterrer Java trop vite c'est raté, Oracle a fait un boost du langage sur ces dernières années avec pleine de fonctionnalités copiées à gauche à droite sur Scala/Kotlin etc ...
Les langages basées sur JVM sont un écosystème énorme et très riche, j'ai envie de dire plus riche même que l'écosystème backend JSEt pour le switch JS -> Java, c'est pas tellement le langage le souci fondamental, c'est surtout la connaissance de l'écosystème. Par exemple, on sait qu'en Java pour faire de la sérialisation en JSON, y'a pas 36 000 solutions, c'est souvent Jackson ou une autre lib. Le nouveau venu doit intégrer toutes ces connaissances
2) Les technos "niches"
Comme son nom l'indique, c'est niche donc c'est galère à trouver du taf. GoLang par exemple s'est démocratisé ces dernières années grâce à la popularité de Terraform et K8S c'est pas pour autant qu'on va écrire tous les backend en Go ...
Rust c'est encore un autre délire. Le langage semble puissant et élégant mais difficile d'accès et plutôt réservé pour remplacer le C vieillissant et moins sûr. Personne ne va démarrer un projet backend en entreprise avec du Rust car il n'y a aucune raison objective et surtout c'est se tirer une balle dans le pieds pour la maintenance à long terme. Comment trouver des développeurs Rust facilement sur le marché ? Il y en a peu et ils ne sont pas disposfree-fullremoteHum...
Je rejoins pas mal de choses, je vous ai d'ailleurs mis un like. Par contre le java reste une niche qui n'est clairement pas utilisé par la grande majorité des entreprises, toutes entreprises confondues.
Oui, c'est puissant. D'ailleurs c'est le mieux techniquement pour faire du mobile (après le C++), même si React et consorts permettent de faire du natif mais il se trouve qu'à la transpilation ça fait du ... java (ou du C++).
Maintenant une longueur d'avance, je ne rejoins pas. Si l'on regarde côté backend non compilé : Laravel, Symfony, Django, ... sont autant sécurisés et plus pratiques. Si l'on regarde du côté des compilés, .net est du même niveau (coucou l'industrie du jeu vidéo qui utilise massivement du C#). La sécurité numéro un étant matérielle et après serveur.
Tout ça pour dire, que Java reste quand même une niche qui n'est pas répandue en réalité et ne l'est plus comme ce fût un standard de l'industrie il y a 15/20 ans. Cette époque, il va falloir l'admettre, est révolue.
Les standards sont au frameworks non compilés massivement et pour ceux compilés sont aux frameworks JS. (et je parle bien du logiciel, pas uniquement du web et le reste)
Concernant Rust, une étude a démontrée que le C était plus rapide...
Rust a des avantages sur certains points, mais pas sur le reste, donc le C a encore une très longue vie. Le C étant massivement le language utilisé dans le domaine de la sécurité informatique (que je connais modestement pour avoir fait des trucs en tant que dev dedans). Je ne dit pas que Rust n'est pas un concurrent sérieux. Il l'est. Mais il a des avantages et des inconvénients.
Par contre vous avez raison, le java a fait d'énormes progrès, notamment en performance. Mais ce n'est pas et probablement, ça ne sera jamais, le language que l'on vise pour la performance. C'est plutôt le language que l'on vise quand on une entreprise avec un historique (les anciennes entreprises, type SNCF, EDF, ...) et qui ont évolués sur ces languages. Donc par fénéantises et parce qu'ils ne veulent pas former leurs équipes à d'autres languages, ainsi que parce qu'ils ont des logiciels critiques qui sont utilisés tous les jours avec, ils prennent les évolutions du Java avec ses frameworks : SpringBoot, ect.
Mais vous ne verrez pas une startup, une PME ou même des grosses boites, partir sur des projets et choisir du Java. ils vont quasiments tous choisir du python, du JS ou du PHP. Fût une époque ou les grosses boitent pour faire de l'IA partaient sur du Java, c'est vrai, mais plus maintenant. Soit elles partent sur du R pour ceux qui sont data-scientists, soient, elles partent sur du python.
Et cela n'est pas lié forcément à une affaire de rapidité d'écriture. Quand ils partent sur du JS, ils mettent du TS. Quand ils partent sur du python, ils typent, font des modules, ect. C'est lié au fait qu'en réalité les performances sont similaires, voires, meilleures qu'en java, que la courbe d'apprentissage est moins problématique, ...
Entre en python faire :
- printer = printer()
et en java faire :
- Printer printer = new Printer()
Au pour / contre de tous les éléments, les gens vont au plus simple, efficace, puissant, pertinent, ... et donc ne vont pas vers java ... Alors je dit ça en 2024, d'après la réalité de la situation à échelle nationale et mondiale. Peut-être que le java va faire un sursaut incroyable et totalement changer la done dans les prochaines années. Je me permet cependant d'en douter.
De ma petite analyse les langages c'est clairement le python / php / javascript qui vont se tirer la bourre de plus en plus et vont être présent dans la très grande majorité des boites.
Tout ce que vous évoquez (test unitaire, ect) on le fait désormais sur tout les projets en JS. Le front est devenu limite plus complexe que le back aujourd'hui.
Là ou moi, je me permets cependant une remarque, c'est qu'un framework backend JS, est, selon moi, un risque. C'est valable, ça marche, des boites entières reposent dessus, mais ça reste trop bricolé par l'essence même de ce qu'est le JS, pour reposer une industrie qui ferait des millions dessus, alors que sur le front, ce n'est juste pas une option, peu importe le framework à la fin, ça va transpiler du javascript. Disons que c'est bien pour de la startup ou du MVP. Mais le mec qui va commencer à faire un SaaS et nous sortir un framework backend JS en choix technique ... bon ... soit la personne n'a aucune connaissance de ce qu'il se fait autrement et justifie ce mauvais choix par son manque de compétences, soit, la personne veut délibérément saboter quelque chose.
Ca a des avantages certains c'est sûr, faire un projet de jeux vidéos en ligne en navigateur et partir sur un framework backend JS est sûrement l'un des meilleurs choix à faire par exemple. Faire un projet de jeux vidéo en ligne en logiciel (un jeu qu'on install, dit autrement, un client lourd), les fameux jeux sur console, sur pc, ect, là, c'est sûrement le pire choix à faire et choisir du java sur l'un des deux cas, je ne vous en parle même pas ... là, on serait à l'apothéose du mauvais choix. Je vois mal les serveurs de World of warcraft fait avec du java et je pense qu'il n'y a pas besoin d'expliquer pourquoi...
Maintenant, quand on est en phase MMP (donc après le MVP) et que l'on commence à avoir des millions sur la table de la part d'investisseurs, il est temps de passer aux choses sérieuses et ici, python / php restent de très bon choix côtés backends, sur la très vaste majorités des projets qui pourraient être mis sur la table.
Sinon sur votre définition du fullstack, je suis en accord avec vous. -
NSV
Nombre de posts : 19Nombre de likes : 8Inscrit : 30 avril 2024Pour compléter ce qui a été dit.
Au delà du langage c'est surtout les concepts qui compte.
Par exemple la programmation réactive dont les bibliothèques RxJs et RxJava.
Donc sur un CV (et dans votre vie pro) au delà de maîtriser un langage c'est surtout comprendre et maîtriser les concepts, car ils sont souvent commun entre langage, entre type de base de données...
Des devs qui "font" du springboot simplement car ils bossent sur un projet qui a été bootstraper par spirngboot, alors qu'ils n'y comprennent pas grand chose et que dès qu'il faut mettre en place du spécifique, ils n'y arrivent plus. On en trouve beaucoup sur le marché.
Les langages à la mode change plus souvent que les concepts. Donc mieux vaut bien comprendre les concepts fondamentaux pour pouvoir changer de langage le cas échéant.
Les projets avec du front en js (react, angular,...) et un back en Java, peuvent permettre justement à des profils uniquement front ou uniquement back, de compléter son bagage technique