ThoughtWorks is a global software consultancy with an aim to create a positive impact on the world through technology. Our community of technologists thinks disruptively to deliver pragmatic solutions for our clients' most complex challenges. We are curious minds who come together as collaborative and inclusive teams to push boundaries, free to be ourselves and make our mark in tech.
Our developers have been contributing code to major organisations and open source projects for over 25 years. They’ve also been writing books, speaking at conferences and helping push software development forward, changing companies and even industries along the way.
About Team E4R
In recent years, ThoughtWorks has launched an initiative ‘Engineering for Research’ (E4R) to help advance scientific discoveries across disciplines from astronomy & astrophysics, microbiology & physiology, and epidemiology. A lot of research in these scientific disciplines is now data-driven, where extreme-scale data volumes are collected from big science apparatus such as Large Hadron Collider at present, and Thirty Metre Telescope and Square Kilometre Array Radio Telescope in the future. Scientists need to mine this data for patterns and anomalies using cutting-edge techniques. E4R is involved in developing these techniques, sometimes even ground-up by applying core computer science methods. One of these methods is Data-intensive Computing where a large volume of data is analyzed using algorithms with lower and higher arithmetic intensities. The team collaborates with the scientists for developing solutions to such problems, and later for publishing scholarly papers to present the results with the science and technology communities via prestigious conferences and journals.
In the field of data intensive computing, we are helping clients solve computational problems at petabyte scale or greater. Data intensive computing involves taking the compute to where the data resides unlike traditional methods which take the data to the compute. We are creating unique solutions in the data-intensive computing space.
About Role and Responsibilities
You will spend time on the following:
- Interacting with scientists for understanding their specific computational problems, and together defining problem statements
- Exploring avenues for potential solutions via survey of scholarly publications and technology reports
- Designing solutions for solving data intensive computing problems. This involves understanding system bottlenecks and working on computer science fundamentals that help create computer systems that are designed for the job.
- You will study the latest advances in computer technology in the field of software engineering patterns, data structures & algorithms, storage, especially computational complexity analysis
- You will work with our collaborators to implement and execute projects that involve data and task parallel computing and distributed computing
- You will write code for automating complex problems, run benchmark tests, troubleshoot common issues storage, algorithms , databases and software.
- You will contribute to scholarly papers for publishing to prestigious conferences and journals.
Here is what we are looking for as skills:
- Minimum qualifications
- Bachelor’s degree with total 2 years of experience
- Strong computer science fundamentals such as data-structures and algorithms (especially computational complexity analysis), data and task parallel computing, distributed computing, operating systems, computer architecture and organization
- Strong in problem solving and creative thinking
- Strong in software engineering such as patterns and development practices
- Strong in programming fundamentals with proficiency in at least one of following languages: C++/Rust/Java/GoLang
- Preferred qualifications (In addition to the minimum qualification)
- Master’s degree with total 4 years of experience
- Experience in scientific computing
- Scholarly publications in prestigious conferences and/or journals
- One or more of following
- Large-scale distributed computing
- Actor-based computing model
- GPGPU programming
- Large-scale data analysisDevelopment and optimization of numerical algorithms
- Large-scale simulation modeling
- Good knowledge of discrete mathematics, especially graph theory