Since my daughter was born, I was far away from writing code and programming. Now that she is growing up and I'm getting my hands dirty again, the need for a mentor appeared. While I was searching for someone, I remembered some words said by Tim Ferris in his book Tribe of Mentors: "Why one mentor if I can have a lot of them?" And I completed the thought with: "Why not bring that to other PHP Developers?"
PHP Mentors Book is a set of questions with topics that can help a lot of developers out there (Not just PHP). To answer those questions I contacted about 200 personalities and senior PHP people around the world that came up with the material that you will have access.
No, it is still in progress. My plan is to bring more names to answers the questions. And since we are on leanpub, you will receive every update of it as soon as I publish.
What is your current Setup? Any specific method to increase productivity? Do you make notes or snippets while working? Do you listen to music while working? Any different habit? How did you get to this setup?
How to earn your space when entering a development team? How to integrate when you are the most experienced among them? How to integrate when you are the least experienced among them?
Do you monitor your code in any way? Is this / would it be important? Any continuous tool for code quality control? Any Profiling tool?
We see many programmers that have a lot of experience moving to leadership/management positions. Is this natural? How is the job market for seniors? Is there an age to stop programming? Until what age will the market hire me as a developer?
Looking back on your career, what would you have studied more and what would you have studied less?
What to do when facing legacy code? What is the first thing to do and how to decrease the learning curve with this code? Is there a way to always keep an application modern? Is there any way to modernize an old application?
What do you do to learn / master / review a subject? How to learn better/faster? Where to ask questions?
How's it going to be the future of technology in 2024 and 2029? How will PHP be in this scenario? How will it be compared to other technologies? Will it survive a world that prefers JavaScript Frameworks?
By the easiness that PHP brings, many devs end up NOT studying basic concepts of computer science, operating systems, networks, software engineering, low level and etc. They jump straight to coding. Are these areas important/essential? Would it help or not?
How to deal with team code management? Who is responsible for committing? Deploying? Writing tests? Running Tests? Who manages all that?
How to improve the communication between IT and stakeholders? How to make better requirements analysis on a project / task? How to avoid miscommunication and task-rework problems?
What is the ideal development environment for you? What about production environments? What is the best way to deploy apps between those environments? How to find and fix bugs quicker in production? How to minimize downtime?
In the PHP universe we have excellents CMSs, Frameworks and tools. While all of those help popularize the language and standardize the structure, patterns and best practices, many developers get stuck to it and lose some of what it is to be a PHP developer. They become developers of a specific CMS, or a specific Framework. Do you agree with this view? Is it important to be versatile and know more than one of those? Or are there no limits to delve into one of them?
What is the optimal level of documentation for an application or suite of applications? Where to document business rules? Where to document architecture and code? Any specific strategy?
Are tests always present in your code? Do you write tests before code? When are the tests worth the time and when not?
What is the ideal level of logging for you? Server logs? Application logs? Business Logs? Performance logs? Errors Logs? Which logs are worth and which are not worth to keep in your databases? What are the best strategies for saving them?
Away from IT, what you do to become a better professional? How to reach that? What gets you out of bed every day?
Away from IT, what you do to become a better professional? Exercise? Good sleep hygiene? Diet? What gets you out of bed every day?
The things that I do away from my professional work are not so I can be a better professional, but so that I can be a better person.
My exercise regime is weightlifting, specifically barbell training. I like it because it tells me the truth. Programming is a discipline filled with smart people, and while smart people are good at many things, the one thing they are best at is rationalizing their failures in a way that makes it not-their-fault.
When it comes to weightlifting, you can't lie to yourself as to whether or not you succeeded in your deadlift; either you pulled that bar up off the ground, or you did not. There is nothing else possibly at fault: it is something related to you directly, and not anything else.
I sleep as much as my dog and my children allow. There is no honor or status in sleeping less for its own sake; sleep is happiness, you need it, and your brain needs it.
When I turned 30, I weighed 140 lbs. In four years, I gained 10 lbs; then another 10 in 3 years; then another 10 in 2; then another 10 in 1. By the time I was 40 I weighed 180 lbs, and my vanity demanded that I do something about my weight gain.
I had tried various diets, none of them working, and decided to try a low-carb lifestyle as a last resort. On that plan, I lost 20 pounds in 8 weeks, and got down to a manageable 160 lbs. I have managed to maintain that for eight years, eating steak and bacon and eggs and heavily buttered green vegetables.
What surprised me most was that my headaches disappeared. Ever since I was a kid, I had regularly gotten terrible cluster headaches over-and-behind my left eyesocket. When I say "regularly" I mean 2-3 times a week; I would go through a bottle of Excedrin in just a few weeks. But once I started the low-carb eating, they went away; I attributed it to the stabilizing of my blood sugar and the reduced insulin reaction from not eating sugard and processed starches. As an accidental test of that hypothesis, I ate a box of candy at the movies one day, and within hours I had a blinding cluster headache again.
Some days it is the joy of duty, some days it is readiness to begin.
Paul M Jones
@pmjones
@pmjones
In the PHP universe we have excellents Frameworks and tools. While all of those help popularize the language and standardize the structure, many developers get stuck to it and lose some of what it is to be a PHP developer. They become developers of a specific Framework. Do you agree with this view?
I don't agree that you should feel obligated to know everything about PHP before using a framework. Babies learn how to speak in sentences before they understand what a “verb” or a “gerund” is.
Taylor Otwell
@taylorotwell
@taylorotwell
What to do when facing legacy code? What is the first thing to do and how to decrease the learning curve with this code?
I really dislike the term legacy code as it implies a negative. All code that makes money is legacy code! What you're actually asking is how to keep a codebase maintainable over its lifetime.
Essentially it comes down to refactoring as you go along. When adding a new feature, refactor as appropriate. When fixing bugs, refactor to make the code clearer. This is very hard when on a tight time scale, which results in less maintainable codebases.
When you face a large codebase regardless of its age, it's difficult to learn. Hopefully, there is some architecture documentation to provide an overview of the essential design. User-facing help docs are also useful as they tend to describe what the software is supposed to do. Good code-navigation tools are essentially for understanding a large codebase; I use ctags and the code-navigation features of IDEs.
Rob Allen
@akrabat
@akrabat
See also: What are they talking about?
Get a full chapter as preview on Leanpub
Get a full chapter as preview on Leanpub