Live data from Hacker News

We don't need data scientists, we need data engineers

mihaileric.com

211–220 of 367 posts

Re: We don't need data scientists, we need data engineers

#211

Earlier quoted context omitted.

Back in the day (3 years ago and earlier) at every company I was at we used the term 'productionization' to describe someone making a model aka a proof of concept, and then someone else, a machine learning engineer or some kind of engineer rewriting it to work on a server. This process is horrible, and not just because it doubles the work, but because it introduces bugs. When the version up in the cloud does not work…

How do you maintain notebooks in production? You use papermill? What about versioning?

Most libraries load entire notebooks from top to bottom when executing, and I believe papermill does too. (Please correct me if I'm wrong, as I've not used papermill.)

This is great for making a dashboard, a report, or some other kind of analytics, but when it comes to a service the customer uses, you typically never want to load the whole notebook. This is where the industry standard way of loading the whole notebook tends to fall on its face.

What we do is the cells that will end up in prod are written as functions inside of the notebook. This helps reduce globals when writing the notebook, so it is good form when prototyping, but also it allows just those functions to be called from the notebook, instead of running the entire notebook.

You will probably want to write your own library to do this, but in the mean time there is one that works for this purpose https://github.com/grst/nbimporter (Ironically the author doesn't recognize this use case.)

Using nbimporter you can import a notebook without loading it. You can then call functions within that notebook and only those functions get loaded and called.

In my notebooks I have a process function which is like main(), but for for feature engineering. On the prod side the process function is called from the notebook. Process calls all of the necessary cells/functions for me in the correct order. This way the py wrapper only has to call one function, then the ML predict function gets called, so it's pretty small on the .py wrapper side. There are tests written on the .py side, IO functions and what not too.

Data engineers love their classes, so it's easy to write a class that calls the notebook, and best of all calling a single function this way does not load globals, so the data engineers are happy. It's a nice library, because otherwisw you'd have to write your own (which you may end up wanting to do).

This way if the model doesn't work as intended in production it's my fault. We log everything, so I can run the instance prod caught on my local machine, figure out what is going on, update the model, and then it can be deployed instantly.

Version numbers on the engineering side I can't comment on as they have their own method, but on my end the second the model writes to a database then I strongly push for having a version number column or a version number metadata table in the database, so it's easy for me to access for future analysis.

Re: We don't need data scientists, we need data engineers

#212

Earlier quoted context omitted.

Here's the tricky thing: I love your post; I agree with your post; but it takes a 90 degree turn at the end: "My number one advice to entry level data scientists is to not be this guy. " Everything most people are saying here indicates it's GREAT to be that guy. You're paid, you're respected, you get the fun parts, you love your job and it's pretty safe. It just happens to suck for everybody else including team and b…

It sucks being that guy because everyone else ends up hating you. Depending on the work environment it's not a stretch to see software engineers complaining to management, sometimes going as far to create rumors to get the jr data scientist fired. So, no the grass is not greener. It's best to not be that person. This is why I go out of my way to prevent that scenario when I lead a team.

Not really.

You just get seen as the product owner/project manager.

Re: We don't need data scientists, we need data engineers

#213

My experience is in quant hedge funds, where sometimes you get some guys who develop the strategy and some guys who put it into production. Yes, I do admit there can be some specialization in terms of time spent on science vs engineering. But you really need people who understand both. Particularly if you have a strategist who thinks his job is just to dream up profitable models, he ends up carving that role out in a…

This problem only grows as the company scales and the science and engineering pieces are formally split along some role guideline.

Inevitably if you treat a job role as a support role, you'll attract weaker individuals into that role then you would get if it wasn't considered a support role. The problem with Science oriented teams is that all roles other than the science role morph into science support roles over time. The same pattern used to occur with Engineers and QA, or Engineers and ops.

Re: We don't need data scientists, we need data engineers

#214
post #186

Earlier quoted context omitted.

This was addressed in the previous comment >On the quant side, *unlike on the data science side*, Vision scientist is on the data science side. You're not dealing with monetary values where floating point error compounds on itself to the point your models become garbage. Quant work is it's own unique field with its own unique prerequisites.

Nothing precludes you from doing integer arithmetic in a dynamic language. I’m not a quant and this isn’t my area of expertise, but, for example, I’m pretty sure various differential equation solving methods depend on variables taking on continuous values, so floating point basically must be used. Understanding the impact of that is definitely very important. Analogously, I frequently run into numerical precision iss…

>Nothing precludes you from doing integer arithmetic in a dynamic language.

You would be surprised. The second you use pandas with a custom data type (let alone any other library you'd want to use) it can randomly auto convert it to a float. Furthermore identifying when it randomly converts the type on you is a pain.

>so floating point basically must be used.

Quants tend to use fixed precision types. It is like a float in every way, except base 10 instead of base 2 so there is no floating point error.

Re: We don't need data scientists, we need data engineers

#215

Earlier quoted context omitted.

If they're using a dynamically typed language to do monetary calculations, it's not going to be ideal. Researchers do not need to have deep programming experience, but they have to be comfortable enough to use an environment that can lend itself itself to the problem at hand. On the quant side, unlike on the data science side, the barrier of entry on the programming side is a bit higher. To solve this problem many fi…

> If they're using a dynamically typed language to do monetary calculations, it's not going to be ideal. I think this is an inaccurate take. No one in finance is doing accounting or model estimation using Python's floats; they are using numpy's float32 (or float64) type instead. I think a more accurate version of what you're saying is that static type checking is useful when modeling complicated contracts; this might…

Or, they're using ints instead, at least for market data.

Re: We don't need data scientists, we need data engineers

#216

Earlier quoted context omitted.

easy to ignore hate when youre pulling a 300k bonus at comp season and can jet to st. barts to go deep sea fishing and drink claws.

Data scientists do not pull that kind of bonus. Today many of them get paid less than the data engineers do.

news to me, and welcome news to hear at that since I'm more in the data plumbing and packaging business, not algo publications.

my personal data points are from folks on buyside. trading margins have been downward trending for years

Re: We don't need data scientists, we need data engineers

#217

Earlier quoted context omitted.

This is a systemic problem. We ask non software engineers to write code, and then we expect them to apply a level of robustness and long term planning that even we have difficulty achieving. Not because we're being picky, but because we know the failure modes that are likely, and we know that people convince themselves that they aren't. We've been through this with installer writers, database admins, test automation,…

It's a two way street. SWE need to learn some data practices and data folks need to learn some SWE practices.

Oh absolutely. We'll build completely the wrong thing, but build it well (which just makes it all the harder to throw it away).

Re: We don't need data scientists, we need data engineers

#218
post #196

Earlier quoted context omitted.

> If they're using a dynamically typed language to do monetary calculations, it's not going to be ideal. I think this is an inaccurate take. No one in finance is doing accounting or model estimation using Python's floats; they are using numpy's float32 (or float64) type instead. I think a more accurate version of what you're saying is that static type checking is useful when modeling complicated contracts; this might…

> No one in finance is doing accounting or model estimation using Python's floats We are. When your input data only has five significant figures, and probably less than that of real information, numerical accuracy is the least of your worries.

[deleted]

Re: We don't need data scientists, we need data engineers

#219

Earlier quoted context omitted.

> If they're using a dynamically typed language to do monetary calculations, it's not going to be ideal. I think this is an inaccurate take. No one in finance is doing accounting or model estimation using Python's floats; they are using numpy's float32 (or float64) type instead. I think a more accurate version of what you're saying is that static type checking is useful when modeling complicated contracts; this might…

Or, they're using ints instead, at least for market data.

Fixed precision types technically. Internally they are an int under the hood, so yah basically that.

Re: We don't need data scientists, we need data engineers

#220

Earlier quoted context omitted.

It doesn't matter, as long as you don't make the person with the PhD in biostatistics spend their time writing ETL pipelines, which is a wildly inefficient use of a very expensive resource.

Do people with PhDs in biostatistics earn significantly more than programmers? I honestly know nothing about the market for biostatisticians, but my impression was that advanced degrees in the natural sciences don't really pay that well compared to software engineers, especially given that they're much more educated.

If they work e.g. in a hedge fund / trading firm, then - yea. And you see lots of PhDs from unrelated fields working as quants there.
Post reply on HN