Software Developer (Carbon Team, APAC/Remote)
Description
IMPORTANT: This job is on the same team as the Quantitative Support Practitioner (Carbon Team). It is important to review both JDs as successful candidates will likely be doing a blend of both (albeit tilted towards one or another as the business needs.)
Differences:
- This JD is lower priority for the client and will be hired second.
- This JD is more focused on development.
Carbon is largely speaking a repository for data. It contains historical market data (prices and stuff). In that sense, it's quite close to an ETL machine or a big data warehouse. We transform it and make it available to you via a bunch of clients.
Lots of pipelines, and data sources. It's a bit of a legacy system. It's not built using open-source ETL or modern open-source big data tools. It's in C#. It's a bit of a monolithic server architecture. More batch than server. Some other python scripts are littered around. Mumbo jumbo of things that just happens to work. ETLs into a database, and serve that database to the users.
Repository of historic data and services to access real-time data. Both raw and calculated data.
Clients:
- Excel (important)
- SIL (Symmetry Integrated Language) using D Lang (important)
- Python
- Java
- Long run, we don't want to maintain all these different code bases.
Responsibilities
What work will the successful candidate do in the first 3-6 months
At any point in time, there are multiple fires burning. Solve and debug problems. Lots of undocumented systems and processes that no one is familiar with.
- (Firefighting) problems can be divided into:
- We license data from data providers. On a certain day, the data that comes back is not the latest price. So we need to ask the data provider why. (Usually the user will report a bug that the price is wrong or data is missing; we need to figure out is it our problem or a vendor's.)
- Carbon quite big. Lots of processes. If something breaks, we need to embark on a detective hunt. Figure out which ETL is it. Is it lying in some repository that is abandoned somewhere?
Long-term Goal
Make an incremental improvement to the system. Examples:
- Strategic improvements to the architecture. Can we rewrite all these python scripts into SIL?
- Instead of using this in-house built job scheduler, can we move to an open-source one?
Hard Requirements
Strong low-level debugging skills as well as application-level (web, mobile app) development skills.
Soft Requirements
Key characteristics CDD should have:
- Self-initiative. Reverse engineering.
- Figure out a system without formal documentation
- Tinker with the input, observe the output and come up with a hypothesis on how the black box works. (Detective work.)