Méthode de travail des développeurs de logiciels/applications

Hello tout le monde.

Comme le stipule mon titre et pour faire simple, j’aimerais avoir des avis concernant la méthode de travail des développeurs de logiciels/applications.

En effet, suite à un entretien pour un apprentissage tout récemment, on m’a dit que ma méthode de programmation logiciel (C++ avec framework Qt) était un peu « dépassée » et comme quoi on faisait autrement de nos jours.
On m’a notamment parlé de Symfony.

Du coup je me pose la question: Quelle est la méthode la plus productive afin d’arriver à faire des applications pour Desktop mais aussi pour Smartphones (Android, iOS…) tout en gardant les fonctionnalités natives des appareils (notifications, utilisation de la caméra etc…).

Merci d’avance pour vos réponses.

Oui, symfony2 est un superbe framework en php, je vois pas bien le rapport par rapport au C/C++

Pour du desktop, c++ c’est bien, à mon avis

Pour du web moi je pratique symfony mais pourquoi par Ruby avec Rails ou même Django (framework python)

pour du natif Android ça sera Java

Mais, c’est pas tellement le langage, bien que le débat c’est langage interprétés VS langages compilés, mais plus la méthodologie, finis les chaiers des charges figés, les cycles de dev de 6 mois.

Il faut être Agile (scrum, Xp, Kanban), utiliser un framework si il y en a c’est pas mal et surtout dev proprement, Test Driven Dev par exemple, intégration continue, avec tests automatique, déploiements automatiques avec possibilité de rollback :smile:

Si tu veux, google un peu ces notions, je suis dispo pour te préciser ce que tu veux, perso mon setup, Eclipse, github, jenkins, phing et magallanes, ça te fait de la lecture

Bonne soirée !!

ps. j’adore la prog

4 « J'aime »

Merci pour tous ces nombreuses précisions et conseils !
Mais n’existe-il vraiment pas un framework qui puisse tant être intégrée en Desktop qu’en application pour Smartphone en y intégrant les options natives comme les notifications etc… ?

Cela serait un gain de temps énorme, tiens d’ailleurs en cherchant rapidement j’ai trouvé PhoneGap (http://phonegap.com/) qui semble adéquat.

Est-ce que vous en connaîtriez d’autres ?

j’ai lu sur phonegap, autant pour un mvp je suis plutôt partant, bien que j’ai commencé mon proto en java (pour être natif android) pour une app finale, je suis plus puriste et je préfère du natif.

J’ai lu un article sur un interpréteur python pour android, python ça s’installe facilement partout. Moi, j’aime pas java, mais java tu peux faire android, et du desktop, mais je pense que le code est pas exactement pareil.

Je pense que la techno dépends :

  • du projet
  • du/des plate-formes cibles
  • du temps/budget/équipe

Il n’y a pas de recette miracle, il suffit de voir les gueguerres entres langages et framework.

Mais apprendre à coder par exemple en TDD, dans un environnement versionné, ça oui, c’est adaptable à tous les projets et c’est vrai valeur ajoutée

1 « J'aime »

Bonjour,

En fait, je ne suis pas sur qu’il faille remettre en cause vos méthodes de travail mais plutôt votre positionnement sur le marché de l’informatique.
Faire du développement en Qt et C++ n’est pas un handicap, c’est juste qu’il est destiné à du développement de clients lourds, bureautique et parfois sur mobile.
Il semblerait que votre interlocuteur attendait plutôt que vous ayez des compétences web.
Plusieurs choix principaux possibles:

  • Mieux cibler votre entreprise si vous voulez faire plutôt du Qt et C++ (plutôt du bureautique donc). En effet, bien que ce ne soit pas du tout dépassé, c’est une compétence de niche, c’est à dire recherchée mais par des entreprises très « pointues » donc moins nombreuses.
  • Apprendre à faire du développement web. Symfony 2 étant un bon choix pour du développement PHP mais Django pourrait être choisi pour Python ou Play 2 pour du développement Java EE. Par ailleurs, vous pouvez de plus en plus accéder à toutes les fonctionnalités natives depuis les API web des navigateurs mobiles. Il faut quand même noter que même si votre interlocuteur vous a parlé de Symfony 2, vous ne ferez que du web, pas du bureautique et ce n’est pas très adapté au mobile (sauf pour faire l’API web si l’appli a une connexion web)
  • Apprendre à faire du développement pour mobile en vous concentrant sur Apache Cordoba / PhoneGap (qui permet d’encapsuler des pages web mais en ayant des accès aux API natives, à une base de données) ou bien en passant par Java pour Android, Objective-C/Swift pour IOS,…

Chaque choix n’exclut pas les autres: vous pouvez apprendre à faire du web et garder vos compétences actuelles.
En fait, malgré une approche technique dans la première partie de ma réponse, la première question est de savoir ce qui vous intéresse et quelle entreprise est susceptible de vous offrir l’environnement pour cela.

Cordialement

1 « J'aime »

Merci énormément pour vos deux réponses complètes :smiley:

Effectivement, aujourd’hui les applications desktop ne sont plus la majorité. On développe majoritairement aujourd’hui des applications web, qui utilisent le navigateur. Cette évolution est dû au fait que tous les ordinateurs disposent d’un navigateur, et qu’il suffit d’une URL pour accéder à l’application. De même, plus besoin d’installer ni de mettre à jour, puisque tout se passe sur le serveur/cloud.

Symfony est un framework php qui permet effectivement de créer des applications web, cela dit c’est loin d’être le seul. La plupart des languages de programmation permettent de développer des applications web, Java, Ruby, Python, Go et j’en passe. La plupart d’entre eux nécessite la connaissance d’une librairie supplémentaire (tout comme C++ avec Qt pour la bureautique), sauf les plus récents comme Go qui disposent en interne de tout le nécessaire pour programmer un server web moderne de manière efficace.

Concernant les mobiles, ils disposent aussi d’un navigateur web, c’est pourquoi il existe des applications web qui tournent aussi bien sur desktop que sur mobile.
Cependant, développer des applications web compatible mobile ajoute de nombreuses contraintes supplémentaires. La partie la plus fastidieuse du développement web reste la compatibilité inter-navigateur (IE, Firefox, Chrome, Safari), en voulant être compatible mobile, on ajoute encore de nouveaux navigateurs à cette liste. De plus Il faut parvenir à caler les mêmes fonctionnalités sur des écrans beaucoup plus petit, sans parler de la puissance disponible inférieur aux machines desktop.
C’est pourquoi tout entreprise qui souhaite développer des applis mobiles se pose cette question, développer en web ou en natif ? L’avantage du web c’est que généralement la même équipe responsable du site web desktop peut développer la version mobile, puisque les compétences techniques sont les mêmes.
Le natif quand à lui requiert des compétences particulières liées à l’OS du mobile (IOs, android), cependant l’application au final est souvent plus réactive et est mieux intégrée à l’OS.

Après il est difficile de vous orienter plus vers un language ou une technologie particulière, je me permet juste de vous gribouiller une vision du marché à l’heure actuelle.

1 « J'aime »

J’ajoute un point qui a son importance concernant le développement web, c’est que dès le départ il est courant d’avoir 2 équipes, une pour le front-end avec des compétences html/css/javascript, et une autre pour le back-end avec des compétences orientées serveur, notamment dans les languages cités dans ma première réponse.

On peut trouver des développeurs capables de faire les deux (aka dev full-stack) mais c’est plus rare car le sujet est très vaste.

1 « J'aime »

Bonjour,
Concernant le développement multi-plateforme (web, desktop & mobile), il existe plusieurs possibilités aujourd’hui. Au niveau de la productivité ça dépend de vos connaissances techniques et de vos applications existantes.

On peut maintenant réutiliser des composants d’un front-end d’applications Web dans un environnement desktop via des containers HTML comme CEF (Chromium Embedded Framework). C’est une solution utilisée par Steam, Spotify, ou Evernote. Ma société s’oriente sur du cloud first et c’est la solution envisagée pour développer ensuite des clients off-line.

On peut aussi adapter son front-end HTML à l’environnement mobile en s’orientant sur les techniques de Reponsive Design, mais sur mobile, l’utilisation d’application est préféré aux versions mobiles des sites webs.
Vous pouvez aussi comme mentionné plus haut réaliser des applications en utilisant le framework Apache Cordova. Ce qui vous permettra d’adresser tous les OS mobiles.

La dernière approche à ma connaissance est celle offerte par la société Xamarin (les créateurs de Mono, offrant le support de .Net en environnement UNIX) qui vous permet de développer sur les plateformes suivantes: Mac OS X, Windows, IOS, Android et Windows Phone. Si vous avez un code métier important c’est intéressant car vous le partager entre tous les OS tout en conservant un code UI spécifique à chaque plateforme. C’est la solution retenue par les développeurs de l’application rdio. Leurs licences restent chères mais le gain au niveau des coûts de développement et de maintenance compense.

1 « J'aime »

J’ai envie de dire que vu comment Qt s’oriente maintenant (avec Qt5), je pense que tu peux continuer ton C++/Qt et produire sur pas mal de plateformes (http://www.qt.io/qt-framework/ partie supported plateforme) qui contient tous les desktops + android/ios.
Et maintenant, ils font un binding javascript pour réduire au possible la complexité d’écrire du code c++ fiable.

Et concernant le c++, les dernières versions du langage peuvent créer un changement radical dans la manière d’écrire son code c++. C’est vraiment ultra sympa, mais ça fait beaucoup à apprendre/tester. Et cela implique des compilateurs à jour, donc principalement gcc et llvm/clang. Intel et Microsoft sont un peu à la bourre.

Un bon développeur, comme un informaticien c’est d’abord à mon sens quelqu’un qui sais apprendre et donc utiliser les ressources à sa disposition pour développer au fil du temps ses compétences.

C’est certes par évident mais, cela à son importance pour le développement de carrière je crois. Car être trop spécialisé tant fonctionnellement que techniquement, peu enfermer.

C++ est un langage sophistiqué et performant, il à aussi l’avantage d’être portable (à quelques exceptions près). Des langages il en existe beaucoup (C#, HTML, JavaScript, Java, Basic, Pascal, …).

Le Pascal Objet et par définition des outils comme Delphi qui à évoluer au fil du temps sont des outils bien adapté pour l’apprentissage de la programmation objet, qui est une spécificité de certains langages comme le Pascal Objet ou le C++. Méthode de programmation qui n’est pas évidente à acquérir pour des tas de raisons, elle l’est quand le développeur à à mon sens pas fait de procédurale auparavant.

Enfin, le choix de l’environnement, des outillages et frameworks ont une importance cruciale pour un projet. Mais quand on sais développer (écrire du code et pas que cela) on n’a en principe pas de difficultés à changer.