Rust开发工程师
Rust Developer
RUST 开发人员
你将负责改进我们构建和维护的软件,同时积极为产品开发做出贡献。高级软件工程师负责团队内工程实践的质量。高级软件工程师跨团队工作,以识别跨团队的改进(例如)共享代码、消除复杂性或实施新实践。作为团队中的资深成员,你应指导并培养其他软件工程师,并在多个代码库和语言中成为团队及整个组织的首选联系人。
主要职责
- 积极倡导并树立高质量的榜样,解决困难且细微的系统问题
- 使用系统调试来诊断一组相关领域的所有问题,并推动多个团队之间可观测性和监控文化的建立
- 经常跨团队工作,建立迭代、自主开发和未来扩展的文化
- 在一组相关的团队领域中担任技术和优先级领导者,持续突破边界并探索理解上的空白
- 在团队及整个组织的多个代码库和语言中是首选联系人
- 主动性强,完成任务时需要最少的监督或指导
- 审查架构师和形式化方法专家编写的规格说明
- 领导组件及其交互的设计
- 可以处理已部署产品的严重级别1问题的紧急修复
- 集成软件组件和第三方库
- 验证并部署程序和系统
- 编写代码文档
- 编写技术用户手册
关键能力
- 能够理解项目需求、目标和时间表,以用于特定流程的计划和设置截止日期
- 清晰地阐述新问题,向管理层建议变更以实现
- 编写符合给定任务接受标准的惯用代码
- 编写足够且不冗余的高效代码覆盖率的测试(单元测试、属性测试)
- 简明扼要且无歧义地记录代码和API
- 提供详细的工作指导,协助任务分配,并对工作进行深入的评审和反馈
- 实践性地遵守软件工程原则(模块化、增量开发、没有过早优化、没有功能蔓延、没有推测性生成)
查看英文原文
RUST Developer
You will be responsible for improving we build and maintain software, alongside actively contributing to product development. Senior Software Engineer is responsible for the quality of engineering practices within a team. Senior Software Engineers work across teams to identify cross-team improvements (for example) sharing code, removing complexity or implementing new practices. As a senior member of the team you are expected to mentor and grow other software engineers and act as a go-to person within the team and the wider organisation across multiple codebases and languages.
Key Responsibilities
- Advocates for and models great quality with proactive actions, and tackles difficult and subtle system issues
- Uses systematic debugging to diagnose all issues within a set of related domains and leads in fostering a culture of observability and monitoring across several teams
- Regularly works across teams to build a culture for iterative, autonomous development and future scaling.
- Is a technical and prioritisation leader across a set of related team's domains, consistently pushing boundaries and exploring gaps in understanding.
- Is a go-to within the team and the wider organisation across multiple codebases and languages.
- Be proactive and require minimal supervision or mentoring to complete tasks
- Review specifications produced by architects and formal methods specialists
- Lead the design of components and their interactions
- Be available for emergency fixing of severity 1 issues on deployed products
- Integrate software components and third-party libraries
- Verify and deploy programs and systems
- Write documentation for the code
- Write technical user manuals
Key Competencies
- Ability to understand project needs, objectives and timescales to feed into planning and setting deadlines for a specific stream.
- Clearly articulates new issues, suggests changes to management for implementation.
- Write idiomatic code that satisfies the acceptance criteria of a given task
- Write tests (unit tests, property tests) that provide sufficient and non-superfluous efficient code coverage.
- Document code and APIs concisely and unambiguously
- Provide detailed guidance on the work to be done, assist with task assignments and deliver deep reviews and feedback on the work.
- Pragmatically adhere to software engineering principles (modularity, incremental development, no premature optimization, no feature creep, no speculative generality)
Education / Experience
- Degree in Computer Science is desirable but not essential
- 7+ years of software engineering experience in the required language ( Haskell, Javascript, Scala, Rust)
- Experience working with Git and Git workflow
- Practical experience with Agile software development methods
- Knowledge of functional and object-oriented programming paradigms
Specialist Skills
- Strong experience with the Rust programming language in production environments.
- Expert-level understanding of Rust’s ownership model, borrowing mechanics, lifetimes, and concurrency paradigms.
- Experience in developing web services and RESTful APIs.
- Understanding of HTTP protocols, accessibility, and security compliance.
- Knowledge of distributed systems and network development.
- Experience with concurrent programming and multithreading.
- Experience with cloud platforms such as AWS, GCP, or Azure.
- Familiarity with containerization (Docker) and orchestration tools (Kubernetes).
- Understanding of continuous integration and deployment pipelines.
- Experience with software development methods such as test-driven development.
- Knowledge of cryptography protocols is a plus.
- Experience with Web3 technologies is an added advantage.
Originally posted on Himalayas