<story><title>They don&apos;t even know the fundamentals</title><url>https://blog.royalsloth.eu/posts/they-dont-even-know-the-fundamentals/</url></story><parent_chain><item><author>ZephyrBlu</author><text>The author says, &lt;i&gt;&amp;quot;I wouldn’t be able to explain from the top of my head what the ACID term means&amp;quot;&lt;/i&gt;.&lt;p&gt;I think there is a big difference between not knowing something off the top of your head and being completely unaware of it.&lt;p&gt;If you have awareness of something, you can make decisions based on that awareness without necessarily having a deep understanding. When you have no awareness is when the big issues arise.&lt;p&gt;For example, with your MongoDB fuckup if you had even a vague idea about the underlying behaviour you might have been able to consider the failure scenario ahead of time and prevent it from occurring. A deep understanding of how MongoDB works probably wasn&amp;#x27;t required to prevent this incident.&lt;p&gt;Same for indexes. If you&amp;#x27;re aware of them, you can trigger the thought process of &amp;quot;this query is pretty slow, maybe I should look into adding an index because I know that speeds things up&amp;quot;. You don&amp;#x27;t necessarily have to understand how a B-tree works for an index to be effective.</text></item><item><author>ivanhoe</author><text>&amp;gt; It turns out my day to day work doesn’t require deep knowledge about database internals and I can mostly treat them as a black box with an API 2.&lt;p&gt;Because of such attitude of the previous dev team my client ended up with DB integrity ruined. Previous guys somehow didn&amp;#x27;t know they should use transactions when updating&amp;#x2F;deleting stuff in the DB, because hey, it&amp;#x27;s just API you call, who cares of mambo-jumbo happening behind the curtains, right?&lt;p&gt;I myself had a similar fuckup with MongoDB a decade ago, because I used it &amp;quot;because it&amp;#x27;s fast&amp;quot;, but failed to read the small letters, and wasn&amp;#x27;t aware that it achieves that speed by buffering the data for async save, and so has no guarantees it will actually be saved at all. So I lost a lot of data when traffic suddenly jumped, and since those were affiliate clicks lots of people got very pissed about not getting paid, and it almost ruined both my client&amp;#x27;s business as well as my own, as it was our core client.&lt;p&gt;Lack of understanding of (or even caring to know about) DB internals is also why like 90% of projects I&amp;#x27;ve seen has wrong indices, or often no even a single index set at all. Because, hey, it&amp;#x27;s someone else&amp;#x27;s job to think about it, but in reality budgets are limited and team don&amp;#x27;t have a dedicated DBA or even a capable devops person to notice it, and it just ends up in the production like that.&lt;p&gt;So, in summary: no you don&amp;#x27;t need to know every in-and-out of every technology out there, no one can do that, but there&amp;#x27;s a valid requirement that one has to be familiar to those that they actually use - at least those that can seriously bite one&amp;#x27;s ass and cost a lot of money. And all DB related stuff is very much like that, that is probably the most critical part of the whole system, so no, it&amp;#x27;s definitely not a black box.</text></item></parent_chain><comment><author>neilalexander</author><text>&amp;gt; If you have awareness of something, you can make decisions based on that awareness without necessarily having a deep understanding. When you have no awareness is when the big issues arise.&lt;p&gt;I think in many cases, it&amp;#x27;s that even just having a vague awareness of something prompts you to double-check more often or to do something about it when you aren&amp;#x27;t really sure.&lt;p&gt;As an example, I find myself reading about the pros and cons of various PostgreSQL index types over and over again. It isn&amp;#x27;t really all that important for me to retain every detail about them for immediate recall but knowing that there&amp;#x27;s enough of a difference motivates me to read the documentation or run a quick web search before shooting myself in the foot.&lt;p&gt;I tend to think that testing people on this kind of deep knowledge isn&amp;#x27;t really helpful nor is it indicative of how developers really operate. What you need to test them on is what steps they would take when they aren&amp;#x27;t really sure and how they learn from it.</text></comment>
<story><title>They don&apos;t even know the fundamentals</title><url>https://blog.royalsloth.eu/posts/they-dont-even-know-the-fundamentals/</url></story><parent_chain><item><author>ZephyrBlu</author><text>The author says, &lt;i&gt;&amp;quot;I wouldn’t be able to explain from the top of my head what the ACID term means&amp;quot;&lt;/i&gt;.&lt;p&gt;I think there is a big difference between not knowing something off the top of your head and being completely unaware of it.&lt;p&gt;If you have awareness of something, you can make decisions based on that awareness without necessarily having a deep understanding. When you have no awareness is when the big issues arise.&lt;p&gt;For example, with your MongoDB fuckup if you had even a vague idea about the underlying behaviour you might have been able to consider the failure scenario ahead of time and prevent it from occurring. A deep understanding of how MongoDB works probably wasn&amp;#x27;t required to prevent this incident.&lt;p&gt;Same for indexes. If you&amp;#x27;re aware of them, you can trigger the thought process of &amp;quot;this query is pretty slow, maybe I should look into adding an index because I know that speeds things up&amp;quot;. You don&amp;#x27;t necessarily have to understand how a B-tree works for an index to be effective.</text></item><item><author>ivanhoe</author><text>&amp;gt; It turns out my day to day work doesn’t require deep knowledge about database internals and I can mostly treat them as a black box with an API 2.&lt;p&gt;Because of such attitude of the previous dev team my client ended up with DB integrity ruined. Previous guys somehow didn&amp;#x27;t know they should use transactions when updating&amp;#x2F;deleting stuff in the DB, because hey, it&amp;#x27;s just API you call, who cares of mambo-jumbo happening behind the curtains, right?&lt;p&gt;I myself had a similar fuckup with MongoDB a decade ago, because I used it &amp;quot;because it&amp;#x27;s fast&amp;quot;, but failed to read the small letters, and wasn&amp;#x27;t aware that it achieves that speed by buffering the data for async save, and so has no guarantees it will actually be saved at all. So I lost a lot of data when traffic suddenly jumped, and since those were affiliate clicks lots of people got very pissed about not getting paid, and it almost ruined both my client&amp;#x27;s business as well as my own, as it was our core client.&lt;p&gt;Lack of understanding of (or even caring to know about) DB internals is also why like 90% of projects I&amp;#x27;ve seen has wrong indices, or often no even a single index set at all. Because, hey, it&amp;#x27;s someone else&amp;#x27;s job to think about it, but in reality budgets are limited and team don&amp;#x27;t have a dedicated DBA or even a capable devops person to notice it, and it just ends up in the production like that.&lt;p&gt;So, in summary: no you don&amp;#x27;t need to know every in-and-out of every technology out there, no one can do that, but there&amp;#x27;s a valid requirement that one has to be familiar to those that they actually use - at least those that can seriously bite one&amp;#x27;s ass and cost a lot of money. And all DB related stuff is very much like that, that is probably the most critical part of the whole system, so no, it&amp;#x27;s definitely not a black box.</text></item></parent_chain><comment><author>baktubi</author><text>Yeah that’s the difference between a “blank stare” in the interview and a decent response. Anyone applying for a database position should know that relates to transactions and yadda-yadda. They should know why transactions are important, etc.&lt;p&gt;But… I’d like to say this is the kind of problem these quick-boot coding schools fall short on. Sure one can learn programming language X, but that doesn’t mean one  has any sort of fundamentals in algorithms, data structures or general database technology.</text></comment>