We are currently looking for a Senior Software Engineer to join our team based at our Digital Transformation Centre.
Do you want to help us grow one of the most agile, dynamic and efficient teams in the digital world?
We are now looking for a Senior Software Engineer to join our team, as part of our wider UK Digital Transformation capability. The candidate would work on one of a range of assignments from a growing portfolio of government and commercial clients.
Key Accountabilities and Responsibilities:
As a Senior Software Engineer - you would:
- Understand customer journeys, current systems, processes & challenges
- Develop innovative and creative solutions to challenging problems
- Conceptualise, design, develop & deliver interesting proof of concepts demonstrating value to customers & business
- Engage project stakeholders
- Liaise with Project Management & IT teams to transform proof of concepts into robust & scalable solutions
As a Senior Software Engineer you’d already possess
- A proven track record with relevant experience
- Great passion to make a difference
- Strong problem solving, analytical and logical skills
- Excellent communication skills
- Can-do, will-do attitude
- Demonstrated ability to develop robust IT solutions within timelines
- Solid understanding of software design principles and best practices
- An ability to quickly ramp up on any given technology or domain
- A sound understanding of the essence of Agile
- Ability to work independently with a problem solving mindset
- Well-versed in fundamentals of programming with an ability to code like a king!
Key Accountabilities and Responsibilities:
- Good Understanding of at least one major programming language
- Understands framework and enough of tool ecosystem of chosen language to implement end to end component with minimal assistance
- Comfortable producing and refactoring code without assistance
- Able to test drive features in programming language of choice
- Understands different major language paradigms (OOP)
- Understands presence of abstraction beneath language (JVM/CLR)
- Can reason about complexity of algorithms (time and space) and code.
- Can debug code.
- Can understand and resolve complex issues.
- Implement design patterns with guidance.
- Identify design patterns in code.
- Comfortable translating small behaviour requirements into tasks & code.
- Basic understanding of domains and domain modelling.
- Seeks out and uses appropriate abstractions.
- Understands DRY and basic code hygiene factors.
- Understands patterns for integration (events/services).
- Understands how to leverage existing functionality outside immediate project.
- Understands scope of project and when to move behaviour to other services.
- Good working knowledge of one relevant operating system
- Understands one relevant Database technology
- Can script and automate within relevant environment
- Understands main security risks of relevant language and framework
- Can perform a tool based security scan and articulate vulnerabilities
- Understands Oauth/Saml & identity models
- Basic grasp of secure coding
Impact & Value
- Contributes ideas for
- Suggests improvements to processes and methodologies to speed delivery.
- Participates in retrospectives Questions requirements and challenges where. necessary
- Can identify value of tasks & always works on the highest priority items.
Behaviours & Collaboration
- Fully participates in team ceremonies.
- Comfortable pair programming.
- Can use whiteboard and other materials to convey designs and principle
- We are looking for Language agnostic resources, however Java is used on most customer projects
- Working knowledge of CI tooling
- Commits code early and often
- Understands feature toggling
- Understands version control & branching strategies
- We are looking for Language agnostic resources, however below are the type of tools used on an example customer project -
- Cloud Solutions - working on Azure or AWS
- Containers Management - using tools like Docker
- Elastic Scaling - using tools like Nginx, HAProxy or PAAS like Openshift
- Configuration Management - using tools like Etcd, Spring, Puppet/Chef, and Ancible
- Continuous Integration - using tools like Maven and Jenkins
- Continuous Deployment - using tools like Jenkins or Go
- Assembly Development - using frameworks like Apache Camel or Node.js
- UI Development - using frameworks like Node.js, REACT or AngularJS
- Code Development - using IDE's like Eclipse or IntelliJ
- Collaboration - using tools like Git-Hub and JIRA
- Understands BDD/TDD/Performance/Security/Smoke testing
- Understands CI and CD, writes tests to ensure CI/CD processes work
DXC Technology is committed to the development of a fully inclusive workforce. All applications for employment are assessed purely on merit, against the capabilities and competencies required for the role.
DXC Technology does not discriminate on the basis of gender, ethnic origin, race, faith or sexual orientation.