Development Q&A

Questions and answers about my development process

Q. How long have you been developing commercially?

  • 10+ years, since 2007. My first commissioned web site was for a Canadian Member of Parliament, retired now.

Q. What programming languages/scripting do you use the most?

  • PHP 7.2, Vanilla JavaScript/jQuery, Linux shell scripts, Node/grunt/gulp scripts and Docker/Compose scripting. These are my strongest daily-use languages. I also develop in Java 8/9 and R1 for my personal projects.

Q. What other languages are you familiar with?

Q. What are your core strengths?

  • I focus on reusability and modularity of code, for example, using inheritance of classes in PHP, traits, and namespaces to keep code and components DRY2 and organized. I emphasize input and internal checks by throwing exceptions and logging warnings. My comments are very detailed so anyone can follow them. I use git and feature branches often. I use unit testing often as well.

Q. What are your favorite development tools?

  • PhpStorm, Docker, Git, VMWare, Photoshop, Github/Bitbucket, Pingdom, Lucidchart, Selenium, FileZilla, Notepad++

Q. How familiar are you with WordPress?

  • Very familiar. I often write plugins, hooks, and custom templates. I’ve built many sites with WordPress, and vet and leverage 3rd-party plugins often.

Q. What excites you the most about developing?

  • Automation and algorithms. I love building modules and tools that run on their own. If designed right, I shouldn’t need to monitor them. For example, my CSV-SQL business-data processor runs continually without operator involvement.

Q. What have you accomplished in your current position?

  • I’m all about wins. I’ve have had a lot of accomplishments in my current development role. For instance, I’ve greatly increased site speed and performance, tightened security, and built many fun site features including a phonetic-based search system.

Q. What JavaScript patterns do you use the most?

  • MVC, IIFE, sub/pub and observer, and prototype. I avoid the use of globals, and I try to modularize whenever possible. I prefer event messaging to setting flags on the window object, and I use IIFE all the time to encapsule objects and variables from the global scope.

Q. What PHP patterns and styles do you use the most?

  • OOP3 patterns from my C++ days, and PSR4 patterns. I use autoload and PSR-4 naming of classes and namespaces. I use interfaces, inheritance, abstract classes and traits to keep code 2 and organized. Members functions are normally private or protected, and only if needed they are public. I’ll throw exceptions in sanity checks and input failures. I use different kinds of exceptions, not just \Exception. I usually create PHPUnit tests at the same time I create a new class. I also use PHPDoc with detailed comments, as well as parameter type and return type hinting in PHP 7, so anyone can take over my projects.

Q. Why are you an asset to a development team?

  • I’m fast, efficient, experienced, creative and get things done well to accumulate more wins.

Q. What was the most challenging project you’ve worked on?

  • I refactored a massive, uncommented PHP code base that was over 10 years old and had passed through several maintainers. It was using deprecated and removed functions like mysql_*, silenced errors, lack of any objects or classes, and it was almost entirely spaghetti code, with duplicated code in many places and magic numbers throughout. It took about a month, but I refactored the code base into DRY, beautiful PSR-style classes with thorough PHPDoc comments.

Q. How do you stay current?

  • I read and contribute to StackOverflow almost daily. I also take Lynda and Coursera courses to keep up to date on new or popular frameworks. Finally, I’m active in the Vancouver Meetup circles on topics such as PHP, AWS and web development.

Q. What do you enjoy about your current position?

  • I have a lot of creative control, responsibility and trust. I can plan projects in my team, put forward technical innovations and often see them implemented. My schedule is flexible (even though I am a notorious workaholic), and I can work remotely if I need to. Most importantly, my efforts have a direct and noticeable impact on the company’s bottom line as our sites are the company’s only marketing channel. My success is the success of 70+ other people.

Q. Why are you with your current company?

  • It is a $20M company with a goal of expanding to $100M in the next two years. Its web and infrastructure have a lot of room for improvement, and in some cases overhaul, so I’m with this company because it has a lofty goal, my skills are in high demand here, and I feel I can get them there. It’s all about the challenge, and every week is different. I’m now building for them a brand new and ambitious web ecosystem with hundreds of pages, intuitive search, image asset management, and user journey tracking with split (multivariate or A/B) testing, and all on Docker.

Q. What are your future goals?

  • AI is the future, so in my personal time I’m experimenting with Convolutional5 and Deep neural networks with Java and TensorFlow, combined with R1, to gain insights into things like visitor traffic and quantitative finance. I would like to align myself with like-minded individuals and organizations.

Notes:

  1. R Statistical Programming Language – https://www.r-project.org/about.html
  2. DRY – Don’t Repeat Yourself
  3. Object-Oriented – focusing on classes and objects over floating, global functions
  4. PHP Standards Recommendations – https://www.php-fig.org/psr/
  5. https://en.wikipedia.org/wiki/Convolutional_neural_network