<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[deji.akala]]></title>
  <link href="http://dakala.github.io/atom.xml" rel="self"/>
  <link href="http://dakala.github.io/"/>
  <updated>2016-06-27T01:24:23+01:00</updated>
  <id>http://dakala.github.io/</id>
  <author>
    <name><![CDATA[Deji Akala]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[Debug It]]></title>
    <link href="http://dakala.github.io/blog/2015/01/31/debug-it/"/>
    <updated>2015-01-31T20:09:23+00:00</updated>
    <id>http://dakala.github.io/blog/2015/01/31/debug-it</id>
    <content type="html"><![CDATA[<p>I&rsquo;ve had the privilege of coming onboard different kinds of teams - small, medium, large. The level of preparation for new joiners was equally different. Some years ago, a developer was joining our team and on his first day, he sat at an empty desk looking rather lonely. A computer was hurriedly commandered from somewhere and somehow, before the end of the day he had access to the network and some tools.</p>

<!-- more -->


<p> The following day, if I recall correctly, he was able to check out the source code from SVN. For hours on end he simply stared at the screen, reading and scrolling, with an expressionless face. On the third day, his desk was empty. We started wondering whether he&rsquo;d got lost as he didn&rsquo;t know the area well. Anyway, to cut the long story short, we never saw him again - he&rsquo;d quit.</p>

<p>How do we bring new staff on-board without headaches or heartaches?</p>

<p><strong>Selection</strong></p>

<p>Right from the first contact with an applicant, they should know exactly what to expect with regards to the tools they&rsquo;ll be working with. There&rsquo;s no need to tell candidates you&rsquo;re working this or that framework when in actual fact you don&rsquo;t. If they get offered the job, they&rsquo;ll be disappointed when they discover the true picture.</p>

<p>The recruitment process differs from company to company. However, it&rsquo;s common to do a telephone interview and a face-to-face at least. Sometimes, more than one face-to-face session at the company is scheduled. In some instances, there&rsquo;s a written or coding test. At each stage of the process candidates are whittled down as their suitability for the position is appraised.</p>

<p>I would like to propose a final step before an offer is made - something like, a get-to-know-our-processes day. The candidate comes in, meets the team, gets to see the tools and the code they&rsquo;ll be working with. Of course, this must be balanced against the need to keep some of our code out of public domain.</p>

<p>And when an offer is made and accepted by the candidate they come in with a more accurate expectation.</p>

<p><strong>Documentation</strong></p>

<p>This isn&rsquo;t about code documentation. Rather, it&rsquo;s about accurately documenting the development process - setting up a machine for development, configuration settings, source control access, setting up a printer etc. There should be up-to-date, well-written, step-by-step instructions for everything. Where commands are required, they should be provided for each step no matter how superfluous it might look. A good example is the page for <a href="https://help.github.com/articles/generating-ssh-keys" title="Generating SSH keys">generating SSH keys on Github</a>. Each operating system has a different set of instructions. There&rsquo;s Step 1, Step 2, Step 3 and Step 4. Commands have syntax highlighting. Nothing is taken for granted. Nothing is assumed.</p>

<p>The quality of documentation of how to setup environments for working and hit the ground running is a clear indication of the level of organisation at a company.</p>

<p><strong>Preparation</strong></p>

<p>On a joiner&rsquo;s first day, everything should be ready for them. There should be a designated desk. If there are name labels at each workspace, there should be one for the new staff. It shows they&rsquo;re being expected and taken seriously. A computer with basic software pre-installed should be waiting too. From CVs and during the recruitment process, candidates' preferences should have been identified. Is this a Windows guy? Linux? Mac? No matter what, there should be something waiting.</p>

<p>What&rsquo;s the company&rsquo;s policy with regards to development environment? These days more and more companies have vagrant boxes. A working copy should be ready so that within an hour of the new developer reporting for work, everything&rsquo;s fired up and ready.</p>

<p><strong>Coordination</strong></p>

<p>From the foregoing, bringing people onboard requires a lot of work and people should be tasked with this responsibility. At the interview stage, such Onboarding Coordinators will show the candidates round and walk them through as much code as the business allows. They are in charge of updating documentation and preparing a computer and desk for the new developer. Someone, or some people, to make sure they aren&rsquo;t lost during their first few days and easing them into the team.</p>

<p>Taking all these into consideration, a new joiner will have fewer questions - How does this work? Why am I seeing this? How do I &hellip;? Definitely, they will hardly ever hear the answer - Debug it! - when the question clearly doesn&rsquo;t call for that kind of answer.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Passing Zend PHP Certification Exam]]></title>
    <link href="http://dakala.github.io/blog/2015/01/08/passing-zend-php-certification-exam/"/>
    <updated>2015-01-08T19:50:27+00:00</updated>
    <id>http://dakala.github.io/blog/2015/01/08/passing-zend-php-certification-exam</id>
    <content type="html"><![CDATA[<p>I&rsquo;d always weighed the pros and cons of taking the Zend PHP Certification exam since its early days. For me, the overriding argument against, was that you can teach art but you can&rsquo;t teach how to paint The Scream or Mona Lisa. So I focussed on the practical art of programming.</p>

<!-- more -->


<p>However, after over 10 years of doing PHP, in August last year, I finally overcame the biggest obstacle to actually doing so which was making up my mind and disciplining myself.</p>

<p><strong>1. Time</strong></p>

<p>This is the most important part of the preparation. It&rsquo;s a theory test and  I knew that I needed to make out time for study. Luckily enough, I&rsquo;d just ended a 12-month contract that required a 4-hr daily commute into London and I wanted to have a bit of a rest. It took a while between the decision and actual registration. I did and gave myself 6 weeks of preparation.</p>

<p><strong>2. Material</strong></p>

<p>I bought the <a href="http://shop.zend.com/en/php-certification/zend-php-certification-guide-pdf.html">Zend PHP Certification Study Guide</a> which gave a general overview of the exam syllabus. There&rsquo;s also a weighting of the topics:</p>

<ul>
<li><p>Highest Emphasis:</p>

<ul>
<li>PHP Basics</li>
<li>OOP</li>
<li>Security</li>
</ul>
</li>
<li><p>Average Emphasis:</p>

<ul>
<li>Functions</li>
<li>Web Features</li>
<li>Arrays</li>
<li>Strings &amp; Patterns</li>
</ul>
</li>
<li><p>Lowest Emphasis</p>

<ul>
<li>Databases</li>
<li>Data Formats and Types</li>
<li>Input/Output</li>
</ul>
</li>
</ul>


<p>I trawled the internet for information and blogs of people who had taken the exam and either passed or failed. That was how I found out about <a href="http://www.ucertify.com/">uCertify</a> and bought their Zend - PHP 5.5 Certification Study Guide and Practice Test (200-550) course. It&rsquo;s packed with loads of material and practice tests. You can revise or take simulated tests with feedback as you progress. However, I later discovered that the questions are a lot simpler than the actual exam but it was worth every penny I spent on it.</p>

<p>Another real treasure I mined was the <a href="http://php.net/manual/en/">PHP documentation</a> itself which has everything and even more. I found the user comments section extremely helpful too.</p>

<p><strong>3. Plan</strong></p>

<p>The internet is full of stories of experienced programmers flunking the exam more than once and I didn&rsquo;t want to add to the list of another one that bit the dust.</p>

<p>There was a lot of material to digest. Lots of practice tests to take and take and take again. I borrowed my son&rsquo;s felt tip pens and prepared flash cards on which I had snippets of information. We&rsquo;ve got sliding doors leading to the conservatory so I blu-tacked the flash cards on the doors. I waited until my family were asleep upstairs before moving into action. I&rsquo;ll pace up and down in the conservatory, look at the handwriting on the wall and try to remember what&rsquo;s on the cards. I didn&rsquo;t care how foolish I looked or sounded, I just went for it.</p>

<p><img class="center" src="http://dakala.github.io/images/flashcards.jpg" width="480" height="473" title="Flash cards" alt="Flash cards"></p>

<p>The closer I got to the exam, I was scoring nearly 90% on the uCertify tests but felt deflated when the scores fell below 80%. All in all, my confidence grew in leaps and bounds.</p>

<p><strong>4. Exam</strong></p>

<p>The exam centre is in our town and I felt I&rsquo;d walked past there before. Just to make sure, the day before the exam, I went there to make sure. On the day itself, I left home early and waited in a nearby car park. Then when it was time to leave, I couldn&rsquo;t find my passport! I rushed back home, It was nowhere to be found. I rushed back. I don&rsquo;t know how many traffic rules I broke that day but on days like that no law enforcement agents are around. When I got back to the car park, it turned out that I had been sitting on my passport!</p>

<p>I was breathing fast, more annoyed at myself for not doing last minute revision of this or that topic, and sweating badly when I arrived at the centre. The moral of the story? Make sure you have your identification ready and check before leaving home.</p>

<p>I worked slowly and firstly marked the answers I was very sure of. Then I went back to those I&rsquo;d left during the first pass. Finally, I re-checked everything and made sure I answered all the questions before pressing that big grey button &ldquo;Submit&rdquo;. I didn&rsquo;t dare look at the screen but in an instant there was a message like this: &ldquo;Congratulations on passing the Zend PHP exam and becoming certified&rdquo;</p>

<p>I walked out of the test centre waving the printed result in the air and did the heel click - yeah, I jumped as high as I could and brought my heels together.</p>

<h3>Finally</h3>

<p>Mission accomplished! Now I was free to tell everybody at home what all that fuss of staying up late and studying was really really about.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Drupal &amp; PHP]]></title>
    <link href="http://dakala.github.io/blog/2015/01/06/drupal-and-php/"/>
    <updated>2015-01-06T00:42:49+00:00</updated>
    <id>http://dakala.github.io/blog/2015/01/06/drupal-and-php</id>
    <content type="html"><![CDATA[<p>Around the middle of last year, as my fixed-term cotract was drawing to a close I felt like changing jobs. I&rsquo;ve always had the good fortune of being able to find a new placement within a short time. This time around I discovered a number of changes in the job market one of which has to do with being a PHP and Drupal developer.</p>

<!-- more -->


<p><strong>1. A Drupal developer isn&rsquo;t a PHP developer.</strong></p>

<p>Unfortunately, not all recruitment agency professionals fully grasp the relationship between Drupal and PHP as some of the automated job opportunity emails give away. There were a number of phone calls during which most of the conversation bothered on the difference between PHP and Drupal. PHP is like the English Language and Drupal is more like Romeo &amp; Juliet by William Shakespeare. This analogy isn&rsquo;t accurate but it&rsquo;s only an analogy.</p>

<p><strong>2. There are lots of Drupal jobs and lots of Drupal developers.</strong></p>

<p>Whilst there is plenty of opportunities out there in the Drupal market, I came to realise that not all jobs are suitable for any developer. Conversely, not all developers are suitable for a given job.</p>

<p>There is a perceived boom in the market, so anyone who has a basic grasp of Drupal may walk into some contract positions. In such cases the acceptable daily rate isn&rsquo;t an issue. So, the people in charge of hiring are in a dilemna - Developer A can do the same job but for half the rate Developer B is requesting. This is compounded by recruitment agencies wanting fair share of deals.</p>

<p><strong>3. A PHP developer isn&rsquo;t a Drupal developer.</strong></p>

<p>Drupal is a Content Management System (CMS) or Content Management Framework, depending on who you&rsquo;re speaking to. With a basic understanding of PHP, it&rsquo;s quite possible to learn Drupal and use it effectively without a deep grasp of the language used in its programming.</p>

<p>It&rsquo;s like some using a spreadsheet application for day-to-day tasks which may be sufficient. You can do calculations, sort results and even able to exchange data between two sheets. However, it takes a different dimension of understanding to perform advanced tasks and be seen as a power user.</p>

<p>Drupal is written in PHP and the forthcoming Drupal 8 has taken Drupal to another level of professionalism. Apart from following a modern Object Oriented Programming (OOP) approach on the backend, it takes advantage of new features of the language such as anonymous functions (closures), traits, short array syntax, function array dereferencing etc.</p>

<p>Even though being a PHP developer doesn’t necessarily translate to being a Drupal developer and vice versa, it’s becoming imperative for a Drupal developer to demonstrate a well-grounded knowledge of PHP.</p>
]]></content>
  </entry>
  
</feed>
