转:Lessons learned in 35 years of making software
原文链接:Lessons learned in 35 years of making so... jimgrey.net
下文由“immersivetranslate(SiliconCloud模型)翻译,翻译准确度和流程度非常高。
——————
Lessons learned in 35 years of making software
在 35 年软件开发中获得的教训
It’s more about soft skills than technical skills
这更多的是关于软技能而不是技术技能
Post author
By Jim Grey
Post date ci
3 July 2024
2024 年 7 月 3 日
25 Comments 25 条评论 on Lessons learned in 35 years of making software
Today (3rd July, 2024) is my 35th anniversary working in and around the software industry. All but 18 months of that have been spent on software development teams; those errant 18 months were spent editing technology books. I figured out fast that it wasn’t for me, and came right back home to the software industry.
今天(2024 年 7 月 3 日)是我在这个软件行业工作和周边工作的第 35 个年头。除了 18 个月的时间,我都在软件开发团队中度过;那 18 个月我是在编辑技术书籍。我很快发现那不适合我,然后立即回到了软件行业。
Me, working infinitely hard at one of my career stops
我,在职业生涯的一个阶段,努力工作无穷无尽
In 35 years, I’ve learned some strong lessons. Maybe they’re ones you’ve learned yourself already. We all learn at different paces and at different times!
在 35 年的时间里,我学到了一些深刻的教训。也许这些教训你已经自己学过了。我们每个人的学习速度和时间都不同!
Do things in the most straightforward way possible. It’s easy to fall into the trap of clever solutions, or clever applications of technology, or overbuilding something because you’re anticipating the future. Don’t do it. You will hate yourself for it later when you have to maintain it. Build the thing in the simplest way you can, as fast as you can. You can improve it over time as needs demand.
做事尽可能以最直接的方式。很容易陷入聪明解决方案的陷阱,或者技术的巧妙应用,或者因为预见到未来而过度构建某物。不要这样做。当你后来需要维护它时,你会后悔的。以最快捷、最简单的方式构建事物,随着时间的推移,根据需求进行改进。
There is no substitute for working software in Production. I can’t believe now that I have been part of 18-month release projects. This was back in the bad old waterfall days, but even then it was possible to release a lot more frequently than that. The software we build is valuable. It builds the value of the company. When you hold it until it’s perfect, or everything you think it needs to be, you are holding back on building the company’s value. Find the fastest, shortest path to getting the smallest increment of the thing that will work into the customer’s hands. You can keep making it better from there.
在生产中,没有替代品可以替代运行良好的软件。我无法相信我已经参与了长达 18 个月的发布项目。那是在瀑布式开发的糟糕时代,但即使在那时,也有可能比那更频繁地发布。我们构建的软件是有价值的。它为公司创造了价值。当你等到它完美,或者你认为它需要的一切,你就是在阻碍公司价值的建设。找到最快、最短的途径,将最小功能的可以工作的部分交付给客户。从那里,你可以继续改进它。
Relationships matter if you want to advance. It took me until about ten years ago to start to understand how building relationships across any company I work for is critical if I want to move up, and even remain employed when times are tough. I’ve found that being relentlessly helpful to others, even in things that aren’t strictly your responsibility, keeps you as someone everybody wants on the team. And when you push for a promotion, you have a base of people across the company who think you’re awesome. It greases the skids.
关系很重要,如果你想晋升。直到大约十年前,我才开始理解,在我工作的任何公司中建立关系对于我想要晋升,甚至在困难时期仍能保住工作是多么关键。我发现,即使在不严格属于你的责任范围内的事情上,也要坚持不懈地帮助他人,这样你就会成为每个人都想留在团队中的人。当你推动晋升时,你会在公司内有一批人认为你很了不起。这会使事情变得顺利。
Relationships matter if you want to see your vision come to life. You may have the best vision ever for the product and how it should be built. You may see something that isn’t working well and know just how to fix it. It’s a 90-degree uphill climb to make your vision reality when you aren’t well connected to people with the power to help you. Even if you’re at the lowest level of the organization, try to build relationships with key leaders.
关系很重要,如果你想让自己的愿景变为现实。你可能对产品及其构建方式有最好的愿景,可能看到一些不好的地方并知道如何解决。当你与有能力帮助你的人联系不紧密时,实现你的愿景就像攀登 90 度的陡坡。即使你在组织的最低层,也要努力与关键领导者建立关系。
Never be invisible. When I was still testing software for my supper, I’d just quietly work all day and then go home. I’m going to toot my own horn a little: I was fast and good at finding the most critical bugs. Nobody could touch me. But, critically, nobody in leadership knew it. When I wanted to move up, I had a hard time showing that I was ready. I needed to make sure my work was visible, so that leaders could see what I was capable of.
永远不要隐形。在我还在为晚餐测试软件的时候,我整天默默工作,然后回家。我要吹一下自己的牛皮:我找出了最关键的问题,速度快,效率高。无人能及。但关键的是,领导层并不知道这一点。当我想要晋升时,很难展示我已准备好。我需要确保我的工作是可见的,这样领导才能看到我的能力。
Build and maintain a network of people in our field, outside the company you currently work for. As I write this, I realize I have let my network fall off since the pandemic. I need to rebuild it. My network has saved my bacon more than once when I unexpectedly lost a job. I wouldn’t be at my current company without my network. I got introduced to a particular fellow about ten years ago and we had coffee. We really enjoyed the conversation and committed to coffee once a quarter, a habit we kept for many years. It fell off in time as his life took him in a different direction. He was connected to the CTO at this company, who was trying to figure out how to build out the QA team and test process. My colleague connected me to him, and I gave him some free advice that he used. He thought I was sharp enough that when his Director of Engineering left to start his own venture, he called me and asked me if I would be interested in the job.
构建并维护一个在你当前工作公司之外的行业内的联系人网络。当我写这篇文章时,我意识到由于疫情,我的网络联系已经有所松懈。我需要重建它。我的网络在我意外失去工作时救过我多次。没有我的网络,我不会在当前的公司工作。大约十年前,我认识了一位特定的先生,并与他共饮咖啡。我们非常享受交谈,并承诺每季度一次共饮咖啡,这个习惯我们保持了很多年。随着时间的推移,他的生活把他引向了不同的方向,这个习惯也随之消失。他与这家公司的一位 CTO 有联系,这位 CTO 正在想办法建立质量保证团队和测试流程。我的同事将我介绍给了他,我给了他一些免费的建议,他使用了这些建议。他认为我足够聪明,当他的工程总监离开公司创立自己的事业时,他打电话给我,问我是否对这个职位感兴趣。
Be willing. There have been plenty of things in my career that I didn’t know how to do, but when my boss asked me to do it, I simply said I’d figure it out. As you do this, it’s good for you in two ways. First, bosses like people who accept assignments and figure them out. Second, you then learn how to do the thing and can do it again; you’ve built skill. In my time at my current company, my CTO has asked me to do plenty of things I didn’t know how to do. I simply said yes and got on with figuring it out. Someone who already knew how to do it could have done it faster and better, for sure, but I got it done. We all have to start somewhere when we learn how to do something.
愿意。在我的职业生涯中,有很多事情我不知道如何去做,但当我的老板让我去做时,我只说我会想办法。这样做对你有两点好处。首先,老板喜欢接受任务并解决问题的人。其次,你随后学会了如何去做这件事,并可以再次做它;你已经建立了技能。在我目前公司的这段时间里,我的首席技术官让我做了很多我不知道如何做的事情。我只是说“是”,然后开始想办法。已经知道如何做的人肯定能更快更好地完成,但我完成了。当我们学习如何做某件事时,我们所有人都必须从某个起点开始。
Chase adventure and interestingness, not salary and title. This might be controversial with some, for whom salary and title are critical. So be it. We’re ridiculously well paid in this industry, even at the entry level. I’ve had a varied career, from technical writing to QA to engineering. I’ve said yes to, or chased after, things that sounded like would be challenging and interesting, and therefore fun. The money and positions have come to me in time. I might have gotten them a lot faster had I chased after them instead. What I got was a fascinating career and a great deal of personal and professional growth. I regret a couple choices, and a couple other choices totally didn’t work out for me. But there’s so much opportunity in this industry (even though the downturn we’re living through has tightened that up for now) that you can recover from that.
追求冒险和趣味,而不是薪水和职位。这可能会与一些人的观点产生争议,对他们来说,薪水和职位至关重要。随他们的意愿吧。在这个行业中,即使是入门级职位,我们也能获得极其丰厚的报酬。我有过多样的职业生涯,从技术写作到质量保证再到工程。我接受或追求那些听起来具有挑战性和趣味性的事情,因此也变得有趣。随着时间的推移,金钱和职位自然会到来。如果我追求它们,可能会更快得到。我得到的是一份引人入胜的职业生涯和大量的个人和职业成长。我后悔了几个选择,还有几个选择完全不适合我。但这个行业中仍然有很多机会(尽管我们正在经历的经济下滑暂时收紧了这些机会),你可以从中恢复过来。
Challenge yourself to stretch past your natural tendencies. I loved it back in the waterfall days that I could pick up a big assignment and go work on it alone for weeks. Frankly, I still would love to do that. Those days were always so comfortable – come to the office, get some coffee, put on headphones, and chip away at my assignment all day. What I didn’t understand was that it kept me off everybody’s radar. I’m not a highly competitive person. I mostly want everyone to get along and work together. But unfortunately for me, there are times when you need to be competitive to keep your job, such as when a company has a rough time financially. I had to figure out how to show visible value all the time so that the sentiment was, “well, we can’t let Jim Grey go, he gets so much good stuff done.”
挑战自己,超越自然倾向。我曾经在瀑布时期喜欢接下大任务,独自工作数周。坦白说,我仍然喜欢那样做。那些日子总是那么舒适——来到办公室,喝杯咖啡,戴上耳机,一整天都在处理我的任务。我那时不明白的是,这让我远离了大家的视线。我不是一个特别有竞争力的人。我主要希望大家都和睦相处,一起工作。但不幸的是,有时你需要表现出竞争力来保住工作,比如当公司财务状况不佳时。我必须学会如何始终展示出可见的价值,这样大家的想法就会是,“嗯,我们不能让吉姆·格雷离开,他能完成这么多好事情。”
Understand that different social classes have different ideas about how the world works. I grew up working class, blue collar. We work in a white-collar industry. Because of my background, I thought that if I worked hard and did good work, I would rise. That was true for my dad, who rose from factory floor, to quality control, to quality manager, and finally plant manager. But in a white-collar world, it’s far more about relationships and power than about your work. I still struggle with this lesson. I still want it to be about my work. But it wasn’t until I built relationships and power that I was able to reach the Director level. If I ever want to make the VP level, I have even more work to do there.
理解不同社会阶层对世界运作的看法不同。我出身于工人阶级,蓝领阶层。我们工作在白领行业。由于我的背景,我曾以为只要努力工作,做好工作,就能得到提升。这在我父亲身上得到了验证,他从工厂生产线,晋升到质量控制,再到质量经理,最终成为工厂经理。但在白领世界里,这更多地关乎人际关系和权力,而不是你的工作。我仍然在努力理解这个教训。我仍然希望这能与我的工作有关。但直到我建立起人际关系和权力,我才能达到部门经理的职位。如果我想要晋升到副总裁级别,我还需要在这些方面做更多的工作。
When you deliver work you’re really proud of, you’ve almost certainly done too much and taken too long. I have a bit of a perfectionist streak. I want to do my work well and thoroughly. It took me a long time to learn that when I do that, it’s for me, not for the company. When I’ve reached 60-80% of the thing being as good as I want, I’ve probably done enough.
当你交付你真正自豪的作品时,你很可能已经做得太多并且花费了太长时间。我有点完美主义的倾向。我想把工作做好并且做得彻底。我花了很长时间才明白,当我这样做时,是为了我自己,而不是为了公司。当我完成了一件事物的 60-80%,达到了我想要的质量时,我可能已经做得足够了。
The software we are building right now will one day be decommissioned and not be used anymore, probably before your career is over. I’ve lost track of all of the software I’ve delivered that isn’t running anywhere anymore. Some of that is because my career is 35 years long. But even some of the software I worked on five or ten years ago isn’t running anymore. This is another good reason to build small increments, just good enough, get them out there, and iterate from there. Anything more and you’ve overbuilt some software that isn’t going to run forever anyway.
我们现在正在构建的软件总有一天会被退役,不再使用,可能在你的职业生涯结束之前。我已经记不清有多少我交付的软件现在已经不再运行了。这其中有部分是因为我的职业生涯长达 35 年。但即使是五年前或十年前我参与的软件,现在也不再运行了。这就是为什么我们应该构建小增量,只要足够好,将它们推出去,并在此基础上迭代。做得更多只会让你构建一些最终不会永远运行的过于复杂的软件。