<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: atabakoff</title>
    <description>The latest articles on DEV Community by atabakoff (@atabakoff).</description>
    <link>https://dev.to/atabakoff</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F885902%2F2bb93c12-fa8f-4340-aeb0-af4040e007fa.jpg</url>
      <title>DEV Community: atabakoff</title>
      <link>https://dev.to/atabakoff</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/atabakoff"/>
    <language>en</language>
    <item>
      <title>7 common misconceptions developers have about databases</title>
      <dc:creator>atabakoff</dc:creator>
      <pubDate>Sun, 08 Oct 2023 13:38:06 +0000</pubDate>
      <link>https://dev.to/atabakoff/07-common-misconceptions-developers-have-about-databases-1kam</link>
      <guid>https://dev.to/atabakoff/07-common-misconceptions-developers-have-about-databases-1kam</guid>
      <description>&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Index does not contain all columns from a table&lt;/strong&gt; - an index contains as many columns from a table as you define. If you put all columns into an index then it will contain all columns.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Index data is in memory&lt;/strong&gt; - index data is stored on disk &amp;amp; read from it the same as the data table. A database reads the data from disk in pages/blocks and can cache it in memory, both data blocks &amp;amp; index blocks. The cache size is limited by available memory and rarely used blocks are evicted from it. An index block is a subject to eviction likewise a data block.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Index is fast because it's in memory&lt;/strong&gt; - index is fast because it's utilizing a B-Tree data structure with logarithmic complexity. B-Tree is optimized for storing on disk and allows quick access even when an index isn't cached in memory.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;If you have an index on columns used for search you are good&lt;/strong&gt; - an optimizer decides whether to use an index or not based on its selectivity. If selectivity is low then the optimizer might decide that it's faster to perform a full scan, i.e. read the whole table sequentially.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Order of columns in &lt;code&gt;where&lt;/code&gt; makes a difference&lt;/strong&gt; - a database doesn't care if the order of columns in &lt;code&gt;where&lt;/code&gt; matches the order of columns in a composite index. The optimizer is smart enough to figure out that the index can be used.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Order of columns in a composite index doesn't matter&lt;/strong&gt; - it does matter because only leftmost columns can be used for index search. The index can't be used if you search by a rightmost column in a composite index.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;If an index works on QA environment it will work in PROD&lt;/strong&gt; - usually QA &amp;amp; PROD environments differ a lot by the size of datasets &amp;amp; columns cardinality. As a result an index that has good selectivity on QA might have awful selectivity on PROD. The selectivity might also degrade over time so you have to monitor slow queries &amp;amp; index usage.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I've interview few dozens of software engineers and these are the most common misconceptions they had. Many candidates weren't even able to explain what the index is, besides "it's used to speed up queries". Those who mentioned the B-Tree data structure still would often get the details wrong.&lt;/p&gt;

&lt;p&gt;What is your experience interviewing devs? Do they generally have good understanding of database fundamentals?&lt;/p&gt;

</description>
      <category>database</category>
      <category>programming</category>
      <category>discuss</category>
    </item>
    <item>
      <title>5 personality traits that will hold you back as a developer</title>
      <dc:creator>atabakoff</dc:creator>
      <pubDate>Fri, 06 Oct 2023 10:55:51 +0000</pubDate>
      <link>https://dev.to/atabakoff/5-personality-traits-that-will-hold-you-back-as-a-developer-26n5</link>
      <guid>https://dev.to/atabakoff/5-personality-traits-that-will-hold-you-back-as-a-developer-26n5</guid>
      <description>&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Lack of sense of humor&lt;/strong&gt; - appropriate jokes make communication more pleasant and as a result more effective. No one wants to work with a robot or worse, a person got triggered by a harmless joke.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Being defensive&lt;/strong&gt; - feedback is necessary to grow and defensiveness prevents from accepting &amp;amp; addressing the feedback and consequently from the growth.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vindictiveness&lt;/strong&gt; - sometimes people do offend you but in 99% it's unintentional. Either way, going berserk after them will prevent you from the actual work, worsen the communication and overall productivity of you, the team and everyone else involved.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Absence of self-irony&lt;/strong&gt; - we are human and occasionally we make stupid mistakes. The presence of self-irony allows to recognize the situation, joke about it and move forward with a good mood.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lack of self-reflection&lt;/strong&gt; - one who wants to grow must reflect on both what he did &amp;amp; what feedback he got. Going back to this in a month, 3 months, 6 months gives you a different perspective and provides helpful insights. It's like a great book - to fully grasp it you read it the second &amp;amp; third time.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;All the great engineers I worked with have excellent sense of humor &amp;amp; self-irony, they never defensive and they regularly reflect on their own performance &amp;amp; development. They appreciate the feedback &amp;amp; strive to address it.&lt;/p&gt;

&lt;p&gt;Anything I missed?&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>learning</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Key Skills for a back-end Engineer</title>
      <dc:creator>atabakoff</dc:creator>
      <pubDate>Sat, 18 Mar 2023 12:16:27 +0000</pubDate>
      <link>https://dev.to/atabakoff/key-skills-for-a-back-end-engineer-49g9</link>
      <guid>https://dev.to/atabakoff/key-skills-for-a-back-end-engineer-49g9</guid>
      <description>&lt;ol&gt;
&lt;li&gt;Solid understanding of SOLID and ability to apply it in the code.&lt;/li&gt;
&lt;li&gt;Ability to write resilient unit tests.&lt;/li&gt;
&lt;li&gt;Understanding HTTP and REST.&lt;/li&gt;
&lt;li&gt;High level understanding of relational DBs (indexes &amp;amp; transactions &amp;amp; query plan).&lt;/li&gt;
&lt;li&gt;Ability to write simple SQL queries (join &amp;amp; filter &amp;amp; group &amp;amp; order).&lt;/li&gt;
&lt;li&gt;Basic understanding of distributed systems.&lt;/li&gt;
&lt;li&gt;Basics of your language &amp;amp; experience with one mainstream framework.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>webdev</category>
      <category>solid</category>
      <category>http</category>
      <category>career</category>
    </item>
  </channel>
</rss>
