内容提要
一位软件工程师从Web转向机器人领域,加入Monumental公司,用机器人自动化建筑施工。他认为软件应解决住房、气候等现实问题,硬件领域影响更大。跨学科合作能拓宽视野,但需学习C/C++、Rust、CAD和焊接等新技能。机器人软件仍属软件,却面临状态管理、电缆接触等新挑战。他鼓励工程师动手造机器人,别浪费生命做无聊应用。
延伸解读
从软件到硬件的技能拓展
文章指出,软件工程师转向机器人领域需要学习C/C++、Rust、CAD和焊接等新技能。C/C++是微控制器编程的基础,Rust则因其安全性和工具链优势值得关注。CAD和3D打印有助于理解硬件设计,焊接则能深入电子开发。这些技能不仅提升个人能力,也促进与机械、电气工程师的协作。
机器人软件开发的独特挑战
尽管机器人软件本质仍是软件,但面临状态管理、电缆接触等新问题。在DevOps中,云服务可随时替换,但机器人不能随意丢弃。文章提到使用Nix在git仓库中管理系统配置,实现有状态系统的一次性更新。这类问题需要工程手段解决,可能让开发者怀念简单的CRUD应用。
跨学科合作的价值与适应
涉足硬件意味着与机械、电气工程师合作,他们的视角独特,如认为物理世界可塑。初期可能因术语如“2020视力”“电磁干扰”感到不安,但随时间推进能跨学科交流。这种合作拓宽视野,使软件工程师更出色,编程工作也更接近3D几何和游戏编程。
Q&A
软件工程师想转行做机器人,需要学习哪些新技能?
需要学习C或C++(用于微控制器编程)、Rust(强类型和安全性好)、CAD和3D打印技术,以及焊接。这些技能有助于理解硬件和电子开发。
从软件转向机器人领域,会面临哪些新的技术挑战?
会遇到状态管理问题,比如多台机器人运行不同服务且需保持更新,不能随意丢弃机器人;还有电缆接触不良等物理调试问题。此外,编程更类似3D几何和场景图游戏编程。
为什么软件工程师应该考虑进入硬件或机器人领域?
因为硬件领域能带来更大影响,软件应用无法解决住房、食物、气候变化等现实问题,需要结合硬件。跨学科合作能拓宽视野,成为更出色的工程师。
在机器人公司工作,跨学科合作是怎样的体验?
需要与机械、电气工程师合作,起初可能听不懂他们的术语如“2020视力”、“冲击维护”、“电磁干扰”,但逐渐能跨学科交流并贡献见解。这种合作令人兴奋且启发思考。
机器人软件开发和传统软件开发有什么异同?
相同点:机器人软件仍是软件,需处理数据清洗、备份等常规任务。不同点:面临状态管理、电缆接触等新问题,编程更接近3D几何和场景图,且需管理有状态系统。
如何管理机器人系统的软件更新和状态?
可以使用Nix工具,在git仓库中管理整个系统配置,让系统自动更新配置,实现有状态系统的一次性使用好处。但需注意不能每次更新就抛弃机器人。