3 ms·
Knowing How to put a database together of requires you to understand algorithms though. joins /indexes /sharding etc require knowledge of cs theory. Knowing the
by wittycardio 5y ago
Knowing How to put a database together of requires you to understand algorithms though. joins /indexes /sharding etc require knowledge of cs theory. Knowing the details is very valuable.
- deleted 5y ago[deleted]
- YEwSdObPQT 5y agoYou edited this after I replied. > joins /indexes /sharding etc require knowledge of cs theory. Knowing the details is very valuable. For the vast majority of scenarios you are going to run into no not really. You normally just need to read the documentation and know how it should behave and think a little bit about how the database is likely to be used. You really don't need any CS theory to be able to do that. In any event it isn't what a leetcode / hacker rank style questions are testing for. I don't want to be rude but I swear a lot of people on this site live in a bubble and don't really understand what happens outside of it.
- wittycardio 5y agoI mean what is an index ? Merge join vs hash join ? These are basic algorithmic ideas that you should know if you're doing any sort of optimization on a database at all. I don't mean to be rude but I hate working with people who have no interest in their craft. They tend to make work harder for everybody else. I'd rather hire people who are actually interested in learning.
- YEwSdObPQT 5y ago> I mean what is an index ? Merge join vs hash join ? These are basic algorithmic ideas that you should know if you're doing any sort of optimization on a database at all. I have faith that I can read documentation, relevant theory and implement a suitable solution. Whether I score highly on a hackerrank/ leetcode test won't enlighten either of us if I am capable of implementing a suitable solution. What I certainly don't need to do is prove that I can memorise and implement the some algorithm in some arbitrary timed test that isn't relevant 99% of the time for the tasks that I will be performing day to day while creating software. It isn't a test of whether I can perform the job or not. It is a waste of my time. I don't really understand how you cannot fathom the difference. > I don't mean to be rude but I hate working with people who have no interest in their craft. They tend to make work harder for everybody else. I'd rather hire people who are actually interested in learning. I (and many others) have plenty of interest in my craft and work to improve myself all the time. Just because you cannot comprehend that people can get stuff done without knowledge that you happen to think is important and doesn't mean they are lazy or uninterested. Scott Hanselman had this analogy of a tap and a sink. Many people's mental models of it is that you open the tap water comes out and water goes into the sink and out the plug hole. They do not know (and most of the time do not need to know) anymore about how the water arrives or leaves. However knowing a little about what happens before and afterwards might be useful if you need to fix a clog. That doesn't mean I need to be a plumber, nor do I need to know how how the sewage system works. I can fix the clog and get on with my life. That is how most people manage and results are normally sufficient.
- Handytinge 5y agoThese are valuable, you're right. But they're not _necessary_, which is the point here. I've been working on databases before and come across slow queries and read up on both the general theory and the DB specific practice for improvement. After that I've filed away in my brain "this DB needs this sort of optimisation", then ejected the rest. If I need it again in 5 years, I'll look it up and recap.