This has been coming up at my current employer from the team I am on. Kind of a debate if you will and I am looking for feedback and opinions.
Overview:
Team is smaller with 6 PHP developers. Currently polishing (think turd) a Code Igniter 2 app as we transition to a new Laravel API with a few different Vue "portals" for the different kind of users (Admin, Clients, Counsels, etc.). The team is fully remote and global with a mix of direct hires and contractors.
Few of the devs are what I call 9-5 ers and obviously they are contractors (unless specified, most salary have expected working hours to fluctuate as needs arise) that at 5pm will drop what they are doing and gone. I have been in the middle of paired programming for a ticket and was told we needed to stop, got to go it's 5pm. Got something to do? Nope, just 5pm and time to not work. Great so the other team members now have to finish your half done work.
This debate started when I was rejecting pull request because code had no doc blocks, comments, and/or was coded for 100% readability and not performance (assigning data to a variable, then assigning the new variable to another variable, etc). When we where talking it over I happen to ask a few questions about PHP life-cycle they couldn't answer. I sent them some links to videos totaling maybe 20 minutes explaining the life cycle and some got yeahs to watch out for. Few weeks later I asked the same question and was told "No time to watch the videos".
My Perception:
Years ago we use to make fun of the old IT guy who still insists on using 20 year old networking equipment. Come to find out it's because the person so comfortable and knowledgeable about the current system that "works" they just don't want to spend the time and energy learning something new. To compound this, the person usually been at the company for decades and is respected enough leadership doesn't question it.
I have always taken the time out side of work hours to always try to keep up to date and learn the latest and greatest to be sure I am not "that guy" outlined above. I generally strive to become familiar with what ever but not necessarily to a point where I could use it. We can't all be masters of everything as a few devs resumes may state (LOL).
All that said, I feel that we as devs, and what I look for when I hire is experience and knowledge. Obviously I am not talking about interns or junior Devs, continued training and help is expected but that is why compensation isn't as good. Common sense should dictate If we want to progress up the ladder to a true Senior Developer or higher, we are ultimately responsible for our training. I have always been of the mind set at the end of the day, it's me and not a company responsible for my career progression. If they don't fit my needs or goals, I look for a spot that does. The other place will learn and sometimes the hard way what is appropriate when they can't meet dead lines and lose money. Seems a waste of time and more importantly effort to complain. Not to get all political, but many places who are wanting devs back in the office are losing whole teams over that choice. Many of those leaders either got let go or changed course real quick.
Lastly I do agree as we trasition from php and jquery frontend to Vue CLI apps, that training needs to be provided and offered to help the devs get to a point where they can code, not really efficient but workable. Once again at the end of the day it's on you to become an asset to the company enough they don't want to let you go because of you talents, abilities, knowledge, etc.
Other Perception:
Company should always provide training and the time to train. Don't expect them to learn anything on their own time 99% of the time.