samedi 1 février 2014

Embaucher un employé ou ... un logiciel?

Pour répondre à cette question il faut penser aux raisons qui nous poussent à embaucher un employé. Plusieurs scénarios existent et certains sont très positifs mais d'autres le sont moins. Par exemple, si on embauche un vendeur pour défricher une nouvelle région c'est bon signe: plus de vendeurs, plus de ventes, plus de revenus. Toutefois, si c'est pour déléguer ou répartir des tâches administratives, c'est clairement moins profitable: plus d'employés, plus de dépenses, mêmes reveus, moins de profits.

Je n'essaie pas de dire qu'aucun employé ne doit être attitré à des tâches administratives. Toutefois, je suis clairement en train de dire qu'on doit garder ce nombre au minimum. Comment faire? Souvent en mettant en place un logiciel de gestion efficace. 

Pour vous aider à mieux comprendre mon point, imaginez une petite entreprise qui n'a que 2 employés. Ces 2 employés travaillent coeur et âme à leur entreprise et doivent travailler plus de 60 heures par semaine. Ayant un peu plus de revenus, ils décident d'embaucher une troisième personne pour lui déléguer leurs tâches administratives. Ce faisant, ils réduisent leurs heures hebdomadaires aux alentours de 45 heures et le problème est réglé. Plus ou moins. L'employé embauché coûtera au moins de 25 000$ par année. Cette personne ne vend pas et n'est pas responsable des opérations. C'est donc une dépense. Ce que j'appelle un "employé-dépense". 

Si ces mêmes entrepreneurs avaient investis plutôt dans un logiciel de gestion qui permettait de gérer leur facturation, comptabilité et opérations. Un tel logiciel, si bien implanté, pourrait permettre à nos entrepreneurs de diminuer leur charge de travail substantiellement puisqu'ils n'auront pas à entrer les données de manière redondantes à travers leurs différents systèmes.

Il est vrai qu'un logiciel de gestion adapté aux besoins d'une PME peut coûter dans les dizaines de milliers de dollars. Toutefois, comparativement au salaire d'un employé, c'est une dépense qui ne doit être fait qu'une fois. On retrouvera donc un retour sur investissement généralement en moins d'un an.

Un autre avantage important d'un logiciel sur mesure est l'encadrement qu'il apporte aux employés. Sans logiciel, les processus ne sont connus que par les employés. Ils deviennent donc presque tous des employés clés. Ils coûtent cher et sont indispensables à l'entreprise. Avec un bon logiciel, les processus et données sont contenus dans le logiciel. Ça facilite le travail des employés, diminue leur temps de formation et facilite le roulement, si nécessaire.

Lorsque je tiens ces propos, certains me font remarquer que si tout le monde pensait ainsi, on n'aurait plus d'emplois et on serait tous remplacés par des "machines". Rien de plus faux. Mon but n'est pas de réduire le nombre d'employés mais bien d'augmenter la proportion d'employés à valeur ajouté vs les "employés-dépenses".  Ce qu'il faut comprendre dans le monde des affaires c'est que si on réduit les dépenses, on augmente les profits. Généralement ceci se traduit par un plus grand ré-investissement dans l'entreprise afin d'augmenter les revenus et faire croître l'entreprise. Qui dit croissance, dit plus d'employés. 

Finalement, cet article ne se veut qu'un pensez-y-bien. Il y a évidemment plein de circonstances et toutes les entreprises sont différentes. Touteois, lorsque viendra le temps d'embaucher prenez le temps de vous poser la question: pourquoi j'embauche? Est-ce que je pourrai l'éviter? Est-ce qu'un logiciel ne me permettrait pas de réduire mes tâches actuelles et mieux encadrer mes employés actuels et futurs? Quel est le meilleur investissement?

mardi 6 août 2013

L'informatique et ses différentes formations

L'informatique existe depuis relativement longtemps mais a connu une percée tellement fulgurante dans les 20 dernières années que les formations n'ont pas nécessairement suivi le cours normal des choses. En effet, de manière générale, une profession sera tranquillement définie et encadrée par des ordres et des régulations au fur et à mesure que celle-ci progresse. Tel n'a pas été le cas de l'informatique. La demande a été tellement forte que n'importe qui pouvait (et peut encore) s'improviser informaticien sans formation quelconque.

Est-ce un problème? Pas nécessairement. Il vaut toutefois la peine de bien comprendre la différence entre les différents formations pour savoir ce qu'elles peuvent apporter.

 1- L'ingénierie informatique

L'ingénieur informatique détient au moins un baccalauréat en ingénierie. L'ingénieur apprendra bien plus que l'informatique. En fait un ingénieur apprend à résoudre des problèmes du mieux qu'il peut en fonction des moyens dont il dispose.  Il verra un grand nombre de disciplines qu'il n'aura peut être jamais à appliquer dans son travail.

L'ingénieur a également une responsabilité civile et déontologique telle que spécifiée par son ordre professionnel.

En pratique l'ingénieur sortira avec des connaissances de bases en programmation ou dans différents aspects informatiques, mais aura surtout compris et appris comment approcher un problème informatique et le résoudre du mieux qu'il peut en fonction de la situation donnée: contexte économique, échéancier, collaborateurs, etc. La méthodologie prévaut sur la connaissance des outils.

2- Le bacc informatique

Un tel bacc est plus axée sur la l'application pratique. Par exemple, pour le logiciel, le bacc va enseigner plusieurs langages de programmation, les différents métiers informatiques et leurs relations (assurance qualité, développement, support, architecture, etc.).

Le diplômé informatique universitaire a donc tous les outils pour être un excellent programmeur. Il comprend différents langages de programmation et sait comment les appliquer en entreprise.

3- La technique informatique

Cette formation permet à l'informaticien d'apprendre les bases de l'informatique en moins de temps.

Généralement un technicien informatique sortant directement du cégep aura toutes les connaissances nécessaires pour attaquer un secteur bien précis (ex: multimédia, assurance qualité, programmation java, etc.). Il aura toutefois moins de connaissances générales des autres secteurs de l'informatique et de leurs liens les uns avec les autres. Il aura également moins de connaissances dans les métiers entourant le sien.

4-Le certificat informatique

Le détenteur d'une certificat a généralement appris une portion très précise du métier informatique. Ce sera par exemple Gestionnaire de Projet Professionnel, Professionel de sécurité informatique, Professionnel de l'infonuagique, etc. Dépendamment du type d'emploi, ceci peut être amplement suffisant si l'emploi ne requiert que cette capacité ou si cette formation vient complémenter d'autres connaissances.

5- L'apprentissage autonome

C'est une façon mignonne de dire autodidacte. Celui qui s'enseigne lui-même n'a pas de formation homologué mais il a appris soit par des formations en ligne, soit par des livres ou carrément en entreprise.

Chaque formation a sa raison d'être. Mon rôle n'est pas de dire quelle formation est meilleure qu'une autre. Ça dépend beaucoup plus du désir/besoin de l'informaticien et de son employeur. Quelqu'un de très spécialisé pourra facilement se satisfaire d'un diplôme du cégep ou encore d'une certificat informatique. Quelqu'un qui souhaite toucher à plusieurs portions de l'informatique pourra aller chercher un diplôme universitaire alors que quelqu'un qui cherche à diriger et à prendre des responsabilités plus accrues pourra se diriger vers l'ingénierie. Du point de vue de l'employeur la formation est surtout pertinente dans les premières années d'expérience d'un informaticien. Dépendamment du poste que l'on veut combler, on joue les probabilités en prenant quelqu'un qui a une formation versus quelqu'un qui n'en a pas.

Ceci dit, tout ceci est théorique. En pratique j'ai vu des ingénieurs d'une grande incompétence comme j'ai vu des autodidactes faire partie des informaticiens les plus brillants et les mieux structurés. De mon côté j'ai appris à évaluer les informaticiens par leurs capacités pratiques et non leurs formations théoriques.

Je ne cacherai pas qu'en général je trouve que les ingénieurs et diplômés du bacc ont une meilleure structure et une meilleure approche organisationnelle qu'un autodidacte par exemple. Celui-ci viendra très souvent à bout d'un problème mais au coût de développer un produit qui est difficile à maintenir et qui ne tiendra pas nécessairement la route à moyen ou long terme. Il m'est arrivé maintes fois de refuser des reprises de mandats de clients potentiels simplement parce que le développeur précédent qui n'avait pas une structure appropriée, a fait un travail "irrécupérable". Ceci dit, il s'agit ici de généralisations....

Selon moi, la formation nous donnera un bon indice sur le dévouement, la structure et la capacité à s'adapter du candidat. Ceci dit, on finit tous par apprendre bien plus sur le marché du travail que par nos formations. C'est pourquoi il faut trouver des moyens de juger l'individu et ses expériences plutôt qu'uniquement sa formation...

mercredi 3 juillet 2013

Faut-il prendre le côté du client ou du développeur?

Dans le domaine du développement logiciel, particulièrement sur mesure, il arrive très fréquemment que des débats émanent entre les développeurs et les clients. Ces débats constructifs portent généralement sur comment devrait être développé un module ou une spécification précise. Dans ces situations est-ce que le client a toujours raison?

Le client est celui qui paie la facture du développeur...donc à la fin c'est lui qui aura le dernier mot.Toutefois, tant le client que le développeur peut apporter des pistes importantes à prendre en considération.

Voici quelques exemples de cas types dans ce genre de débat:

1 - Le développeur veut développer la solution la plus simple
Ceci est très fréquent. Si on demande à un développeur comment il compte faire une telle fonctionnalité, il arrivera fréquemment que celui-ci nous présentera la solution la plus simple "techniquement". Bien que cette solution est peut être moins coûteuse, elle peut être moins efficace et amener des coûts autres aux clients.

Ce genre de comportement a mener a de bonnes conceptions logiciels d'un aspect ingénierie mais horribles en terme d'expérience utilisateur et en terme d'efficacité.

Un bon exemple de ce type de conception logiciel orienté par les développeurs sont les systèmes d'exploitation des téléphones. Avant le IPhone, les téléphones avaient des fonctions évoluées mais tellement nulles au point de vue utilisation qu'elles étaient à peine exploitées. Pourquoi? Parce que ceux qui les ont conçu ont d'abord pensé à la fonctionnalité avant de penser à l'utilisation. Apple a complètement changé la donne en offrant des appareils extrêmement ergonomiques.

D'ailleurs, Apple a révolutionner cette façon de penser en terme de développement technologique. Un appareil offrant une même fonctionnalité qu'un autre mais avec une interface plus ergonomique pourra être bien plus profitable.


2- Le client n'est pas conscient de l'importance de l'intégrité des données

C'est évident que le développeur n'a pas toujours tort. Prenons un exemple que je rencontre très fréquemment: la gestion des clients. Peu importe le logiciel, ceux-ci contiennent souvent la gestion de clients (ajouter, modifier, supprimer un client, etc.). Dans un tel logiciel, le client est rattaché à d'autres entités (ex: les commandes, les factures, etc.). Une des spécifications que demandera le client est de pouvoir supprimer un client. C'est possible mais qu'arrive-t-il à toutes les entités qui y sont rattachés? Est-ce que ça veut dire que les commandes ou factures doivent se retrouver sans client? Évidemment pas.  Autrement on se retrouverait avec un logiciel à données non-intègres. Ce qui est la chose la plus importante à éviter.

Pour un développeur ce genre de conséquence en cascade est évidente. Toutefois il est normal qu'elle ne l'est pas pour le client. Il faut donc trouver un moyen de "supprimer un client" sans toutefois affecter le reste de l'application. Dans ce cas précis, la solution est souvent de permettre d'archiver un client. Ceci ne supprime pas le client complètement du système mais le retire là où il n'est plus nécessaire de le voir. C'est un exemple bien simple mais qui peut être évidemment bien plus complexe dans des logiciels évolués.

3- Le client n'est pas conscient de tout ce qui cascade des changements demandés
"Tout ce que je veux c'est une liste des clients". Ca parraît bien simple en effet. Toutefois mille questions peuvent en découler: Peut-on la trier? Peut-on la filtrer cette liste? Combien de clients veut-on voir par page? Tous? Et s'il y en a 50 000? Quelles informations du client veut-on y voir? Est-ce que je veux pouvoir exporter cette liste en Excel ou dans un autre format? Etc.

Une fonctionnalité qui peut parraître la plus simple au monde peut être très complexe. Dans ces circonstances il faut pouvoir discuter de ce qui est désiré et ce qu'il est possible de faire. Parfois, le développeur, en expliquant ce qu'il peut faire, va donner des idées au client pour amener le logiciel à un autre niveau.

C'est un peu comme demandé à un concessionnaire automobile: "je veux une voiture". Une voiture peut coûter si peu que 10 000$ mais peut également valoir plus de 100 000$.

4- Le développeur ne se met pas dans la peau des utilisateurs
En développant un logiciel, on l'utilise d'une certaine façon. Puisqu'on l'a conçu, on l'utilise comme il doit être utilisé. Toutefois un utilisateur pourra l'utiliser différemment. Lui ne sait pas exactement comment il a été conçu donc il va tester les limites du logiciel pour tenter de l'utiliser comme bon lui semble. C'est normal et c'est désiré.

Le développeur devrait toujours prendre le temps de penser aux différentes méthodes d'utilisation d'un logiciel et d'essayer de guider l'utilisateur dans sa bonne utilisation. Il est presque impossible de tout prévoir dès le départ mais il faut prévoir du temps pour s'asseoir avec les clients et observer leur utilisation du logiciel. 

Ce qu'il faut retenir de tout ça est que la communication entre le client et le développeur est primordial. Ce genre de débat n'est pas nocif. Au contraire, il doit prendre place. Le résultat sera souvent très constructif.

Le UX (User Experience) est une spécialité qui est justement né de ce genre de débat. Le spécialiste UX travaille avec le client et le fournisseur pour trouver la conception logicielle la plus efficace pour le client en prenant en compte les contraintes techniques. Celui-ci va permettre au client d'obtenir le logiciel le plus efficace en terme d'ergonomie tout en permettant au développeur de respecter les règles d'intégrité du logiciel.

mardi 14 mai 2013

5 indices qu'il est temps de procéder à une refonte logicielle

Une refonte logicielle n'est pas une tâche facile En effet cette tâche qui consiste à remplacer un logiciel par un nouveau logiciel entraîne très souvent des difficultés à plusieurs niveaux dans une entreprise. Toutefois, bien que ce soit difficile, il s'avère que ce processus est souvent nécessaire. Dans cet article j'explorerai certains indices qui peuvent nous indiquer qu'il est temps pour procéder à une refonte logicielle.

Évidemment la raison du "ça fait déjà 5 ans que ce fut développé" n'est pas bonne. En effet, on peut avoir un logiciel en place depuis maintes années, le maintenir et l'améliorer année après année de telle sorte à ce qu'il soit tout aussi pertinent aujourd'hui. L'âge en soit n'est pas une raison. Ceci étant dit plusieurs raisons peuvent en découler directement ou indirectement. Un des points importants à prendre en compte est le fait qu'un logiciel écrit plusieurs années plus tard peut souvent coûter beaucoup moins cher.

Progression des coûts de développement:
Un logiciel écrit 10 ans plus tard peut coûter 5 fois moins cher (données fictives)


Voici ma liste des 5 indices qu'il est temps de procéder à une refonte logicielle

1- Quand on n'ose pas modifier notre logiciel

Un logiciel bien conçu doit non seulement être durable (dans la mesure du possible) mais doit également permettre d'y apporter des modifications régulièrement. Un logiciel de gestion d'entreprise, plus particulièrement, devra être mis à jour régulièrement pour répondre à l'évolution de l'entreprise. 

Ainsi si vous ne le mettez pas à jour pour quelconque raison que ce soit (fragilité, coût, etc.), c'est qu'il est temps d'investiguer s'il n'est pas temps de changer de logiciel

2- Quand le coût d'une modification est très importante

Pour bien comprendre ce point, il suffit de comprendre que l'évolution des technologies tend à faciliter le développement logiciel. Par exemple, un site web conçu en quelques jours avec WordPress aujourd'hui pouvait prendre plusieurs mois il y a seulement quelques années. 

Donc, même si votre logiciel est encore pertinent et continue à évoluer avec votre entreprise il se peut que chaque changement, aussi petit soit-il, prenne beaucoup de temps et coûte très cher. S'il en est ainsi c'est souvent parce que le logiciel a été développé dans des technologies qui commencent à dater. Le développement est ainsi plus long et périlleux qu'avec certaines des nouvelles technologies. 

Si vous trouvez que la maintenance et l'évolution de votre logiciel est très dispendieuse et lourde, investiguez pour valider si ce n'est pas dû à un logiciel qui serait prêt à être changé.

3- Quand on a du mal à trouver une compagnie ou un consultant pour reprendre le développement

Certaines technologies ne sont plus très "mainstream". Par exemple, on retrouve beaucoup moins de programmeurs Cobol que de programmeurs Java. Il peut donc s'avérer très difficile et/ou coûteux de remplacer les programmeurs pour un logiciel qui commence à dater. 

Encore là il faut évaluer s'il est rentable à court, moyen ou long terme de continuer à payer le gros prix pour un logiciel qui n'est peut être plus à la hauteur.

4- Quand on "patch" le logiciel par des feuilles Excel

Le classique! Créer des bases de données maison en Excel pour permettre de combler certains problèmes ou manques de notre logiciel. Les feuilles Excel ne sont pas des base de données. Oui on peut y conserver de l'information mais cette information n'est pas indexée, normalisée et n'est pas dans un format qui favorise la collaboration.

Normalement, vous devriez apporter des modifications à votre logiciel plutôt que de créer des outils autour pour combler l'évolution de votre entreprise. Ce que vous créez autour est un niveau de complexité additionnel qui, à moyen ou long terme, pourra coûter très cher si vous vous y fiez trop.

Si vous utilisez des feuilles Excel comme bases de données, c'est un signe que votre logiciel devrait être mis à jour...et si vous ne le faîtes pas...je vous renvoie au point 1 :)

5- Quand on sent que la productivité des opérations en souffre

A mon humble avis, une solution logicielle doit vous aider à optimiser vos opérations. Si vous trouvez que vos opérations ne sont pas optimisés, posez-vous la question pourquoi. Si c'est parce que vous n'avez pas mis d'outils en place pour le faire c'est une chose. Toutefois, si c'est parce que votre logiciel est fait d'une certaine façon et que cette façon n'est pas optimale, il faut y remédier. Est-ce possible de le mettre à jour pour remédier à la situation? Ou doit-on changer complètement notre outil?

N'oubliez pas qu'il s'agit ici d'indices et non de diagnostics. Il se peut très bien que votre logiciel remplisse un ou plusieurs de ces indices sans qu'une refonte ne soit nécessaire. Toutefois, si vous vous sentez concerné par un de ces points, je vous invite à approfondir le sujet pour savoir s'il vaut la peine à court, moyen ou long terme de changer votre suite logicielle. Une bonne suite logicielle peut faire toute la différence.

Dans mon prochain article j'explorerai les causes pour laquelle une refonte est souvent complexe et  pénible. Même si elle s'avère nécessaire, il est important de comprendre pourquoi elle est complexe. Le comprendre est la première étape à franchir pour passer au travers.




mardi 12 février 2013

5 conseils pour mieux gérer votre panoplie de logiciels

Dans le monde des affaires, il est rare que des entreprises aient un seul logiciel pour répondre à tous leurs besoins. Généralement, les entreprises, surtout les PME, auront une panoplie de logiciels qui, mis ensemble, répondent à la majorité des besoins mais qui, entre eux, s'entrecoupent au niveau des fonctionnalités. Le superflu causer par cette redondance n'est pas idéale mais, si elle est bien gérée, peut être acceptable. 

Voici 5 conseils qui peuvent vous aider à mieux gérer cette situation: 

vendredi 28 septembre 2012

Une rare erreur d'Apple: Maps

Il est plutôt difficile de trouver des défaillances à Apple depuis maintenant plus d'une décennie. En effet, leurs succès tant au niveau matériel que logiciel sont indéniables et presque sans faute.Toutefois, avec leur IOS6, ils en ont fait une; une qu'ils auraient pu facilement éviter. Leur erreur a été de remplacer un logiciel avant qu'il ne soit prêt.

Apple Maps ne possède pas de directions de transports en commun.
Au lieu, on est redirigé à un écran nous proposant des alternatives.

samedi 18 février 2012

Pourquoi un logiciel d'entreprise coûte si cher?

Cette question m'est parfois posée mais, à vrai dire, pas suffisamment à mon goût. C'est le genre de question à laquelle j'aime répondre car c'est généralement ce qui m'aidera à ouvrir un dialogue honnête et ouvert avec des futurs clients.

Comment calcule-t-on le coût d'un logiciel?

Un logiciel comme tout produit doit être développé, produit, supporté, testé, maintenu, déployé et vendu.  En fonction du modèle d'affaires, certaines des tâches seront privilégiées par rapport à d'autres.

Quoi qu'il en soit toutes ces tâches combinées coûteront relativement cher. Dîtes-vous qu'un logiciel, aussi petit soit-il, coûtera dans les dizaines de milliers de dollars à développer. Pourquoi? Imaginez seulement payer un programmeur quelques mois pour développer un petit logiciel et vous comprendrez aussitôt l'implication budgétaire que ça représente. Cet exemple ne prend pas en compte tous les autres coûts dont je parlais plus tôt et les profits que voudront faire les fournisseurs.