Staff Software Engineer
What we do:
Uptake harnesses the power of underutilized data to empower businesses to make informed decisions. We partner with industry leaders to build a predictive analytics software platform that grows smarter in one industry because of what we learn in another. The result is a powerful platform that identifies problems before they happen, ultimately saving money, time and lives.
Why Work Here
Uptake is a values-driven organization, and we are excited about what we do. We’re flexible, honest, hardworking, and collaborative. As a team, we bring our diverse backgrounds, beliefs, and experiences together to solve tough, important problems. We support and challenge one another to bring out the best in each of us, and we might have a little fun along the way. We’re also proud to be one of Chicago’s best places to work in 2018 according to Forbes and Great Place to Work Institute.
We offer generous benefits including health, dental, vision, parental leave, 401K match, and unlimited vacation. We are lifelong learners, and our Uptake University program offers training and professional development on a wide variety of topics. We also have employee-led community groups including Women@Uptake, Pride@Uptake, Science@Uptake, Parents@Uptake, and many more. Learn more at https://www.uptake.com/careers.
What you’ll do:
As a Staff Software Engineer at Uptake you’ll help build and expand a complex analytics platform that is already changing the way large industrial companies manage their assets. A Staff Engineer understands cutting-edge tools and frameworks, and can help in determining what the best tools are for a given task. Staff Software Engineers are encouraged to work with, and experiment with, cutting-edge technologies in the fields of distributed systems, data ingestion and mapping, and machine learning, to name a few. We strongly promote innovation and collaboration throughout our engineering team, and encourage our Staff Engineers to stay up to date and test new technologies—all with the aim of ensuring that our existing systems don’t stagnate or deteriorate.
Responsibilities:
As a Staff Software Engineer, your responsibilities may include, but are not limited to, the following:
- Create interactive visualization tools and dashboards
- Build a highly scalable framework for ingesting, transforming and enhancing data at web scale
- Develop a web services based platform that can grow with the business
- Establish automated build and deployment pipelines
- Implement machine learning models that enable customers to glean hidden insights about their data
- Run small to medium sized projects that impact the entire department
- Your solutions may impact the department or entire company
Qualifications:
- Bachelor's degree in Computer Science or related field
- 6+ years of system building experience
- 5+ years of programming experience using JVM based languages
- A passion for DevOps and an appreciation for continuous integration/deployment
- A passion for QA and an understanding that testing is not someone else’s responsibility
- Experience automating infrastructure and build processes
- Outstanding programming and problem solving skills
- Strong passion for technology and building great systems
- Excellent communication skills and ability to work using Agile methodologies
- Ability to work quickly and collaboratively in a fast-paced, entrepreneurial environment
- Experience with service-oriented (SOA) and event-driven (EDA) architectures
- Experience using big data solutions in an AWS environment
- Experience with noSQL data stores: Cassandra, HDFS and/or Elasticsearch
- Experience with javascript or associated frameworks
Preferred skills:
We value these qualities, but they’re not required for this role:
- Masters or Ph.D. in related field
- Experience as an open source contributor
- Solid understanding and/or experience with:
- Akka, stream processing technologies and concurrency frameworks
- Data modeling
- Chef, Puppet, Ansible, Salt or equivalent
- Docker, Mesos and Marathon
- Distributed messaging services, preferably Kafka
- Distributed data processors, preferably Spark
- Angular, React, Redux, Immutable.js, Rx.js, Node.js, vue + vuex or equivalent
- Reactive and/or Functional programming
- Thrift, Avro or protocol buffers