{"id":343,"date":"2008-05-12T02:46:36","date_gmt":"2008-05-12T06:46:36","guid":{"rendered":"http:\/\/www.rakkar.org\/blog\/?p=343"},"modified":"2008-05-12T02:46:36","modified_gmt":"2008-05-12T06:46:36","slug":"more-bad-experiences-on-rent-a-coder","status":"publish","type":"post","link":"https:\/\/rakkar.org\/blog\/index.php\/2008\/05\/12\/more-bad-experiences-on-rent-a-coder\/","title":{"rendered":"More bad experiences on rent-a-coder"},"content":{"rendered":"<p>\t\t\t\tI don&#8217;t know if it&#8217;s just me, or if programmers outside of the gaming industry are just this bad in general, but I really ran into a terrible programmer this time.<\/p>\n<p>I hire a guy to port RakNet&#8217;s PostgreSQL implementation of the autopatcher to MySQL for $700. I expect this to take about 3 days of part-time work, and the bid I get is pretty in-line with this:<\/p>\n<blockquote><p>\nThis is quite straightforward, I&#8217;d expect to turn this around with two or three days &#8211; although for the purposes of the expert guarantee I&#8217;d like to allocate a week in case of problems.<\/p>\n<p>About me: I&#8217;ve been doing C++ for longer than I care to remember \ud83d\ude09 on Unix and Windows.\n<\/p><\/blockquote>\n<p>11 days later I get the submission from the coder. Problems include:<\/p>\n<ol>\n<li>Code doesn&#8217;t compile<\/li>\n<li>Literally every SQL query had to be rewritten, about half wouldn&#8217;t even run, and the other half didn&#8217;t work right.<\/li>\n<li>Over half a dozen memory leaks<\/li>\n<li>No Windows project included<\/li>\n<li>Zero attention to detail, for example the #define at the top of the header file was the same as for the PostgreSQL version he copied from<\/li>\n<li>Disregard for project requirements, such as not using stl<\/li>\n<li>Limited file sizes to 8.4MB via MEDIUMINT (stupidity or malice?)<\/li>\n<li>Upload files escaped rather than binary, allocating memory once for the escaped file, and again for the query.<\/li>\n<\/ol>\n<p>It was not much more than a copy\/paste job of my existing PostgreSQL implementation, and a find\/replace to replace the PostgreSQL calls with MySQL calls, and an additional hour or so to screw things over.<\/p>\n<p>Over the next two days I report bugs, and he fixes some of them, but I eventually get fed up and take the project to arbitration. The arbitrator has already said he will rule in my favor unless the coder can explain by Monday why this should not happen. That was on Friday and the coder didn&#8217;t yet respond.<\/p>\n<p>One of his excuses:<\/p>\n<blockquote><p>\nBut my understanding is that deadlines are for delivering code, not fixing all the bugs\n<\/p><\/blockquote>\n<p>Arbitrator:<\/p>\n<blockquote><p>\nThe deadline is for the coder to have the full project uploaded in working order. This should also be bug free as the coder is supposed to test the project before uploading it.\n<\/p><\/blockquote>\n<p>Good grief. I just redid all his work in an hour, then did the port myself over the next day days (part time).<\/p>\n<p>In other news&#8230;<\/p>\n<p>Today, I took half a day to port my EmailSender class to support GMail SMTP over SSL.  I <a HREF=\"http:\/\/www.rakkar.org\/blog\/?p=331\">wrote about this previously<\/a>, how the coder took two weeks to do nothing and lied about it besides. I can&#8217;t believe how I can do in half a day what some Indian programming team can&#8217;t do in two weeks. It wasn&#8217;t like the existing code base helped me either, since this is all new stuff. In hindsight, I&#8217;m offering way too much money for these projects.<\/p>\n<p>What is the secret to hiring competent programmers?\t\t<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I don&#8217;t know if it&#8217;s just me, or if programmers outside of the gaming industry are just this bad in general, but I really ran into a terrible programmer this time. I hire a guy to port RakNet&#8217;s PostgreSQL implementation of the autopatcher to MySQL for $700. I expect this to take about 3 days [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[],"_links":{"self":[{"href":"https:\/\/rakkar.org\/blog\/index.php\/wp-json\/wp\/v2\/posts\/343"}],"collection":[{"href":"https:\/\/rakkar.org\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rakkar.org\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rakkar.org\/blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rakkar.org\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=343"}],"version-history":[{"count":0,"href":"https:\/\/rakkar.org\/blog\/index.php\/wp-json\/wp\/v2\/posts\/343\/revisions"}],"wp:attachment":[{"href":"https:\/\/rakkar.org\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=343"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rakkar.org\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=343"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rakkar.org\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=343"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}