Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Code Archaeology: Becoming Indiana Jones

Code Archaeology: Becoming Indiana Jones

Code archaeology is one of the most important skills you’ll ever learn as a developer. How many times have you been thrown into projects with no environment setup, no documentation, and very little support from coworkers? Being able to quickly work out how an application is structured so that you can start making changes is a sought after skill for many employers.

In this talk, we’ll take an open source project that we’ve never seen before and work through the steps required to get it up and running so that we can start working on features. Once you know the steps, they can be applied to any project in any language to get you contributing in no time.

Michael Heap

January 27, 2017
Tweet

More Decks by Michael Heap

Other Decks in Technology

Transcript

  1. namespace HAL\Security; use HAL\Security\Validator; class DoorPasswordValidator extends Validator { private

    $doorPassword = 'beneluxisawesome'; public function validate($input) { if ($this->doorPassword !== $input) { throw new \Exception("I'm sorry, Dave. I'm afraid I can't do that"); } return true; } }
  2. namespace Casino\Game; class Roulette { /** * Returns a random

    number */ private function alwaysReturnSix(){ } }
  3. namespace Casino\Game; class Roulette { /** * Returns a random

    number */ private function alwaysReturnSix(){ return 4; } }
  4. DDD

  5. commit 5288d5804a3fc20dae4f3b2deeaa7f687595aff1 Author: Rasmus Lerdorf <[email protected]> Date: Tue May 24

    09:33:59 2016 +0000 Add new secure storage facility. (Closes #42) The existing storage facilities use symmetrical encryption keys which allow anyone with the password to access them. The new storage is more secure and requires both a password and my handprint. There’s nothing in there yet but we’ll put the Antikythera in it as soon as it arrives
  6. commit 0dc164fb052f4b838a674648aa29d83b60f01fa2 Author: Rasmus Lerdorf <[email protected]> Date: Fri May 20

    12:14:55 2016 +0000 Added HAL to the villa’s security system on both the front and back doors 5 2 src/Villa/Structure/Door.php 14 0 test/Villa/Structure/DoorTest.php
  7. commit 2915dabebc8b87b84ec40fac0f4954fb84f3b7cd Author: Rasmus Lerdorf <[email protected]> Date: Sun May 22

    21:27:31 2016 +0000 Bought a new car. Updated town parking permit to new registration 12 0 src/Garage/Car/Ferrari.php 1 1 src/Town/ParkingPermits/Rasmus.php
  8. // // Dear maintainer: // // Once you are done

    trying to 'optimize' this routine, // and have realized what a terrible mistake that was, // please increment the following counter as a warning // to the next guy: // // total_hours_wasted_here = 42 // I’ve been @mheap, you’ve been awesome! https://joind.in/talk/b0184