



Job Information
Ford Motor Company Full Stack Software Engineer in Topeka, Kansas
The position is within Order Fulfilment, providing services to all Top Hats. As the team is continuously deploying to production there is a strong emphasis on Test Driven Development practices and driving out solution design using tests.
A technical exercise will be requested before interview, giving the candidate the opportunity to demonstrate their experience of driving the solution to a simple problem using tests.
Highlights of this team and how we work are:
Culture:
High degree of autonomy – particularly on how development is done and on prioritizing work that accelerates the team.
Highly collaborative – pairing, mobbing, pair swapping, daily technical knowledge sharing sessions.
Optimize for flow, not utilization: pull-based flow.
Quality centric – very few defects (1-2/month), naturally high test-coverage (90-100%), high internal code quality.
Continuously improving – in ways of working, technology, & architecture.
Architecture:
Event-Driven Microservices Architecture – new end -to-end functionality is usually added by adding microservices that are loosely coupled by events (RabbitMQ, Kafka).
Actual Microservices – the logic of the service fits on half a screen (usually);
Small classes, small methods, communicative code
Kotlin – Older services are in Java, new services use Kotlin
Pivotal Cloud Foundry – migrating to Google Cloud Platform
Component/Sequence Diagrams generated dynamically from test-runs of end-to-end and component-level tests (Living Sequence Diagrams)
Development on MacBook Pros with IntelliJ IDEA (both supplied) for security reasons.
Infrastructure as code (where possible) – our infrastructure is configured via code and git versioned config.
Practices:
User Stories (that are actually vertical) – while we mainly implement APIs, we do so with the 3rd Party developer in mind as our user.
User Story Mapping – we identify stories that support the business process (Activities & Steps) and the commercial objective ("Release" Slice – although this is a notional concept since we're shipping to prod 15-20 times per day);
BDD/TDD (as if you really meant it) – outside-in development, driven from scenarios with outer and inner loops from e2e, CDC, component (service) tests, unit tests, mutation testing.
Trunk Based Development – no feature branches, all development done on Master/Main with small safe steps.
Continuous Deployment – 1-3 commits at a time are pushed, resulting in our automated build then testing that service and then end-to-end with other services, automatically deploying it to production with blue-green deployment 20-40 minutes later (depending on the service).
Deployment to primary and failover environments as part of the build.
Reverse Pull Requests – for collaborative code review even though many commits are already running in prod (we're only done when engineers say they're happy the code is maintainable).
Be part of a team of software developers, providing technical guidance and support throughout the software development lifecycle.
Collaborate with cross-functional teams, including Product Managers, Architects, DevOps, and QA, to design and develop a scalable microservices platform.
Design, develop, and implement high-quality, reusable, and testable code that adheres to industry best practices and standards.
Build reusable frameworks and work closely with DevOps and other teams to ensure the platform is highly available, scalable, and fault tolerant.
Handle operational issues with little or no oversight.
Conduct code reviews and ensure adherence to standards, patterns, and architecture principles.
Develop and maintain technical documentation and user guides for the platform
Bachelor's Degree in Computer Science, Computer Engineering, or a related field.
5+ years of Object-Oriented Development experience where you applied expertise in building microservices architectures on JVM platform concepts with the following tools and technologies:
Spring Platform (Spring MVC, Spring Boot, Spring JDBC, Spring Cloud)
Asynchronous Messaging (Kafka, RabbitMQ, Pub/Sub)
Automated Testing, Continuous Integration, Continuous Deployment, and technologies (Jenkins CI or similar)
5+ years of understanding, practicing, and advocating for clean code principles such as test-driven development (TDD/BDD), Extreme Programming (XP), self-documenting code, continuous refactoring, and writing Unit, Integration, and Acceptance test cases
3+ years Kotlin coding experience
3+ years experience working with cloud technologies (PCF, GCP)
#hybrid
Requisition ID : 17015