JOB TITLE: Software Engineer (Java)
LOCATION: Manchester
REPORTING TO: Product Team Leader
DIRECT REPORTS: None
JOB PURPOSE:
- Reporting to the Product Team Leader, the Software Engineer will be responsible for the development and maintenance of the product ensuring that all code changes follow the agreed designs based on Object Oriented principles and any changes fit with the team objectives as identified by the Product Team Leader.
- Development of a J2EE web client application.
- Development of a Java server application
OBJECTIVES
- Delivers all assigned work items to time and budget.
- Can follow the codes of practices, standards that are employed in the creation of code for the Ultra developments.
- Understands and utilizes Software Source Configuration control, and understands that unauthorized code changes should not be implemented without agreement from a Senior Engineer or Team Leader.
- Understands the escalation process and uses it appropriately, communicating issues effectively and in a timely manner.
- Demonstrates that rejected bug fixes are kept to a minimum.
- Ensures that the number of bugs created during any release is kept to a minimum. This is difficult to measure but should be a goal of all developers.
- Code should be compiled and tested before check-in; therefore no submissions should break the build (i.e. the build should always compile successfully).
MAIN DUTIES AND RESPONSIBILITIES
- Responsible for the analysis, design, development, test and documentation of software solutions making specific determinations about system performance, future use and maintenance.
- Authors reports, guidance documents etc.
- Creates and maintains functional specifications with adequate traceability and history.
- Can develop software based test scenarios applicable to all levels of allocated software requirements.
- Responsible for the review of software changes made by junior team members.
- Providing & reviewing work estimates (ensuring estimate accuracy) and tracking changes against these estimates.
- Analysis of the impact of slips on the programme and propose recovery or containment actions to the Team Leader.
- Responsible for ensuring all development risks & assumptions are identified, reported & monitored to manage their impact on schedule for assigned tasks.
- Ensure all team issues are identified & reported, resolved if possible or escalated to the Team Leader for resolution.
- Responsible for increasing software quality, including reviewing project deliverables.
- Assist the Team Leader in the delivery of builds and ensuring the successful and timely entry to major project milestones by the scheduled dates and ensuring appropriate reviews (including product/database integrity) & unit/integration testing are carried out.
SKILLS /EXPERIENCE
Essential:
- Ensure effective communication with other team members.
- Ensure risks are identified as early as possible.
- Is capable of resolving all compiler errors and warnings within the application code being developed.
- Methodologies/Tools/Platforms:
- Java
- XML
- Windows
- UNIX (Solaris/AIX/HP, Shell Scripts)
- Source Control Tools (Subversion, CVS, etc)
- Issue Management Tools (e.g. Redmine)
Desirable:
- Experience of integration approaches and middleware messaging (e.g. SonicMQ/ESB, WebSphereMQ)
- Experience of writing papers and proposals.
- Methodologies/Tools/Platforms:
- Service Orientated Architecture
- .NET / C#
- UML
- SonicMQ/ESB
- Hudson Continuous Integration Server
- Web Services (XML / SOAP)
- WS-* policies (WS-Security, WS-Policy, SOAP, WSDL etc.)
- JBoss Application Server
- Unit Testing (jUnit, etc)



