Are you looking for your next big challenge?
For more than 90 years, Caterpillar Inc. has been making sustainable progress possible and driving positive change on every continent. Customers turn to Caterpillar to help them develop infrastructure, energy and natural resource assets. With 2018 sales and revenues of $54.7 billion, Caterpillar is the world’s leading manufacturer of construction and mining equipment, diesel and natural gas engines, industrial gas turbines and diesel-electric locomotives.
Caterpillar is investing in our digital future, and we’re looking for the best Technical Lead. Our iconic products have evolved from mechanical work horses to highly sophisticated, electronically-controlled worksite solutions. This transformation, along with our smart factories and our integrated dealer network, has a wealth of data ready to be leveraged by our customers and our dealers. Think you have what it takes to develop the software and architect the platform to support Caterpillar’s digital revolution?
We at Caterpillar Digital are working to put together the Digital platform for delivering industry-leading digital solutions in support of profitable growth for Caterpillar, dealers & our end customers.
Come join us in this exciting journey and be part of the world class organization and play a key role in its digital transformation.
Roles & Responsibilities:
Lead Software Engineer provides technical leadership in design, development and deployment of Caterpillar’s state-of-the-art digital platform.
Responsibilities of the incumbents are across functional lines with individuals assigned in new program development and/or maintenance of existing mobile, WEB, Cloud, server, personal computer, mainframe, and/or distributed computing systems.
1. Competent to perform all programming, project management, and development assignments without close supervision; normally assigned the more complex aspects of systems work.
2. Acts as team leader for development and support groups; provides programming and application/technical leadership, guidance, and assistance to other team members.
3. Works directly on complex application/technical problem identification and resolution, including responding to off-shift and weekend support calls.
4. Works independently on complex systems or infrastructure components that may be used by one or more applications or systems.
5. Drives application development focused around delivering business valuable features
6. Mentor and assist software engineers, providing technical assistance and direction as needed
7. Maintains high standards of software quality within the team by establishing good practices and habits
8. Identifies and encourage areas for growth and improvement within the team
9. Guide the team to develop a structured application/interface code, new program documentation, operations documentation and user guides in a casual, flexible environment
10. Communicate with end users and internal customers to help direct development, debugging, and testing of application software for accuracy, integrity, interoperability, and completeness
11. Lead development of new functionality and applications on cross-functional Agile project teams
12. Performs integrated testing and customer acceptance testing of components that requires careful planning and execution to ensure timely, quality results.
The position manages the completion of its own work assignments and coordinates work with others. Based on past experiences and knowledge, the incumbent normally works independently with minimal management input and review of end results.
Typical customers include Caterpillar customers, dealers, other external companies who purchase services offered by Caterpillar as well as internal business unit and/or service center groups. The position is challenged to quickly and correctly identify problems that may not be obvious. The incumbent solves problems by determining the best course of action, within departmental guidelines, from many existing solutions. The incumbent sets priorities and establishes a work plan in order to complete broadly defined assignments and achieve desired results. The position participates in brainstorming sessions focused on developing new approaches to meeting quality goals in the measure(s) stated.
Required Technical Competencies:
• Position requires a four-year degree from an accredited college or university.
• Eight years or more of software development experience or at least five years of experience with master’s degree in computer science or related field.
• Eight years or more of experience in designing and developing software applications in Java or Scala or at least five years of experience in Java or Scala with master’s degree in computer science or related field.
Top candidates will also have:
Proven experience in many of the following,
o Designing, developing, deploying and maintaining software at scale.
o Batch or stream processing systems such as Apache Spark, Flink, Akka, Storm
o Message brokers such as Kafka, RabbitMq, AWS SQS, AWS SNS, Apache ActiveMQ, Kinesis.
o Datastores such as MongoDB, Cassandra, Redis, Elasticsearch, MySQL, Oracle.
o Developing software applications using relational and Nosql databases.
o Application architectural patterns, such as MVC, Microservices, Event-driven, etc.
o Deploying software using CI/CD tools such as Jenkins, GoCD, Azure Devops etc.
o At least three plus years of deploying and maintaining software using public clouds such as AWS
o Working within an Agile framework (ideally Scrum).
o Debugging and maintaining software in Linux or Unix platforms.
o Experience designing well-defined Restful APIs
o Experience writing API proxies on platforms such as Apigee Edge, AWS API Gateway or Azure API Gateway
o Hands one experience with API tools such as Swagger, Postman and Assertible
o Test driven development and behavior driven development.
o Hands on experience with testing tools such as Selenium and Cucumber and their integration into CI/CD pipelines.
• 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 medium to large-scale projects impacting strategic priorities.
• Bachelor’s degree in Computer science or related field is required.