vendredi 15 février 2013

Ma première offre d'emploi.

J'ai rédigé cette annonce en 2012 pour aider mon employeur à trouver une perle. Grâce à Mathieu Gervais le texte s'est retrouvé sur FailQc, me permettant de vivre mon premier buzz viral. 

CompagnieX : L’Offre d’emploi codée

Venez découvrir notre code de vie 

Star Wars, Dungeons et Dragons, Klingon.

Maintenant que nous avons votre attention...

CompagnieX, le secret le mieux gardé du web québécois, est à la recherche d’un nouveau programmeur...

Un fin intellectuel pour qui « Heille le gros » n’est pas une expression régulière. Quelqu’un pour qui un décorateur n’a pas nécessairement d’émission au Canal Vie. Finalement un homme ou une femme qui ne s’exclame pas « Gilles qui ? » quand on parle de méthodologie Agile.

Que vous vous prétendiez ninja, samouraï ou judoka de votre langage préféré, nous ne sommes pas difficiles. Ce que l’on cherche avant tout, c’est des Monsieur Miyagi : des gens qui peuvent casser six blocs de ciment malgré le fait qu’ils portent une ceinture achetée au K-Mart,

CompagnieX, c’est une équipe dynamique derrière de grandes réalisations pour des clients tels que Gros magasin, Sportif X et Humoriste Z. Son quartier général est situé au cœur du quartier industriel de Ville de Banlieue.

Tous les chemins mènent à Ville de Banlieue. Et ils sont en sens inverse du trafic.

Intéressé(e) ? Les détails sont cachés dans le texte ci-dessous, première offre d’emploi rédigée en code de programmation. Déchiffrez-la et soyez créatifs dans votre réponse !

class AbstractCompagnieXProgrammer extends AbstractWebProgrammer implements
   IDebrouillard, ITeamWorker, ICareAboutSecurity {

        protected  $_i18n;
        protected $_s_preservative;


        public function instantiate( $phpExperience, $sqlExperience,
                $javascript_jquery, $mobileExperience,
                $apiExpTwitterFacebook = ‘atout’) {
                If  (!$_GLOBAL[‘user’] != ‘chuck_norris’)
                {
                        Throw new Error(‘Classe abstraite. On cherche la
                           plus proche implémentation !’)
                }
        }
             
        override protected function getEgo ( $large ) {
                return null;
        }
     
        public function read() {
                return array(‘books’, ‘the fucking manual’, ‘blogs techniques’)
        }
     
        public function write() {
                return array(‘commentaires’, ‘documentation pertinente’);
        }
     
        public function hasServerProgrammingSkills( $knowledge )  {
                if ( array_key_exists( ‘php’,  $knowledge) ||
                   array_key_exists( ‘asp’,  $knowledge) ||
                   array_key_exists( ‘python’,  $knowledge) ||
                   array_key_exists( ‘ruby’,  $knowledge) ||
                   array_key_exists( ‘coldfusion’,  $knowledge) ) {
                        return true;
                } else {
                        CJudgemment::getInstance().evaluate($knowledge );
                }
        }
     
        public function get_IDE_Knowledge () {
                $sql = "SELECT * FROM t_ide_skills
                   WHERE s_skill LIKE ‘%Netbeans%’
                   OR s_skill LIKE ‘%Eclipse%’
                   OR s_skill LIKE ‘%PDT/Zend Studio%’
                   ORDER BY i_interest_rank";
     
                $rtrn = $oDbAdapter->executeSQL( $sql );
                return $rtrn;
        }    
     
        public function gotoBar( CWebDesigner $web_d ) {
                if ( CBar::hasTablelayout ) {
                        return;
                }
        }
     
        public function gotoBar( CDatabaseAdministrator $dba ) {
                if ( CBar::tableCount > 1 ) {
                        echo("Can I JOIN you ?")
                }
        }
     
        public function getSQLSkillsAndClientlanguages() {
                $maVar = new stdClass(); //ouf...
                $maVar->sql = array(‘PostgreSQL’, ‘pgSQL’, ‘T-SQL’, ‘MSSQL’);
                $maVar->client = array(‘Javascript’, ‘jQuery’, ‘Prototype.js’,
                   ‘AJAX’);
             
                Return $maVar;
        }
     
        private function scanPerson( CPerson $johnDoe ) {
                if ( !johnDoe instanceof CPerson ) {
                        throw new Error("no groundhogs allowed...")
                }
     
                $iPoints = 0;
     
                If ( property_exists( $johnDoe,  ‘experience’) {
                        //TODO : rendre négociable
                        If (  $johnDoe->experience > 3) $iPoints++;
                }
     
                If ( property_exists( $johnDoe,  ‘education’) {
                        If ( strpos( $johnDoe->education, ‘informatique’, 0 )
                           != FALSE ) {
                                $iPoints ++;
                        }
                }
     
                If ( property_exists( $johnDoe,  ‘autonome’) &&
                           property_exists( $johnDoe,  ‘proactif’) ) {
                        $iPoints ++;
                }
     
                If ( property_exists( $johnDoe,  ‘pyromane’))
                   $iPoints --;
                //on a eu des mauvaises expériences....
             
                return $iPoints;
        }    

        protected function generateLanguages () {
                $this->_i18n = array();
                $this->_i18n[‘fr’] = parent::makeFullyFunctional();
                $this->_i18n[‘en’] = parent::makeFunctional();
                $this->_i18n[‘klingon’] = parent::makeItANiceToHave();
        }

        public function dropAssets() {
                $dump = array(‘baby foot’, ‘portfolio web 2.0’, ‘Wordpress’,
           ‘Drupal’, ‘Facebook API’, ‘Twitter API’, design pattern’,
           ‘css’, ‘SVN’, ‘must love bacon’);
                var_dump( $dump );
        }

}