Development and Career 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 SOLID2, reusable and modular code, for example, using inheritance of classes in PHP, traits, and namespaces to keep code and components DRY3 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 management experience do you have?

  • As a senior developer I manage and lead a team consisting of front-end devs, QAs, and other back-end devs. I prepare timelines and plan for milestones, as well as communicate effectively with stakeholders. Additionally, I have to manage vendors and data suppliers to bring all aspects of my projects together. I’ve also interviewed many front-end devs and QAs.

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. I’ve also delivered sites and projects on time and on budget.

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?

  • OOP4 patterns from my C++ days, and PSR5 patterns. I use autoload and PSR-4 naming of classes and namespaces. I use interfaces, inheritance, abstract classes and traits to keep code 3 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, a SOLID developer, 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, Coursera and Udemy 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, Docker, 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 $30M 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?

  • Machine learning and big data is the future, so in my personal time I’m experimenting with convolutional6 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. SOLID = Single responsibility principle, Open/closed principle, Liskov substitution principle, Interface segregation, Dependency inversion principle. This is the opposite of so-called STUPID code.
  3. DRY – Don’t Repeat Yourself
  4. Object-Oriented – focusing on classes and objects over floating, global functions
  5. PHP Standards Recommendations – https://www.php-fig.org/psr/
  6. https://en.wikipedia.org/wiki/Convolutional_neural_network