Senior Software Engineer (Big Data)

  • Full-time

Company Description

The Client provides expert advisory and implementation services for open source big data solutions. As the first and only pure-play big data services firm, their Data Scientists and Engineers are trusted advisors to the world's most innovative companies. Their experienced teams combine a distinctive methodology and a proven framework that includes tested design patterns and pre-built components, to help clients build applications faster. The Client helps Customers leverage Big Data analytics by integrating open source platforms, such as Hadoop, NoSQL and Streaming Engines, with best-of-breed data warehousing environments. Service offers include: a Big Data roadmap, Data Engineering, Data Lake and Analytic Operations, Training and ongoing Big Data Solution Support.

Job Description

The successful candidate will have technical expertise, the desire to deliver work of the highest quality consistently, and a pragmatic approach to complex problems. Ideally, the candidate will be customer facing, agile, have experience in requirements gathering and technical story writing and some experience as a tech or team lead. You will have the skills required to make technical decisions which positively impact the whole team's velocity and the quality of the final product. Senior Software Engineers are proactive problem solvers, able to make informed decisions under pressure and revel in working at the cutting edge of software implementation.

Qualifications

The following are a list of relevant skills expected from a successful candidate. Other relevant skills are considered:

Must

  • Have at least 5 years of demonstrable experience writing Java and/or Scala in a professional environment
  • Have demonstrable experience of contributing to the release life cycle of production ready solutions
  • Write software using TDD and BDD test approach
  • Be passionate about good engineering principles and write good, clean code
  • Have demonstrable experience with core principles such as dependency management, design patterns, sorting algorithms, complexity estimation & persistence layers
  • Have demonstrable experience with simple design patterns and OOP
  • Have demonstrable experience with Concurrency and Parallelism
  • Have demonstrable experience with Asynchronous and Synchronous design implementations
  • Clear understanding of multithreaded design patterns
  • Demonstrate understanding of implications of JVM garbage collector algorithms
  • Have experience writing user stories & acceptance criteria
  • Demonstrable experience with build automation and relevant tools like maven

Should

  • Have worked with at least one distributed system
  • Have experience working with business stakeholders
  • Have experience with one or more scripting language like Python

Desirable

  • Demonstrable experience with one or more Big Data technologies, e.g. Spark, Hive, Pig, Storm, HDFS, Map Reduce, Zookeeper, Kafka
  • Demonstrable experience with one or more NoSQL technologies, e.g. Cassandra, HBase
  • Demonstrable experience with one or more Search technologies, e.g. Elasticsearch, Lucene, Solr
  • Demonstrable experience with one or more Hadoop distributions, e.g. Hortonworks, MapR, Cloudera

Additional Information

As a Senior Consultant and Senior Software Engineer in Big Data, candidates will be expected to contribute and/or facilitate the following within an agile team:

  • With the stakeholders:

                        Translate functional requirements into code

                        Highlight risks and assumptions

                        Communicate in a clear, polite and concise fashion

  • Size and estimate workloads in an informed and reliable fashion
  • Anticipate problems and devise suitable solutions
  • Ensure your code is:

                       Tested thoroughly as a driver of implementation

                       Robust and able to handle an exception

                       Efficient; covering common patterns and data structures

                       Readable and coherent

  • Attend training, e.g. to learn about the latest technology
  • Share knowledge, e.g. to give internal talks or write blog posts
  • Contribute strategically, e.g. to build internal tools
  • Attend customer side engagements
  • Travel when necessary