Программирование, машинное обучение, и жизнь
В недавнем дайджесте dou.ua я нашел ссылку на статью The care and feeding of software engineers. Название не особо впечатляло, размер статьи не очень вдохновлял, но я все же начал ее читать. И оказалось, что не напрасно. Многие фрагменты я выделил и хочу поделиться ими с вами.
Главная фраза статьи для меня: “Software engineers don’t get into coding because they want someone to tell them what to do, they get into it because they discovered they could create something useful.”
“Nicholas, you’re worth more than your code. Whatever your next gig is, make sure that you’re not a short-order cook. Don’t accept a job where you’re told exactly what to build and how to build it. You need to work somewhere that appreciates your insights into the product as well as your ability to build it.”
Engineers don’t hate hard work or long hours; we hate when it doesn’t pay off.
Yet, you’ll rarely find software engineers complaining about long hours or being woken up because of a production issue. The software is our baby, and we like to care for it as such. That means if it needs feeding in the middle of the night, we do it. If it needs extra care over the weekend, we do that too, all with a smile because our creation is growing.
(long list of reasons why engineers say No to new features/change requests) Keep in mind all of these except for the last one have to do with the engineer meeting a deadline to get the project out the door. We want the tasks to be completed, and the only way that happens is if the tasks don’t change while we’re working on them. When they do change, that’s when we get really grumpy and that’s when the “no” comes flying out of our mouths before you even finish your sentence.
Engineers are especially happy when they’re able to check in the last bits of code for a task. I’ve never seen engineers so jovial as when they send out an email saying a task is complete and ready for review. Yet that mood is quickly dashed when in the next ten minutes, bugs start getting filed against their newly-created baby.
Review for a moment the things that drive engineers:
- Being creative
- Solving problems
- People using our work
Make sure that your engineers have, every single day, at least four hours of uninterrupted time to code.
Also, take at least one day a week to have no meetings. That includes daily standups. Just let the engineers have that single day to completely manage their time on their own and get everything done. It is absolutely amazing how much can get accomplished when an entire day is free of interruptions. If necessary, allows engineers to work from home to make sure that they’re not interrupted. I actually went through a period in my career where my manager required me to work from home at least two days a week because I was getting interrupted so much in the office. The results: I got my work done very quickly.
Engineer burnout is unique because we are used to powering through it. When burnout gets bad enough, we leave, looking for relief. What’s more, engineers will probably never tell you that they’re approaching that point; we’re too proud for that. On my last team, I told the engineers that the first time they felt frustrated, to come and talk to me. I didn’t want them to wait until it got so big that the only way they could escape was by leaving. I didn’t want them to leave, I wanted them to be happy, and the only way I could help is if I knew they were starting to not be happy.
PS. Автор статьи Nicholas C. Zakas работал в Yahoo!, был контрибутором YUI, любит front-end разработку, является автором нескольких книг и регулярно пишет интересные статьи в свой блог.
comments powered by Disqus