So I drank the industry koolaid about machine learning, deep learning, blockchain lmao and transitioned into a data scientist (a.k.a sql monkey) role right after a PhD in a non-CS major. Now I am surrounded by seasoned software engineers and I clearly feel that I am lacking in SWE and by how much they know that I don’t. My question is what courses should I take to develop a good foundation in SWE. I am not looking to develop a theoretical understanding of CS, rather I am looking to develop a core set of skills in SWE that is required to remain competent in this rapidly changing industry. Inb4 leetcode: I know leeting is important, please suggest additional skills. TC: 200k
Depends heavily on the stack you are using. Taking a dataset on Kaggle and you already use the machine learning knowledge that you have. You can use pandas as they are an excellent way to have your data structured.
I am more interested in the software engineering side.
PMed you
Why not share it?
Nothing to share. I just asked OP if he wants to study together since I have a similar background and goals. But s/he didn't reply 😂
My practical advice would be to 1) really learn a language. You probably use python, dive into an open source repo to learn how a python package is structured and best practices. Read a python book cover to cover to know exactly what features the language offers. 2) learn the (cloud) infrastructure. Does your team use AWS or GCP? Try setting up your own resources and run some code in the cloud. Don’t worry too much about scalability yet, focus on the basics.
Thanks, any recommendations for python book and open source repo based on your experience?
I used learning python by lutz. Thick book. In terms of repos, maybe django? Usually any repo with decent amount of stars are good. Learn stuff like what is pytest, how does the code get setup and run, what are the APIs of the package. Good luck!
Take a computer architecture course
How will that help with SWE? Curious
It won't
You are getting lots of random advice. First thing you need to clarify what’s your eventual goal? Do you want to become a SWE in 1-3 years? Or just want the basic proficiency for interacting with the SWEs as a competent Data/Research Scientist.
Good question, What would i need in each case? I guess my immediate goal is to gain the basic proficiency to interact with SWEs but in the longer term I wouldn’t mind transitioning to SWE.
Read these for transitioning: 1. OS 2. Database 3. Computer Networks 4. Object Oriented Programming 5. Effective Java (or any comparable thing for your language like Effective Modern C++) 6. Clean code 7. Design Patterns (object oriented) 8. Designing Data Intensive Apps 9. Code Complete book 10. Some Software Engineering text book covering SDLC, Modeling, UML, Patterns, Testing, Estimation, Processes, and so on. 11. Computer Architecture 12. Algorithms 13. Data Structures Do: a. Code reviews of the devs (ask questions for learning)... or just read the code and comments by other experienced engineers who signs off the code reviews b. Read design docs c. Be in design review meetings d. Read the codebase for your team and sister teams e. Check out the tickets (operational issues) f. Understand all the graphs and metrics in dashboards g. Join/watch company tech talks
I recommend reading textbooks. It’s my favorite way to learn a topic. You can sometimes find used textbooks for cheap on Amazon
Any you would personally recommend?
Read SIPC.
What is SIPC? Tried searching but couldn't find.
Data structure algorithm, systems programming, discrete logic, computer architecture, networks, database, operating system, object oriented design/analysis, etc... that pretty much sums up the CS degree.
Make/modify/get 100s to work together: Skyrim/game mods create/add features/administer: Minecraft/game server, website Install/learn your way around: Linux, hacked consoles
leetcode
Really bro? I said inb4 leetcode.
1. Not wanting to develop a theoretical understanding of CS 2. Develop a solid foundation and a core set of skills in SWE Choose one buddy.