Rocana's infrastructure engineering team designs, builds, and tests distributed data collection, storage, and processing systems. The systems we build handle billions of events per day, and underpin some of the most demanding applications. Engineers who are interested in high throughput, concurrent, data management systems will feel at home thinking about data durability and consistency, serialization, storage formats, failure scenarios, reducing operational complexity, and building systems that function in practice as well as theory.
Some of the technology we use:
- Java, Go, C/C++
- Hadoop, Solr, Kafka, Impala, Hive, Spark
- AWS, Jenkins, Github, JIRA
All teams at Rocana care about developing customer empathy, people over technology, consensus over competition, team success over personal, allowing failure and supporting success, listening before talking, open decision making, and diversity and inclusiveness.
The initial thrust of this position is to ensure compatibility between Java APIs with different Distros. In addition, this infrastructure engineer will be contributing to our core product.
- Have experience managing different versions of the same API for various distributions of Hadoop
- Experience with class loaders, and building Java apps servers or building out the Spring framework is highly desirable.
- Understand hardware and OS fundamentals. You know what cache lines and context switches are. You can describe how IO works in Linux, and what syscalls like madvise() do.
- Can describe the Java memory model, synchronization and concurrency primitives, and GC behavior under normal and pathological conditions. Oh, and you can write code too.
- Have a working knowledge of the internals of databases, file-systems, messaging systems, and other data infrastructure.
- Have a working knowledge of common data management, data warehousing, ETL, and stream processing theory.
- Have a working knowledge of network protocols and standards.
- Can easily put your ideas in writing.
- Aren’t afraid to learn/switch programming languages based on the task.
- Aren’t afraid to say, “I don’t know, but let’s find out!”
- Seek feedback from everyone, especially those with whom you disagree.
- Seek to understand prior to debate, and know when to stop debating.
- Don’t always have to be right.
- Are a smart person who’s passionate about helping others.
- Take pride in your teams' accomplishments.
- Are willing to take risks and overcome failures.
- Are a distributed company, and as such require self-driven, high output people.
- Care about creating a company, culture, and product we all love.
- Focus on how to help customers be successful, and on what we achieve as a team.
- Know that if you are happy and engaged, you’ll be/do your best.
- Want to help you achieve your ambitions, so we can achieve ours.
- Want you to develop skills and grow professionally, but we do not tolerate politics.
- Use titles to reflect responsibility, not status.
- Distribute authority and decisions as much as possible.