SENIOR SOFTWARE ENGINEER (SCALA) at Caterpillar
As a Software Engineer, you will contribute to design, development and deployment of Caterpillar’s state-of-the-art digital platform hosted on AWS.
JOB DUTIES: As a Senior Software Engineer you will contribute to design, development, testing and deployment of software systems and/or applications.
- Competent to perform all programming, project management, and development assignments without close supervision; normally assigned the more complex aspects of systems work.
- Works directly on complex application/technical problem identification and resolution, including responding to off-shift and weekend support calls.
- Works independently on complex systems or infrastructure components that may be used by one or more applications or systems.
- Performing design, analysis, programming, integration, debugging, testing, and implementation activities to deliver software solutions to business/technical problems in support of delivering business valuable features
- Mentor and assist software engineers, providing technical assistance and direction as needed
- Maintains high standards of software quality within the team by establishing good practices and habits
- Identifies and encourage areas for growth and improvement within the team
- Guide the team to develop a structured application/interface code, new program documentation, operations documentation and user guides in a casual, flexible environment
- Communicate with end users and internal customers to help direct development, debugging, and testing of application software for accuracy, integrity, interoperability, and completeness
- Performs integrated testing and customer acceptance testing of components that requires careful planning and execution to ensure timely, quality results.
- Employee is also responsible for performing other job duties as assigned by Caterpillar management from time to time.
- Position requires a four-year degree from an accredited college or university.
- 6 years or more of software development experience or at least 5 years of experience with master’s degree in computer science or related field.
- 3 years of experience with functional programming languages such as Scala, Java 8+ in design and development of distributed high-availability and reliability web applications.
- 2 years of experience with data streaming technologies similar to Akka, Spark Streaming, Flink, Kafka, etc.
- 3 years of experience developing RESTful applications using microservices with Spring Boot (or similar technologies) in multi-threaded, distributed environment.
- 3 years of experience using SQL and NoSQL databases, Cloud or serverless technologies and frameworks such as AWS, Kinesis, API Gateway, CloudFormation/Terraform, IAM, AWS Lambda, S3, SNS, SQS, etc.
- 3 years of experience leveraging AWS and Tomcat, Docker, business models, data models, tools, or functionality.
- 2 years of experience with CI/CD and DevOps technologies such as Azure DevOps Code Pipeline, Jenkins, shell scripts, etc. and an Agile software development methodology.
Top candidates will also have:
- Proven experience in many of the following,
- Designing, developing, deploying and maintaining software at scale.
- Developing software applications using relational and Nosql databases.
- Application architectural patterns, such as MVC, Microservices, Event-driven, etc.
- Deploying software using CI/CD tools such as Jenkins, GoCD, Azure Devops etc.
- Deploying and maintaining software using public clouds such as AWS or Azure.
- Working within an Agile framework (ideally Scrum)
- Strong understanding and/or experience in many of the following,
- Batch or stream processing systems such as Apache Spark, Flink, Akka, Storm
- Message brokers such as Kafka, Rabbitmq, AWS SQS, AWS SNS, Apache ActiveMQ, Kinesis.
- Experience designing well-defined Restful APIs
- Experience writing API proxies on platforms such as Apigee Edge, AWS API Gateway or Azure API Gateway
- Hands one experience with API tools such as Swagger, Postman and Assertible
- Test driven development and behavior driven development.
- Hands on experience with testing tools such as Selenium and Cucumber and their integration into CI/CD pipelines.
- Datastores such as MongoDB, Cassandra, Redis, Elasticsearch, MySQL, Oracle.
- Debugging and maintaining software in Linux or Unix platforms.
- Experience with architecture and design of large-scale systems with focus on performance, scalability, high-availability, reliability and fault tolerance.
- Understanding of front-end state management libraries (redux)
- Must demonstrate solid knowledge of computer science fundamentals like data structures and algorithms.
- Ability to work under pressure and within time constraints
- Passion for technology and an eagerness to contribute to a team-oriented environment
- Demonstrated leadership on small to medium-scale projects impacting strategic priorities
- Bachelor’s degree in Computer science or Electrical engineering or related field is required
Visa sponsorship available for eligible applicants.
EEO/AA Employer. All qualified individuals - Including minorities, females, veterans and individuals with disabilities - are encouraged to apply.
Not ready to apply? Submit your information to our Talent Network here.