[{"data":1,"prerenderedAt":250},["ShallowReactive",2],{"i-lucide:menu":3,"i-lucide:arrow-up-right":8,"i-lucide:moon":10,"i-lucide:sun":12,"i-lucide:rss":14,"i-simple-icons:github":16,"i-simple-icons:linkedin":18,"post-\u002F2012\u002Fthoughts-on-how-to-get-work-done":21,"surround-\u002F2012\u002Fthoughts-on-how-to-get-work-done":237,"i-lucide:arrow-left":246,"i-lucide:arrow-right":248},{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":7},0,24,false,"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 5h16M4 12h16M4 19h16\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":9},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M7 7h10v10M7 17L17 7\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":11},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":13},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"12\" cy=\"12\" r=\"4\"\u002F>\u003Cpath d=\"M12 2v2m0 16v2M4.93 4.93l1.41 1.41m11.32 11.32l1.41 1.41M2 12h2m16 0h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":15},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M4 11a9 9 0 0 1 9 9M4 4a16 16 0 0 1 16 16\"\u002F>\u003Ccircle cx=\"5\" cy=\"19\" r=\"1\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":17},"\u003Cpath fill=\"currentColor\" d=\"M12 .297c-6.63 0-12 5.373-12 12c0 5.303 3.438 9.8 8.205 11.385c.6.113.82-.258.82-.577c0-.285-.01-1.04-.015-2.04c-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729c1.205.084 1.838 1.236 1.838 1.236c1.07 1.835 2.809 1.305 3.495.998c.108-.776.417-1.305.76-1.605c-2.665-.3-5.466-1.332-5.466-5.93c0-1.31.465-2.38 1.235-3.22c-.135-.303-.54-1.523.105-3.176c0 0 1.005-.322 3.3 1.23c.96-.267 1.98-.399 3-.405c1.02.006 2.04.138 3 .405c2.28-1.552 3.285-1.23 3.285-1.23c.645 1.653.24 2.873.12 3.176c.765.84 1.23 1.91 1.23 3.22c0 4.61-2.805 5.625-5.475 5.92c.42.36.81 1.096.81 2.22c0 1.606-.015 2.896-.015 3.286c0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":19,"hidden":20},"\u003Cpath fill=\"currentColor\" d=\"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037c-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85c3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.06 2.06 0 0 1-2.063-2.065a2.064 2.064 0 1 1 2.063 2.065m1.782 13.019H3.555V9h3.564zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0z\"\u002F>",true,{"id":22,"title":23,"body":24,"category":212,"comments":213,"date":220,"description":221,"excerpt":222,"extension":223,"image":222,"meta":224,"navigation":20,"path":225,"readingTime":226,"seo":227,"stem":228,"subtitle":222,"tags":229,"wordCount":235,"__hash__":236},"posts\u002F2012\u002Fthoughts-on-how-to-get-work-done.md","Thoughts On How To Get Work Done",{"type":25,"value":26,"toc":208},"minimark",[27,37,40,45,74,78,137,141,193,201],[28,29,30,31,36],"p",{},"I have been working as a Software Developer for nearly exactly two years now. During that time I have learned ",[32,33,35],"span",{"style":34},"text-decoration: underline;","a lot",". Seriously, I used to write spaghetti code, but now I am all wrapped up in good architecture, continuous integration, separation of concerns and testing, to mention a few.",[28,38,39],{},"For the longest time I did what I do alone - but at long last there is some hope on the horizon. This post serves as a collection of knowledge \u002F a list of guidelines to my future colleagues.",[41,42,44],"h1",{"id":43},"be-proud-of-your-work","Be Proud Of Your Work",[46,47,48,56,62,68],"ul",{},[49,50,51,55],"li",{},[52,53,54],"strong",{},"Produce quality",". Your code should be well-crafted, conform to standards (whenever possible) and make you want to sigh happily once you commit it. Instantly attack any function that looks like a mess and make it better. Challenge yourself by asking whether what you just did could be done better.",[49,57,58,61],{},[52,59,60],{},"Test your changes",". Whether this means automated tests (PHPUnit) or even manual point-and-click - you should be testing your stuff. Claims like \"works for me\" leave you in a bad light and make you feel like crap later.",[49,63,64,67],{},[52,65,66],{},"Accept constructive criticism."," Code reviews are important. Be smart enough to accept \u002F give out code review comments without taking it personally. Learn from experience.",[49,69,70,73],{},[52,71,72],{},"Respect the client."," Customers are our bread. Treat them respectfully, explain things, communicate on a timely fashion.",[41,75,77],{"id":76},"play-well-with-others","Play Well With Others",[46,79,80,86,92,103,125,131],{},[49,81,82,85],{},[52,83,84],{},"Document concisely",". PHPDoc is your friend - write a short summary to all of your functions, classes, logic that is not immediately obvious. Keep in mind that the person reading your comments is a developer too - have some respect for their intelligence and do not waste time with needless lines of text.",[49,87,88,91],{},[52,89,90],{},"Share ideas",". Programming is a collaborative business. Pair program for an hour or two with a buddy (more, if possible). Debate over best approaches to a particular problem. Introduce new technology to team-members.",[49,93,94,97,98,102],{},[52,95,96],{},"Do not break stuff."," ",[99,100,101],"em",{},"git commit -m \"Broke the importer script\"",". Why? Be reasonably sure your commits won't break the build. If they do, take responsibility and fix it.",[49,104,105,113,114,120,121,124],{},[52,106,107,112],{},[108,109,111],"a",{"href":110},"http:\u002F\u002Fwww.informit.com\u002Farticles\u002Farticle.aspx?p=1926692","Don't touch his code!","  ","Be careful about \"improving\" work done by others - especially if it is not your project. Changing ",[99,115,116,117],{},"function foo_bar()",[52,118,119],{}," ","to",[99,122,123],{}," function fooBar()"," can result in a lot of bad air. Be willing to discuss why you changed something and only do it if your aim is to improve, not force something into your own patterns.",[49,126,127,130],{},[52,128,129],{},"Commit often",". Use version control. Seriously. Just do it. Every discrete change should have its own commit and a meaningful commit message (with a reference to the issue ID). Review the diff of other commits (code review).",[49,132,133,136],{},[52,134,135],{},"Be ready to help."," Accept pair programming invitations. Explain unfamiliar concepts without malice or judgement.",[41,138,140],{"id":139},"keep-the-ball-rolling","Keep The Ball Rolling",[46,142,143,159,175,181,187],{},[49,144,145,148,149,153,154,158],{},[52,146,147],{},"Keep learning."," Developers learn something new as often as possible. Programmers just blunder along with their baggage of knowledge as long as possible. Browse ",[108,150,152],{"href":151},"http:\u002F\u002Fnews.ycombinator.com\u002F","hackernews"," \u002F ",[108,155,157],{"href":156},"http:\u002F\u002Freddit.com\u002Fr\u002Fprogramming","reddit"," \u002F etc before \u002F after work. Read technical blogs. Experiment with ideas and take risks.",[49,160,161,164,165,169,170,174],{},[52,162,163],{},"Participate in community events",". ",[108,166,168],{"href":167},"\u002F2012\u002Fgarage48-2012-tallinn-impressions","Garage48"," is a pride to the Estonian startup community, ",[108,171,173],{"href":172},"http:\u002F\u002Fdevclub.ee\u002F","Devclub"," brings together the best and brightest. Meet new people. Gain new experience. Learn new stuff.",[49,176,177,180],{},[52,178,179],{},"Promote technical excellence",". Put emphasis on doing something well over doing something cheap. Recognize good architecture and give credit where credit is due.",[49,182,183,186],{},[52,184,185],{},"Refactor",". Legacy code is nightmare-ish - and when do the clients ever pay for maintenance? Refactor and improve old systems whenever possible with baby steps. Optimize a long SQL query while working on something unrelated. Run \"auto-format\" when opening a spaghetti file.",[49,188,189,192],{},[52,190,191],{},"Don't overspend."," Sadly, you can not rebuild the entire system unless the customer agrees to pay. Do what is necessary and some more, but do keep it contained.",[28,194,195,196,200],{},"Be passionate about what you do and try to do it well. ",[108,197,199],{"href":198},"http:\u002F\u002Fworkisnotajob.com\u002Fen","Work is not a job"," - and software developers have one of the best jobs on the planet.",[28,202,203],{},[204,205],"img",{"alt":206,"src":207},"Modern day software development comics","\u002Fcontent\u002F2012\u002F11\u002Fsoftware.jpg",{"title":209,"searchDepth":210,"depth":210,"links":211},"",2,[],"Software Development",[214],{"id":215,"author":216,"author_url":217,"date":218,"content":219},2712,"Martin Vahi","https:\u002F\u002Fgithub.com\u002Fmartinvahi","2014-02-19 06:38:00 +0200","A few remarks.\nIf something is \"a standard\", then in software development it means that it's already technologically outdated. Ideas that have proven themselves, are helpful, but \"standards\", no way. As the saying goes: the good thing about \"standards\" is that there are so many to choose from.\nWhat regards to the \"quality\" then that's a term that I avoid using, because my understanding of \"quality\" often amounts to \"reliability\", whilst other peoples' understanding of \"quality\" amounts first and foremost to functionality and visual aspects. For example, according to my understanding IT-security related topics are only about reliability, the ability to withstand attackers. Computational complexity (memory usage patterns, etc.) are nothing but reliability in terms of being able to withstand greater data sets, etc.\nIt is a fact that a customer is not able to cover all reliability aspects within its acceptance tests. Hence the ability of IT-companies to sell crap. After all, lack of reliability is something that appears after the system has been in use for years. The morale: only buy from providers that feel an urge to stay in business in the long run. Software companies that are owned by business people rather than IT-people differ from the ones that are owned by IT-people by a fact that business people can just move from IT-business to food industry or car industry or oil industry without suffering from the bad reputation that they earned by supplying unreliable software. Big Business can get away with far greater scams than freelancers, because freelancers must protect their reputation, but Big Business just dismisses a few managers, may be even the CEO, releases some professionally assembled Press Release and continues with an upgraded version of the same-old-same-old. An example: the British Petroleum and its Deepwater Horizon catastrophe. (I find it hard to believe that the managers of the British Petroleum suddenly started to take environmental safety seriously.)\nWhat regards to the rest of the ideas in the blog post, then I prefer to avoid making my current comment lengthier than it already is. If I were to summarize my comments about the rest of the ideas, then the key phrases would be: different people need to have the freedom to experiment with different approaches to stay motivated and to thrive, evolve; new \"best practices\" are created by the \"sinners\" of \"old best practices\"; expressions like \"good\" and \"bad\" reflect nothing but subjective preference, e.g. there is no \"most optimal solution\", only parameters that can differ from solution to solution, etc.\nI hope that my comment is helpful. Thank You for reading.","2012-11-24","I have been working as a Software Developer for nearly exactly two years now. During that time I have learned a lot. Seriously, I used to write spaghetti code, but now I am all wrapped up in good architecture, continuous integration, separation of concerns and testing, to mention a few.",null,"md",{},"\u002F2012\u002Fthoughts-on-how-to-get-work-done","about 3 minutes",{"title":23,"description":221},"2012\u002Fthoughts-on-how-to-get-work-done",[230,231,232,233,234],"development","developer","job","work","process",670,"ChEvFP_t8c6K17_eW8actcfG0CZV7pJKq5qkkWpyIRQ",[238,242],{"title":239,"path":240,"stem":241,"children":-1},"Sügis on...","\u002F2012\u002Fsugis-on","2012\u002Fsugis-on",{"title":243,"path":244,"stem":245,"children":-1},"Reading Material For People New To PHP \u002F Kohana","\u002F2012\u002Freading-material-for-people-new-to-php-kohana","2012\u002Freading-material-for-people-new-to-php-kohana",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":247},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m12 19l-7-7l7-7m7 7H5\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":249},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 12h14m-7-7l7 7l-7 7\"\u002F>",1790228555462]