At one gig, we had weekly “code presentations” where a developer would get up and explain a recent change they made to the code, whether it be a new feature, a refactor or a bug fix. It was meant to be a short presentation, no longer than 30 minutes, and not overly code heavy. Code would be presented, but only for parts that were interesting or important. Questions would be taken from the other developers throughout.
The rotation came around to “Edward” and he showed part of a recent change, a really important
if statement. He couldn’t explain it. He couldn’t even explain in the simplest terms what the statement did. After 30 seconds, it was clear he didn’t even know what an
if statement did.
There was nothing wrong with the code—it did what it was supposed to—but Edward couldn’t explain what it was doing, or how. It was perfectly clear to the rest of us.
I was perplexed.
- How did this code get checked-in?
- How did he write this code?
- Who organized this presentation for him? Why would he show code he didn’t even understand?
In the coming weeks, I found out what happened. Edward would try to check something in, but when the lead got it, he’d rewrite it so it made sense and worked. Then the lead would check it in, leaving Edward’s name on it. And just like his code, the lead threw the presentation together.
Edward was in a largely administrative job. While he in his forties, he was making less than a lot of the software engineers who were fresh college graduates. He had a family to support and he decided he wanted to make at least what the new college graduates did.
So he started taking programming classes at night. He learned a language we used on a lot of our projects (I think it was C#). He was given a chance as a junior programmer on our project. But from this presentation, it was clear he didn’t know an
if from a
while or an
He was learning a language, but he wasn’t learning software engineering.
I felt bad for the guy. I liked Edward. I think everyone did. I think the lead was trying to “lift him up”. But it was clear he didn’t understand how to program. He wanted the money but didn’t have the skill.
I transferred to another department and I’m not sure what happened with Edward. He got another job eventually when the company lost the recompete on the single contract that was keeping them in business. I hope he eventually learned how to program because he really wanted—probably needed—to earn a better living.
If an engineer can’t explain their own code, there’s a good chance they didn’t write it.