Research projects often come with a lot of unknowns. Many engineers find this unsettling because it’s less straightforward than math or digital realm. However, I think we should welcome these uncertainties. They reflect the real challenges of real-world task and provide a chance to showcase our capability, making our work more engaging and lively.
Here’s my strategy to handle a research project:
Clarify requirements thoroughly
- It’s important to know not just what is needed but also why it is needed. Finding out why can be tough because people might not want to explain their core motivation, which could be personal or office politics related sometimes. But knowing this helps make better decisions.
Check your inventory
- Reach out to all your connections to find out what technical stacks are available to you.
- Double-check the resources you’re told, use strategy “trust but verify”. This part is extremely important because most of the time the people disappoint you are not someone you don’t trust, but instead someone you fully trust in the beginning but failed you later.
- Ask for schedule or roadmaps for future available resources. Add extra buffer time for each of those resources, depending on two factors (1) how important these deliverables are to their owners (2) how much influence do you have on their owners. If we eliminate the possibility of lying, still we must know that people are busy and have their own priorities. Usually they tell you the schedule or roadmaps based on best scenarios.
- For critical external dependencies, always have plan B.
- “Inventory” not only includes existing technical stacks, but also team members’ expertise. For long-term projects, you may have time to hire experts or ask team members to pick up new skills; for short-term projects, you may have to pick technical stacks that your team is most familiar with.
Brainstorm with your team
- Lay out all the facts and assumptions. There must be a clear separation between these two categories.
- Talk through different ideas with your team, and very importantly try to bring out ideas from your team members. If you are a senior member, talk last.
- Within all the ideas and options, there must be something that require further confirmation or investigation. Take some time to do more investigation, and remember to delegate those well defined tasks to your team members.
Make decisions and move forward
- Spend enough time to think over your options, but not too long. Then make decisions together with your team, and very importantly tell them the “why”.
- Stick to your decision once it’s made, and keep going until you reach an major milestone in the project. Then you can slow down to reflect and diverge some resource to solve technical debts. But before that, block out all the noises and keep executing.
Set milestones and celebrate small wins:
- Set clear milestones and check your progress as you go.
- Milestones must be verifiable, even better if you can find a quantitative criteria or automated checks.
- Milestones must be carefully paced, usually once every months.
- Milestones have their importance, some may be major milestones, some may be small checkpoints.
- Define milestone and their criteria, publish them to your team member. This is a very good / suitable task for team leaders.
- Celebrate every success, big or small, but keep it real to stay focused. Don’t fool yourself with marketing materials.
Ask for help
- Always be ready to ask for help if you need it, and sometimes prefetch, to anticipate what kind of road blocks there will be and think about solution, is also necessary.
- Help others too, which can help build a good reputation.
- Find help and find solution to road blocks shall be the top priority tasks for team leaders.
Thank everyone and keep promoting your work
- At major milestones, send out emails or make posts to promote your team’s work with demos, and thank everyone who helped.
- The project doesn’t end when you reach your goals. Keep promoting the work, especially in big companies where getting noticed are key.
ChatGPT翻译版本
如果做预研项目#
预研项目往往伴随着许多未知因素。许多工程师发现这令人不安,因为它不像数学或数字领域那样直截了当。然而,我认为我们应该欢迎这些不确定性。它们反映了真实世界任务的真实挑战,并提供了展示我们能力的机会,使我们的工作更具吸引力和活力。
以下是我处理研究项目的策略:
彻底澄清需求
- 重要的不仅是知道需要什么,还要知道为什么需要。发现为什么可能很难,因为人们可能不想解释他们的核心动机,有时这可能与个人或办公室政治有关。但了解这一点有助于做出更好的决策。
检查你的库存
- 联系你所有的联系人,了解你可以使用哪些技术栈。
- 仔细检查你被告知的资源,使用策略“信任但验证”。这一部分极其重要,因为大多数时候让你失望的人不是你不信任的人,而是一开始你完全信任但后来辜负了你的人。
- 要求提供未来可用资源的时间表或路线图。根据两个因素为这些资源增加额外的缓冲时间(1)这些交付成果对其所有者的重要性(2)你对其所有者的影响力。如果我们排除了说谎的可能性,仍然必须知道:人们都很忙,有自己各自的优先级。通常他们告诉你的时间表或路线图是基于最佳情况。
- 对于关键的外部依赖,始终有计划B。
- “库存”不仅包括现有的技术栈,还包括团队成员的专业技能。对于长期项目,你可能有时间聘请专家或要求团队成员学习新技能;对于短期项目,你可能不得不选择团队最熟悉的技术栈。
与你的团队头脑风暴
- 阐明所有事实和假设。这两个类别之间必须有清晰的区分。
- 与团队讨论不同的想法,并且非常重要的是尝试引出团队成员的想法。如果你是资深成员,最后发言。
- 在头脑风暴中的所有想法和选项中,必定有些需要进一步确认或研究。花些时间做更多研究,并记得将那些明确的任务委托给你的团队成员。
做出决定并向前推进
- 花足够的时间思考你的选项,但不要太久。然后与你的团队一起做出决定,并非常重要地告诉他们“为什么”。
- 一旦做出决定,就坚持你的决定,并继续前进,直到你在项目中达到一个重要的里程碑。然后你可以放慢脚步,反思并分配一些资源来解决技术债务。但在此之前,屏蔽所有噪音,继续执行。
设定里程碑并庆祝小胜利:
- 设定明确的里程碑,并随着时间的推移检查你的进度。
- 里程碑必须是可验证的,如果可以找到定量标准或自动检查,那就更好了。
- 里程碑必须谨慎安排,通常每几个月一次。
- 里程碑有其重要性,有些可能是主要的里程碑,有些可能是小的检查点。
- 定义里程碑及其标准,将它们发布给你的团队成员。这对团队领导者来说是一个非常好且合适的任务。
- 庆祝每一个成功,无论大小,但保持真实以保持专注。不要被自己的营销材料欺骗。
寻求帮助
- 如果需要,随时准备寻求帮助,有时积极预测可能出现的障碍并思考解决方案也是必要的。
- 也帮助别人,这可以帮助建立良好的声誉。
- 寻找帮助和解决障碍应是团队领导者的首要任务。
感谢每个人并继续推广你的工作
- 在主要里程碑时,发送邮件或发布帖子来推广你团队的工作,并感谢所有帮助过的人。
- 项目在达到目标时并不是结束。继续推广你们的成果,特别是在大公司中,获得关注是关键。