vendredi 17 janvier 2014

The Troll Inception - Objective Reality Php Framework

The Troll Inception is an objective reality php "solution" NOT A FRAMEWORK, based over the CSS (Code Similar Situations) principle, and a strict personal notion of object, all thought by Edouard Kombo.

Because you don't have to learn a framework, but only good development practices, TTI is not a framework, but a concentration of good practices made extremely intuitive and playful!

The initiative behind TTI was to rethink the notion of object based from the CABIN principle (http://le-code-vulgarise.blogspot.fr/2014/01/principe-cabin-pour-la-construction-d.html).
We truly believe a true object is only an interface, implemented by an abstracted shape you can concretely use. That's all!
That means, a concrete class that doesn't have a contract with an abstract class and an interface, can't be considered as real object, but rather as a trait, or "lost son", or anything else, but not as an object.

Based from this notion, we developed two powerfull collection of generic classes that is a standard base for true objects, and, that can be used in any of your projects to fully respect SOLID and GRASP principles.

"InterfaceFactory" and "AbstractFactory" collection of classes, are the heart of The Troll Inception solution.
AbstractFactory is a collection of abstracted classes that have very single responsibilities implemented by specifics and generic interfaces grouped in the InterfaceFactory.

Together, they offer powerfull possibilities and constraints for better closed development practices in your applications development.

Coupled with the CSS principle (http://le-code-vulgarise.blogspot.fr/2014/01/what-is-css-principle.html) and the Objective Reality (http://le-code-vulgarise.blogspot.fr/2014/01/what-is-objective-reality-design-pattern.html), TTI offers you a new generation of framework that can involve agile development.



The Troll Inception STORY (CSS and Objective Reality implementation)

You play Roar, a troll cave, lost in the Breeze forest by his stupidity. To survive, he has to conquer and dominate this forest.
Roar has several tools at its disposal, like a torch, a map, an eagle that will guide him to the best routes he can teleport to, via the magical portal, an ancestral passort...
The goal is to reach all routes and respond, to affirm your territory.
When Roar responds, he may beat the asian forest spirit, "Foucking Law".
Foucking Law has one powerful wild beast, CodeCeption, which will test Roar as many possible times, like a ghost.
Everytime Roar responds successfully to Foucking Law, he wins 5 Chicken points.

These points will help you estimate more precisely the technical debt a project will introduce.



How is it applicable?
 
You start to play with objective reality in the heart of your application, just by renaming variables as living objects or characters of the story telling.
This way, all the application you are designing, is easily printable in your subconscious mind.
You are playing with it, and it is now easier for other developers to play with it too.



How to download the Troll Inception Project?

Go on Github, just here: https://github.com/edouardkombo/TheTrollInception

What is CSS principle?

Before introducing you the CSS principle, it is extremely important not to confuse the CSS (Cascading Style Sheet) language, with CSS (Code Similar Situations) principle.


What is CSS Principle?

CSS principle means Code Similar Situations.
This principle has been introduced by Edouard Kombo, starting from the need to bring more creativity in applications code.

The theory is, if we can connect the code and the developer by its creativity, then we will no more learn, we will start playing with the code forever.


Why do CSS principe useful?
 
Because it is hard in very short development process to understand how to apply all necessary design patterns.


Because it is hard to fully capture in seconds, a complex code from someone else, or even from ourself, some weeks or months later.


Because too much complex code doesn't connect you with your passion, and makes you code bad.


Because it is hard for beginners and more experienced developers to intuitively appropriate themselves a complex architecture.


Because it is funnier to code something you can play with, and that will be easier for others, to intuitively understand and play with it too.



What do CSS principle recommend?
 
It recommends to URA (Understand, retain, apply) something, by inspiring yourself from a similar situation we've already seen or lived in real life (story telling, concrete experience, game, cartoon, movie...).



How do CSS principle can solve those problems?

Instead of simply coding instructions and objects, when you play with them, then you emotionnaly connect with your application and your job gets funnier, more pleasant and intuitively accessible by other developpers.

What is Objective Reality design pattern?

Objective Reality is the fact of coding real and funny situations, in an objective and professional goal.
It is a design pattern based over the CSS (Code Similar Situations) principle, that has also been thought by Edouard Kombo.



Concrete Example

Before, to open a file and send it by mail, you were coding like this:
$parser = new Parser();
$mail = new Mailer();

$file = $parser->open($file);
$mail->send($file);
Now, with Objective Reality design pattern, you should imagine a story and code like this:
$torch = new Parser();
$boomerang = new Mailer();

$file = $torch->open($file);
$boomerang->send($file);

Explanation

In the second example, you added a little bit of creativity in your code, that implies a story-telling creation.
That's it, with a story telling, you are now able to play with your code, and help other developers understand more easily the purpose of your instructions.

The structure of your program doesn't have to change, just rename the variables to begin openning a universe that could revolutionnate the way you develop applications and master it.


Advantages

When you play, you except to win something and earn a reward.

By example, you can establish within your team a reward board for every classes tested and developed that will help you estimate more precisely the technical debt of a project.

In all cases, developers will have the illusion to play with something, rather than building a complex architecture.


What kind of story telling to apply?

The goal of Objective Reality is not to apply fancy things to variables names.
There are rules to make it efficient.

The first and unique rule is to apply CSS (Code Similar Situations) principle.
It could be a movie you liked, a cartoon, a real life experience, it could be anything you imagine, but only a situation the largest number of people may have lived.

This will significantly facilitate code reuse of your applications.


To learn more about CSS principle, click here http://le-code-vulgarise.blogspot.fr/2014/01/what-is-css-principle.html.

Pourquoi les diplômes et l'expérience dans le web sont des pièges pour recruteurs old school?

Je vais essayer d'expliquer cet article assez simplement.


Pour savoir sur quelles bases recruter un profil dans le web, il faut avoir compris deux facteurs incontournables:
1. Le monde du web ne cesse d'évoluer et ce, très vite.
2. Le savoir nécessaire est disponible parmi des millions de sites web, et il ne cesse de se multiplier (le savoir).

Une fois ces principes compris, passons à table.
Des fois, je rigole lorsque des recruteurs disent "vous avez 10 ans d'expérience, mais pas bac+8, donc salaire de débutant, 32k€".

C'est imagé, mais révélateur d'un profond malaise et d'une exploitation maladroite et très risquée des compétences dans le milieu. 
Pourquoi?

Tout simplement, parce que:
1. L'expérience signifie uniquement qu'un candidat a su survivre et durer dans le métier, elle ne garantit absolument pas que le savoir acquis correspond aux besoins actuels du marché.

2. Le diplôme lui, atteste de connaissances théoriques à un temps t dans un monde à t+5, au sein d'écoles dans lesquelles, on conditionne souvent les élèves avec une doctrine "au bout de 3 ans, si vous n'êtes pas chef de projet, vous raterez votre vie".
Cette doctrine, assimilée au web est d'une débilité profonde et ne crée surtout pas des passionnés, qui eux contribuent à l'évolution de ce métier.

3. Le diplômé et l'expérimenté arriveront à un moment donné, si ils survivent, au même stade, apprendre les techniques modernes pour rester à jour.

Ce troisième point ammène à la solution finale, quel est le candidat web idéal?
Un candidat qui fait de la veille permanente et, qui est passionné, doit être la base de tout développeur, c'est le moteur de l'évolution.
Si ce candidat a de l'expérience professionnelle, c'est bien, cela garanti juste que le candidat s'est adapté aux enjeux des entreprises concernées, mais peut-être pas aux vôtres.
Si il utilise des frameworks, c'est mieux.
Si il s'exerce à côté, c'est encore mieux, c'est même excellent, cela prouve qu'il sort des sentiers battus et parfait ses connaissances en permanence.

Donc, il faudra le plus souvent prendre des risques avec des profils atypiques qui en veulent le plus, et comprennent mieux, plutôt que des profils qui ne font que ce qui est nécessaire sans contribuer autrement au métier, et à l'évolution de votre entreprise.
Le choix vous appartient.

Enfin, sur quoi baser les "prétentions salariales"?
Bon, cette question mérite un sujet à part, car lourde de sens.
J'ai crée un sujet qui en parle longuement ici http://le-code-vulgarise.blogspot.fr/2014/01/quelles-sont-vos-pretentions-salariales.html.
Mais, dans le monde du web, il est inutile de baser des rémunérations salariales sur les diplômes, au mieux, sur des certifications, car elles sont plus actuelles.

La prochaine fois, que vous recruterez dans le web, libérez-vous du poids des traditions, elles ne favorisent pas, dans la majorité des cas, une réflexion saine et juste.

Le marché des frameworks php est mort!

C'est vrai, le titre peut sembler assez terrifiant, mais il me semble, est terriblement vrai à l'heure où j'écris ces lignes.

Je ne dispose pas de chiffres officiels pour étayer mes propos, mais je tire ma thèse de faits que je constate.
Dans la sphère des frameworks, il y a deux leaders, Symfony et Zend, puis, des challengers (cakePhp, Laravel, Yii...), et puis il y a des espoirs, caractérisés par des centaines, voir des milliers de frameworks persos.

Mais pourquoi autant de frameworks disponibles?

Tout d'abord, il est primordial de redéfinir la notion de framework.
Un framework est littéralement une base qui propose des outils de travail, on peut l'apparenter à une malette. Cette malette permet, à plusieurs développeurs n'importe où dans le monde, de partager des outils commun, ce qui facilite la reprise de projets et l'adoption de bonnes pratiques de développement.

Cependant, si la seule utilisation des frameworks conçus par un petit nombre est la norme, aujourd'hui, de plus en plus d'alternatives se créent laissant émerger une nouvelle tendance... la création de son propre framework perso, qui répondrait à des problématiques plus personnelles, que les solutions existantes ne peuvent résoudre dans l'immédiat pour diverses raisons.
Comment se rendre compte de cette tendance? Une simple recherche google vous laissera découvrir des centaines, voir des milliers de frameworks déjà existant, et de nouveaux qui se créent chaque jour.

Nous observons ainsi, le signe de l'existence de développeurs créatifs à travers le monde, qui sont des détenteurs de problèmes, quels qu'ils soient, et, qui vont aujourd'hui penser par eux-mêmes, afin de trouver des solutions aux problèmes spécifiques qu'ils rencontrent.
Cette tendance multiplie les outils de travail, adaptés à la propre personnalité des détenteurs de problèmes, et sature le marché des frameworks php en particulier.

Pour preuve, au sein des entreprises, aucun framework ne remporte l'unanimité, chaque équipe choisit un framework en fonction de sa sensibilité, ce qui peut compliquer l'accessibilité à l'emploi de certains profils pour qui, il nécessiterait un investissement en temps de formation et d'apprentissage.

A mon avis, toute cette masse ne constitue pas une aide au métier, mais il est important de comprendre ce véritable appel à l'unité.
Plutôt que d'apprendre aujourd'hui un framework, il est devenu indispensable d'apprendre uniquement des bonnes pratiques communes, et, le faire de la manière la plus ludique possible, pour que le maximum de ces esprits créatifs puissent se retrouver dans ce nouvel outil commun et le partager plus aisément.

Ainsi, une nouvelle génération de framework est devenue incontournable, une génération caractérisée par une solution suffisamment fédératrice de ces énergies détentrices de problèmes particuliers pour harmoniser le marché.
C'est dans ce but que j'ai crée The Troll Inception, http://www.breezeframework.com.
Le but est de réunir toute cette énergie créatrice, tous ces détenteurs de problèmes, autour d'un principe simple, CSS (Code Similar Situations), et du design pattern Objective Reality, afin de réfléchir ensembles à l'avenir, sur comment faire d'une solution unique, un divertissement ludique.

Enfin, cette nouvelle génération de framework, serait, à mon sens, ni plus, ni moins, qu'une communauté de réflexion composée du maximum d'esprits créatifs.

jeudi 16 janvier 2014

Facebook veut-il concurrencer Git avec Mercurial?

Alors, pourquoi écrire ce sujet sur facebook et git?
Simplement, parce que je pense que c'est une actualité qui vaut son pesant d'or pour des passionnés de veille comme moi.

Jusque il y a deux ans, facebook, déjà présent sur Github, utilisait subersion comme CVS (Control Versioning System).
Mais voilà, avec une base de données ultra volumineuse de fichiers sources, à peu près 17 millions de lignes de code pour 44000 fichiers vérifiés, modifiés toutes les semaines, facebook avait besoin d'un cvs beaucoup plus puissant que Subversion.

Le choix, Git ou Mercurial?
Sachant qu'aucun de ces deux outils n'a la puissance nécessaire pour tenir de tels builds, le choix s'est tout de même porté sur Mercurial.
Les raisons sont encore inconnues, mais nos amis de chez facebook, ont beaucoup contribué à son amélioration.

Les stratégies?

1. Améliorer le système de reconnaissance d'update de fichiers.
Au lieu de parcourir tous les fichiers d'un repository afin de détecter les mises à jour de fichiers, ce calcul est réservé à un outil de monitoring, appelé watchman, qui est spécialement chargé de sauvegarder et stocker les modifications sur fichiers.
Cela engendre un gain en performance signifiant surtout sur des bases de données Big data, de la qualité de facebook.

2. La seconde solution d'optimisation consiste à la réduire le volume des données lors des opérations de clonage et de récupération, en n'utilisant que les dernières versions de build.
Les développeurs désirant récupérer des fichiers d'anciennes versions seront invités à les télécharger depuis le RFL (Remotefilelog), conçu également par facebook.

3. La dernière optimisation est plus subtile.
Le principal avantage d'un cvs, est de ne pas avoir recours à un serveur distant. Les fichiers de commit sont mis en cache grâce à remotefilelog, outil de mise en cache des commits crée par facebook.  De plus, facebook utilise sa distribution MemCache en frontal du serveur Mercurial, ce qui permet un backup immédiat en cas de chute de la plateforme.
Alors, l'avenir appartient-il à Mercurial, ou Github gardera t'il son monopole?

Quelles sont vos prétentions salariales? Ou comment manipuler maladroitement un candidat!

Ceci est un sujet qui me tient beaucoup à coeur car il concerne tout le monde, toutes professions confondues.
Personne ou presque, au cours d'un entretien d'embauche n'échappe à cette question fatale: "quelles sont vos prétentions salariales?".

La plupart des candidats, même les plus aguerris, répondent sans chercher à analyser plus profondément cette question, ils regardent la plupart des articles sur comment se tenir en entretien d'embauche, sans penser à être eux-mêmes et à penser par eux-mêmes.
Ils se mettent à jouer un rôle, qu'ils estiment souvent obligatoire, et tombent dans un piège, dans lequel, même le recruteur ne prend pas souvent conscience, car c'est une question encrée dans une tradition.

Maintenant, poussons la réflexion plus longuement.
Dans chaque métier, il existe des grilles salariales de référence en fonction de l'expérience d'un candidat. Les recruteurs, lorsque la nécessité d'une embauche est ressentie, réfléchissent à un budget à allouer à cette création de poste, et, ils ne l'estiment pas au hasard, ils étudient cette grille.

Ainsi, lorsqu'un recruteur demande à un candidat, quelles sont ses prétentions salariales, il a en fait le désir de collecter les espérances de vie de chaque candidat reçu en entretien, les catégoriser, pour ensuite procéder après étude, à l'enchère qualitative la plus basse à sa disposition (dans la grande majorité des situations).
Oui, vous me direz que çà a toujours été le cas, oui, vous me direz que c'est normal, que c'est le jeu, ne cherchons pas à compliquer ce qui est simple.
Je réponds non, ce n'est pas parce que c'est une tradition, que c'est parfaitement logique et acceptable.
Lorsqu'un jeu peut porter atteinte à la dignité humaine, il est habile et sage de savoir s'en sortir.

Parce que cette question en période de crise économique et crise humaine, contribue non seulement à la chute des rémunérations dans l'ensemble du métier concerné, et elle y contribue grâce à l'auto-dévaluation des candidats par la peur.

Tout d'abord, demander au candidat ses prétentions salariales sous-entend, qu'on le veuille ou pas, que ce candidat est prétentieux, par conséquent, cette question peut inciter le candidat à adopter une attitude non humble sans même s'en rendre compte. 
le fait est que, une prétention ne se demande, elle se clame !
On ne peut jamais donner une prétention, on la clame suite à une croyance personnelle, donc on ne réfléchit pas suffisamment.
Ainsi, ce jeu si il n'est pas compris, peut créer de l'humilition, parfois, sans même que le recruteur ne s'en rende compte, je le souligne.

Ainsi, il ne s'agit pas de demander au candidat une prétention salariale, mais plutôt de lui demander le résultat clair et précis d'une auto-estimation basée sur des faits concrets.
Mais pour s'auto-estimer, il faut des repères, un repère conjoncturel, combien je vaux par rapport au marché actuel, puis, le repère du pouvoir financier de l'entreprise, parce que toutes les entreprises n'ont pas les mêmes moyens, combien peut-elle offrir pour ce poste?
On ne peut donc clairement s'auto-estimer que si on connait la valeur de notre profil sur le marché, par rapport à la capacité financière de l'entreprise sur ce poste.

La vraie réponse, loin des conneries que l'on vous bassine sur des sites qui vous formattent à comment répondre en entretien d'embauche, la vraie réponse est de penser par vous même et de successivement:

1. Estimer clairement votre valeur par rapport à votre expérience et aux grilles pré-établies.
2. Demander à l'entreprise quelle fourchette a été prévue pour la création de ce poste, afin d'avoir une base plus réaliste et concrète de négociation.

Par ce biais, vous démontrez au recruteur en face de vous, que vous avez une réelle capacité de réflexion, qui n'est pas là forcément pour lui plaire, mais pour remettre les choses en ordre, dans le respect des deux parties.
Si il ne souhaite pas vous donner la fourchette prévue pour la création de ce poste, ce que je doute, c'est qu'il se place dans une possible position d'exploitation de vos ressources pour vous inciter à vous auto-dévaluer.

C'est un jeu, certes, mais chaque jeu a ses règles et les limites attenant à la dignité humaine, ne doivent et ne peuvent pas être franchies.

Le respect, l'humilité et la capacité de réflexion, sont des valeurs sûres à préserver en tout temps.