Although I am not a data scientist by any means, I was recently asked what knowledge of math someone would need to be able to efficiently get into the field.
Well, I researched a little and came up with the following course track, starting with the basics.
🧵👇
Calculus 1 will cover a lot of the basics, relevant especially to optimization problems which are quite common in data science.
The Dependency Inversion Principle is a part of SOLID, a mnemonic acronym which bundles a total of 5 design principles.
It is often associated with clean code.
But what exactly is it, is it important to you, should you even care?
🧵👇
1⃣ What does it state?
It states:
Modules that encapsulate high-level policy should not depend upon modules that implement details. Rather, both kinds of modules should depend upon abstractions.
This may sound a little complicated, but you can break it up, as follows:
1. High-level modules should not depend on low-level modules. Both should depend on abstractions (e.g., interfaces).
2. Abstractions should not depend on details. Details (concrete implementations) should depend on abstractions.
Clean code is important, clean code helps others understand your code, but clean code is also pretty subjective!
I want to give you my perspective on it, drawing from years of experience leading teams of developers as a tech lead and working in teams.
🧵
1️⃣ Clean code is important
Clean code helps people understand code.
The more your code is structured according to the opinion of the majority of developers, the more likely it is that other developers will understand your code!
A few principles of clean code are:
- Use meaningful and understandable identifiers
- Use functions and keep them as short as possible
- You don’t need comments most of the time when your code is human readable
- Don’t repeat yourself (DRY)
- Keep it Simple, Stupid! (KISS)
Improving developer experience is always a good investment.
It's even one of the investments with the highest return, in my opinion!
Some things that help to improve DX:
🧵👇
1) Providing All Relevant Information Up Front
Ensure that all information necessary is present in a README.md within the project's repository.
It should be sufficient enough to state what the project does, what problems it tries to solve, etc.
2) Making Sure Starting Out Is Easy
Does the project require some setup to be able to run/test/develop locally? -> Write an interactive script which sets everything up, maybe creating a config file / .env with meaningful defaults or settings from script input.