Software Engineer (Appliance Core)
Reference: SoftwareAppCore08
Role
As a Software Engineer you will become part of a progressive team at Sophos. You will create cutting edge filtering for HTTP, SMTP and other common protocols. By working on the team building shared infrastructure for Sophos’ WS1000, ES1000 and ES4000 appliance products and the web based operational systems which support them, you will get a chance to use your expertise in developing operating systems, networking and other core software technologies. As we have adopted the Extreme Programming model of development, you will pair closely with software developers and QA experts in an extremely collaborative environment. You will help transform the innovative and industry leading work done at SophosLabs (http://www.sophos.com/support/sophoslabs) into products used everywhere from education to the financial industry.
This position is based at our Canadian office in Vancouver, British Columbia.
Main duties
- Develop software based on XP stories, pairing with other developers
- Use test driven development to unit test code, ensuring that levels of coverage meet desired metrics
- Automate system and integration testing across the component, fixing errors as found
- Review XP story cards, identifying areas that require further clarification, and collaborate with XP customers and other team members to complete story notes and high level story estimates
- Plan weekly XP iterations
- Break XP stories down into tasks on story charts and estimate time required
- Provide updates on progress against XP tasks on story charts
- Deliver against the weekly iteration plan
- Design large components consisting of numerous interfacing packages
- Make recommendations for software architecture changes during incremental design discussions
- Ensure stories are reviewed and accepted by the development manager or designate
- Review peer code (and spike notes) ensuring adherence to standards and make suggestions to increase quality to the author
- Review code across the component and identify opportunities to re-factor for increased clarity, removing technical debt
- Resolve defects and insure root causes are covered by unit or system tests in future
- Identify gaps in coverage of the software testing and opportunities for improvement
- Exchange information with other development teams to share ideas and resolve issues
- Coach other developers on technologies, processes and products to enable them to contribute more effectively
- Conduct presentations to other developers on products and technologies
Experience and skills
Essential
- Developing Linux or BSD based products or mission critical web servers
- Unit testing and integrating products
- Developing back-end infrastructure in C/C++ or perl AND/OR
- Developing web based user interfaces in PHP or perl
Desirable
- Experience with the XP methodology
- Developing appliance (hardware/software) products
- C/C++ programming in operating systems, networking or embedded systems
- Experience with both Linux and FreeBSD
- Computer security industry experience
- Perl programming
- Linux or FreeBSD device driver programming
- XP coaching experience
Education
- Bachelors of Engineering (Computer Engineering) or equivalent experience
