Joe Ferguson Advanced PHP
Software Engineer, Author, Open Source Maintainer, Speaker, Mental Health Advocate, Cat Dad, Space Geek, Drone Pilot, Husband. Always learning, always teaching.
Where do you work, what is your current role?
I work for a company called Ministry Brands that sells several church-focused SaaS systems. I’m in charge of the development team for a product called SimpleChurchCRM
How do you use PHP professionally?
The day job is based on PHP 5.6 LAMP stack and most of my side projects and open source work is focused on PHP or building systems to run PHP.
How and when did you get involved speaking or writing in the community?
php[tek] 2014 was my first PHP conference as an attendee. I found the hallway track and was hooked. I started speaking because its a rewarding way to give back and I learn a lot from preparing a talk. Plus, we’re lucky that most PHP conferences at least cover travel costs for their speakers.
What’s your best conference memory?
There are so many to name. At php[tek] 2014, meeting Ed Finkler was huge, as was php[world] 2015, my first national conference speaking event.
What advice do you have for someone going to their first conference?
Don’t be scared to talk to people. Just walk up and introduce yourself.
Tabs or Spaces?
Spaces. Because PSR-2 said so.
Do you know how to exit VIM?
Nuke it from orbit, it’s the only way to be sure
What’s your primary OS: Windows, Mac, or Linux?
I touch them all just about every day. MacOS for personal & work machines. Windows for gaming and Linux for everything else.
What’s a feature of PHP that you use a lot or appreciate?
Without Autoloading we would be writing VERY different code today.
Is a degree in Computer Science critical to be a professional programmer?
Depends on how you learn. If you can learn on your own from videos or documentation go for it. If you learn from a classroom setting then a degree may be your best route.
In your experience, what skill or ability do excellent programmers practice?
They are always learning, always teaching.
What’s one component or library that you find indispensable?
Producer / Consumer ProgrammingMORE INFO
Building to an Interface: LoggingMORE INFO
Data Pipeline & VisualizationMORE INFO
Manage Large Data Sets with StreamsMORE INFO
Static Analysis & Strict TypesMORE INFO
Caching on the Bleeding EdgeMORE INFO
Application & Service ArchitectureMORE INFO
Reduce, Reuse, RefactorMORE INFO
Mastering the Code ReviewMORE INFO
Database 101: Queries & Prepared StatementsMORE INFO
Database 201: MySQL Table DesignMORE INFO
Experiential Project DesignMORE INFO
Specification by ExampleMORE INFO
Object-Oriented CollaborationMORE INFO
Object Features & Error HandlingMORE INFO
When & Why: Interfaces, Abstracts, TraitsMORE INFO
Design an Algorithm in Your HeadMORE INFO
Dependency ManagementMORE INFO
Dependency InjectionMORE INFO
Organization Patterns: MVCMORE INFO