News for hackers. Stuff that matters.
Re:We don't need data scientists, we need data engineers by noodlenotes on Thursday January 14, 2021 @01:17PM (#25779931)
Also, a lot of data scientists find the science fun and the engineering boring. But they have overlapping skill sets - if you aren't good at one, you're probably not good at the other either. Somebody who shows up to a team with the goal of only modeling and pushing all the dirty engineering work to their teammates is basically a worst case scenario because

1) They probably aren't going to produce good models since they're not sensitive to data nuances, but now they've taken over ALL the modeling work.

2) They bring down the job satisfaction of everyone else on the team who would like to be doing at least some modeling.

3) They're sucking up the prestige that should be distributed over the entire team and management thinks they should be paid more for work that it turns out everybody thinks is more fun anyway.

My number one advice to entry level data scientists is to not be this guy. Don't give your interviewers the impression that you won't do your own engineering work because they won't want someone who brings negative value to the team.

Re:We don't need data scientists, we need data engineers by NikolaNovak on Thursday January 14, 2021 @01:41PM (#25780311)
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 business... but it feels that in a practical sense, gist of everybody's actual unwitting message is "BE that guy, if you can" :-<<<

Re:We don't need data scientists, we need data engineers by ramraj07 on Thursday January 14, 2021 @04:29PM (#25782866)
If you're that guy and you have a secure job it means you write models no one ever sees in a company which doesn't know or respect data, or you work in some data science factory as a small cog of a fairly well oiled team. The latter does happen from time to time, but it's often the former.

In every other place, your job is on the line to be erased because people will soon realize no one wants a wise-ass who doesn't actually contribute much to the bottom-line in the end.

Re:We don't need data scientists, we need data engineers by proverbialbunny on Thursday January 14, 2021 @01:52PM (#25780492)
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.

Re:We don't need data scientists, we need data engineers by urthor on Thursday January 14, 2021 @03:16PM (#25781882)
Not really.

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

Re:We don't need data scientists, we need data engineers by proverbialbunny on Thursday January 14, 2021 @03:51PM (#25782299)
That's a really good point.

I tend to be seen as a product lead / owner / stakeholder, so I feel like I'm being called out. lol

I think one difference is the software engineers see me as someone who is helping them by making their life easier. I'm not just throwing work at them blindly. I'm working with them. Also, they like it when I include them in the data science brainstorming sessions to solve difficult problems. I guess it's seen as exotic or something, but whatever the reason, they really love to be apart of it.

Re:We don't need data scientists, we need data engineers by rhizome on Thursday January 14, 2021 @04:06PM (#25782531)
I think it's probably seen more as just being a decent boss.
Re:We don't need data scientists, we need data engineers by RobRivera on Thursday January 14, 2021 @02:30PM (#25781129)
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.
Re:We don't need data scientists, we need data engineers by proverbialbunny on Thursday January 14, 2021 @02:52PM (#25781519)
Data scientists do not pull that kind of bonus. Today many of them get paid less than the data engineers do.
Re:We don't need data scientists, we need data engineers by RobRivera on Thursday January 14, 2021 @03:27PM (#25782015)
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 by proverbialbunny on Thursday January 14, 2021 @03:30PM (#25782053)
Quant research work isn't data science work which is probably where the mix up is.

On the quant side bonuses are distributed to the team.

Re:We don't need data scientists, we need data engineers by noodlenotes on Thursday January 14, 2021 @02:00PM (#25780613)
Specifically, this is my advice to ENTRY level data scientists who are trying to find a job and compete against a flood of candidates hot off the bootcamps. I guess once you get your foot in the door, you can be that guy if you want. It seems to be a successful strategy at companies without technical leadership.
Re:We don't need data scientists, we need data engineers by urthor on Thursday January 14, 2021 @03:14PM (#25781847)
The flipside is that there are 4x the job posts for data engineering as there are for "that guy".

Companies understand that you can't hire five of that guy and get things done. If you have 5-8 years of experience as a technical product manager/data science combo then you are very happy as the magician. But very few magicians are being hired out of college, and a lot of "software engineers in data"

Re:We don't need data scientists, we need data engineers by mywittyname on Thursday January 14, 2021 @04:32PM (#25782910)
Pretty soon companies are going to start realizing that the 4x DEs can largely replace that 1 DS, and they will be more than happy to do so.

I went into DE because I was kind of forced into the space, but I'd strongly prefer doing full-stack DE. Anymore, I still have the opportunity to build models, they just aren't client-facing stuff, but instead are kind of Data Plumber Bots that help me do my job better so I can waste more time building other fun bots that I can't otherwise be paid for.

Seems like a waste of resources, but my manager could have another DS tomorrow, but my role would take months to fill.

Re:We don't need data scientists, we need data engineers by proverbialbunny on Thursday January 14, 2021 @01:44PM (#25780373)
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 as intended, is it a bug in productionizing or is it in the original model? Fixing bugs in this space can take longer than the initial model development and the initial productionization. Many companies have failed over this.

So what's the solution? In recent years the industry has turned to deployment over productionization. The idea is you deploy the model to the cloud directly. Both engineers and scientists work together on the process. The scientist defines what cells in the notebook get called for the final algorithm (as there are EDA / plotting cells and documentation cells too). The engineer sets up the amazon IO stuff, database login stuff, and monitoring services. The scientist works with them to create tests and what to monitor so they get notified if there is a problem with the service.

No more mystery bugs. The model gets directly deployed, the work load is minimal, and it brings people together. The downside is often the engineers and scientists are on different teams, and sometimes companies will not let them merge for a while, so it becomes a telephone game instead of everyone feeling like they're on the same team working together. imo moving the scientist to the engineering team during this time can be helpful, or moving the engineer to the data team.

Some companies have services where entire notebooks get put up into the cloud and all of it gets called, so the scientist has to write the notebook in a way that works for the cloud. It's rarer, but how I prefer it is a wrapper py file is created that calls just the relevant parts of the notebook, kind of like a header file. This process works well for me, but it as far as I know it is not standardized in the industry yet.

In short, if you end up in this situation, there is a better way. Import the notebook into a .py file or into the cloud, don't rewrite it. This (hopefully) will remove this scenario you're describing (comment this is replying to) so those issues will become a historical footnote.

Re:We don't need data scientists, we need data engineers by Jugurtha on Friday January 15, 2021 @07:07AM (#25789929)
Oh my! We were exactly like this many, many years ago. See reply to this thread[0].

The way I view it is frictions and impedance mismatch. People lived in several universes and there were many "taps on shoulders". Data scientist tries to work on a project but the system upgrade messed up their compute environment and their GPU isn't working anymore. Data scientsits ssh'ing into a "powerful workstation" to have their notebooks run on more RAM or more powerful GPUs, having a certain convention to start their notebook servers with specific ports.

Building models and then wanting to show results to the client and asking a colleague. Set up a VM on GCP, write a small application, scp the model to the machine, create an environment with the same dependencies to load the model, set up authentication on the machine. Email the client. Client doesn't reply in time. You have a bunch of VMs.

Meanwhile the data scientist has produced another model with a notebook and they want the engineer to deploy it. Others want to reproduce it but have the same trouble with running the notebook (libraries, etc.).

A complete mess. We ended up building our platform[0]. We wanted our PhDs to do what they were good at, and we wanted to handle a lot for them. In the same time, we wanted our more engineering inclined colleagues not to do that work themselves, and we let the platform do many of these things (building images, deploying, scheduling notebooks, etc).

- [0]: https://iko.ai

Re:We don't need data scientists, we need data engineers by carabiner on Thursday January 14, 2021 @02:01PM (#25780621)
How do you maintain notebooks in production? You use papermill? What about versioning?
Re:We don't need data scientists, we need data engineers by proverbialbunny on Thursday January 14, 2021 @03:14PM (#25781855)
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 by zwaps on Friday January 15, 2021 @06:09AM (#25789468)
Is rewriting your functions from notebook to a py file really something a research scientist can not do?

Or is it infeasible for some other reason?

I'd imagine many data scientists want to publish their work as python packages or libraries during their PhD, so they should be familiar with writing classes or functions that work at a bare minimum.

Re:We don't need data scientists, we need data engineers by proverbialbunny on Friday January 15, 2021 @02:33PM (#25795216)
>Or is it infeasible for some other reason?

I've had projects where the model doesn't perform as intended. Because one person was making the model and another productionizing it, it was hard to identify where the performance difference was coming from. Was the bug in the model itself or in the productionization process itself? It took longer to figure it out than writing the model or productionizing it the first time.

It takes so long to deal with these bugs because the model gets changed, so then prod gets changed to match it. Changing prod (rewriting functions) has the potential to create a new bug, so you solved one but added another, and still can't identify if it is in the initial model or from prod. This continues over and over again, problem after problem.

It's noteworthy to mention if one person is doing both the model building and converting to production this problem is significantly reduced, but is still a problem. The problem is exasperated from the lack of domain knowledge, being that both people are in the dark from the other person's process.

Furthermore, what if you need to update the model? Do you rewrite prod doubling or tripling your work? Do you take that risk to introduce another potential hard to diagnose bug, even if you're the one doing both roles?

Or do you automate the process, so the same code being developed on is the same code running on the server at the end of the day? No more bugs, half to 1/3rd the amount of the work. Why not do it this way? It's soo much easier to debug a problem in prod this way. You can take the log data and spit it into the local machine and know what you're seeing is what the user saw. No more guessing where the problem is.

One way to think of it is software engineers would think it is absurd to write their code, then hand it off to someone who doesn't completely understand it, to rewrite it in another language and put it up on a server. "Why would you ever want to do that?" they would think, and I agree with this sentiment. It is absurd to have someone (even you) rewrite your work unless you have no other option, and you do have other options. Transpilers are a thing if prod needs to be in another language. I've written models that have to go onto embedded environments. I know these challenges all too well.

>I'd imagine many data scientists want to publish their work as python packages or libraries during their PhD, so they should be familiar with writing classes or functions that work at a bare minimum.

It depends if you're writing a library, like doing ML / machine learning engineer type work, or you're solving a domain challenge and writing an end to end solution for that problem, and are using standard cookie cutter ML for your phd, aka data science type work.

One leads to an engineering role, and not surprisingly writing a library for it is ideal, so other people can use it. Another leads to a data science type role and not surprisingly showing code snippets in your paper with plots / EDA and all, the same way you'd write a notebook at work, is ideal.

I'm a data scientist, not an ML specialist (though I have invented a new form of ML for work once, but that was just once and not my primary thing). I specialize in end-to-end domain problems I'm solving. I'll write a notebook to solve it, not that I have to. I've been in the industry longer than notebooks were a thing, so I'm fine doing it the old fashioned way. What I am not is an MLE. I don't need to write libraries for other users to use. I don't need to write custom ML. I don't need to do that engineering bit. To be fair, I have, and I know when it's the right tool for the job. On stackoverflow all of my points come from helping people with the glue parts between C++ and R, so they too can write libraries for R. I'm proficient in modern C++ too. I can do the library ML type work, and I have enjoyed it, but I really do enjoy solving domain problems more, so it's what I'm doing, and it's what the previous comments in this chain you're responding to are all about.

Re:We don't need data scientists, we need data engineers by test-account on Thursday January 14, 2021 @09:39PM (#25786298)
Exactely why I left Dolby. Didn't want to be a part of that process.
Re:We don't need data scientists, we need data engineers by ramraj07 on Thursday January 14, 2021 @04:31PM (#25782898)
It's hard for most people entering this field because the incentives are perverted - there's this perception that DS is sexy and you actually don't need to know coding that much (just enough to scikit learn). Thus people with pipe dreams of tweaking model hyperparameters to spin gold come in and get a rude awakening. Not a lot unlike people flocking to become actors to LA.