Changes

It was 6 years ago when I was last looking for a change after being a freelancer for a very long time. The idea was simple. I was tired of being the accountant, salesperson, consultant, developer, collections, sysadmin, and more. As a freelance “developer” I had to be all these things to support my family and live in a manner I was accustomed. But I was growing tired of it all, and wanted to have a little more fun by doing the parts I enjoyed most…consulting.

A good friend had been working at a well-known company for about a year and was very happy doing it. He also had grown tired of being a freelance developer, and a job at the company was his answer. So, when I saw an open consulting position on their website, I applied for it.

About a week later I received a call, then went through the typical round of interviews and questions. I was hired!

It was an exciting time, filled with learning new systems, people, and experiences. I was suddenly thrust into meetings with very large companies, and large teams of developers, who needed my help. There were new problems to solve on a weekly basis, and with each problem came new challenges. The number of things I learned during my six years of consulting at the company was mind-blowing, and with each day I discovered there was more and more I didn’t know. I basically went from knowing a bunch of things to village idiot overnight when I was hired.

“I went from knowing a bunch of things to village idiot overnight when I was hired.”

As I transitioned from one customer to another, it also led to traveling quite a bit. I spent half of each year away from home as I went onsite to meet new teams, learn network and application infrastructures, and build relationships with hundreds of people.

I continued to learn a great deal, and with each engagement, I spent less time on search engines and could draw from my own knowledge more often. (Of course, there was still a bunch of searching, but it was less. I’m still the village idiot learning daily.)

As a user group organizer, and speaker, I’ve always enjoyed teaching and sharing, and it was wonderful that my employer encouraged this activity. So I tended to share my knowledge with anyone who would listen, as I began speaking at conferences, user groups, and online from blog posts, podcasts, and videos, as well as through code via online source code repositories.

Through the process, I also did a fair amount of evangelism around products, libraries, and frameworks I believed in and witnessed some real growth from these efforts which drove me to do more.

However, as times change and acquisitions happen, so do the directions companies take. For good, or bad, companies are forced to make decisions and make changes to help them move forward and grow. I’ve witnessed and lived through some events these past couple years that have left me feeling dissatisfied and a little disconnected from the things I’ve come to hold dear.

This doesn’t mean the company is bad. It simply means our paths have diverged for the time being. Therefore, I will be leaving my current employer, as it is time once again for a change.

10 reasons to become a consultant or have a consulting business

In this video I share 10 good reasons to start a consulting business or become a consultant. Before you start looking into how to become a consultant, Adam Culp of Beachcasts PHP videos shares points from his experience to help you figure out if being a PHP consultant is the right job for you. As you look into how to become a consultant, and before you become a consultant, consider these things carefully.

Or you can view this video on YouTube at: https://youtu.be/J7gpMYAKmDM

Items:
#10 Multiple Hats
#9 Constant New Problems (to solve)
#8 Always Learning
#7 Helping (mentoring) People
#6 You’re The Fixer
#5 “Expert” vs “Resource”
#4 Fame!
#3 Sell, Sell, Sell!
#2 Travel
#1 Flexible Schedule

BONUS considerations for the self-employed
#1 No Dress Code
#2 Unlimited Earning Potential
#3 Unlimited sick days / vacation
#4 Flexible Work Location
#5 Freedom to say “No” or turn down jobs

Zend Framework becomes Laminas project

Today it was announced that Zend Framework is being rebranded as Laminas project. (drawn from the meaning “a thin layer”) Along with the rebrand comes some other important changes as well. Yes, this includes Expressive and Apigility, so continue reading.

Some History

Zend Framework is one of the largest and oldest PHP frameworks and has become a staple for enterprise development around the world. As of April 2019, it has over 400 million lifetime downloads of all packages associated with the project, which has seen a 4-fold increase in just the last 2 years alone. Despite this amazing track record, up to now the project has been supported and guided single-handedly by Zend Technologies, and later Rogue Wave Software.

Awesome Changes

Therefore, to continue this growth and receive the best support possible, the Zend Framework team is announcing that all projects under that umbrella will rebrand to a newly formed “Laminas” project“, which aims to continue their mission as an open source project hosted by the Linux Foundation. The transition will enable more companies to provide support for the projects they’ve come to depend on and help it continue to grow. As part of this transition, it is important for them to differentiate the open source project from the Zend commercial brand. Therefore, the new name “Laminas” project was created.

As part of this move, the Expressive microframework, Apigility api framework, as well as the MVC framework will all be part of the Laminas project.

I will try to add more details as they become available to us all, and will likely also do a Twitch stream and YouTube video with Beachcasts and that video can be viewed HERE.

Support Laminas Project

For more information, please see the new site dedicated to the Laminas project, and if you would like to become a member and/or support the project at the Linux Foundation (their blog post), please join and become a member.

Impact to current users

The framework team is working on scripts and tools to help users update namespaces and vendor packages with the renaming. See the video below for more info.

Beachcasts Video

I added this, and a little more content about the Zend Framework rebranding to Laminas project under the Linux Foundation. Check it out below.

10 bad things about consulting, and why it might not be for you

In this video I share 10 bad things about being a consultant, and why a consulting job might not be a good fit for you. Adam Culp of Beachcasts shares points from his experience to help you figure out if being a PHP consultant is the right job for you.

Or you can view this video on YouTube at: https://youtu.be/ELE0G3e7h3c

Timeline:
#10 Travel
#9 No set schedule
#8 No upward mobility
#7 Not for the introverted
#6 Communication, communication, communication
#5 Swallowing pride
#4 Always be selling
#3 Problems!
#2 Expected to “know it all”
#1 No “new” projects

BONUS considerations for the self-employed
#1 accounting/collections
#2 taxes
#3 No sick days / vacation

How to get lines of code in PHP with PHPLoc via CLI or using Docker

This video shows how to get the lines of code in a PHP application by using PHPLoc from the command line or using Docker. PHPLoc is a command line application to generate a small but useful report. Adam Culp will show how to use it from a Docker Container using a Docker Image he created. PHPLoc demonstrated on the Concrete5 CMS codebase.

Key Topics:

  • Why find the lines of code
  • PHPLoc is an application to find the lines of code in PHP
  • Different methods to use PHPLoc
  • How to use a Docker image to run PHPLoc
  • Comments as a code smell

Associated Links:
https://en.wikipedia.org/wiki/Code_smell – Code smells explained
https://www.docker.com/get-started – The place for developers to start with Docker
https://hub.docker.com/r/adamculp/php-code-quality – link to the image used to build the Docker container used in this video
https://github.com/sebastianbergmann/phploc – location of the PHPLoc tool
https://www.concrete5.org/ – Concrete5 CMS code I’m using in this video