<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Regular Geek &#187; Career</title>
	<atom:link href="http://regulargeek.com/category/career/feed/" rel="self" type="application/rss+xml" />
	<link>http://regulargeek.com</link>
	<description>Where programming, the internet and social media collide.</description>
	<lastBuildDate>Fri, 11 May 2012 12:56:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
<cloud domain='regulargeek.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
		<item>
		<title>Why Should You Become A Software Engineer</title>
		<link>http://regulargeek.com/2012/01/01/why-should-you-become-a-software-engineer/</link>
		<comments>http://regulargeek.com/2012/01/01/why-should-you-become-a-software-engineer/#comments</comments>
		<pubDate>Sun, 01 Jan 2012 13:25:22 +0000</pubDate>
		<dc:creator>Rob Diana</dc:creator>
				<category><![CDATA[Career]]></category>
		<category><![CDATA[Employment]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[software engineering]]></category>

		<guid isPermaLink="false">http://regulargeek.com/?p=3995</guid>
		<description><![CDATA[Like any normal blogger, I obsess about my blog. How much traffic am I getting? Where is the traffic coming from? What search terms are leading people here? The search terms are most interesting when it comes to thinking about new content to write. Today, I am writing about a question I saw in the [...]]]></description>
			<content:encoded><![CDATA[<p>Like any normal blogger, I obsess about my blog. How much traffic am I getting? Where is the traffic coming from? What search terms are leading people here? The search terms are most interesting when it comes to thinking about new content to write. Today, I am writing about a question I saw in the search terms, why should you become a software engineer?</p>
<p>First, some background about my own journey into software development. When I went to college, my plan was to become a <a class="zem_slink" title="Civil engineer" href="http://en.wikipedia.org/wiki/Civil_engineer" rel="wikipedia">civil engineer</a>. I took two semesters of physics and realized that the plan was not going to work. I found out that I really did not like physics, and to be an engineer you need a solid physics background. Thankfully, I did not need to decide on a major until my second year was completed, and I did some research. I had settled on <a class="zem_slink" title="Industrial engineering" href="http://en.wikipedia.org/wiki/Industrial_engineering" rel="wikipedia">Industrial Engineering</a>, where I could take some engineering classes as well as some operations and finance classes. It sounded interesting enough, but I thought I might need some help getting a job when I graduated. So, I decided to take an introductory programming class.</p>
<p>This was not my first taste of programming. Like any geek my age, I had written some Basic on a <a class="zem_slink" title="TRS-80" href="http://en.wikipedia.org/wiki/TRS-80" rel="wikipedia">TRS-80</a> during school. However, my first programming class was like turning on the light bulb. I quickly realized that programming was what I really wanted to do. I changed my major, eventually graduated and have had several jobs in our industry. I have now been coding professionally for over 17 years.</p>
<p>What does this have to do with whether you should become a software engineer? The whole story is not entirely important, but there are some points that need to be understood.</p>
<p><strong>You must enjoy what you are doing.</strong> This is even more important in software engineering that some other industries. In many cases, software engineering is not a typical 9 to 5 job. It is fairly stressful as well. If you do not enjoy programming, the stress will demotivate you to the point that your code will eventually suck. I wrote what was meant to be a <a href="http://regulargeek.com/2010/08/07/12-things-a-programmer-really-needs-to-know/" target="_blank">humorous post about the trials of the job in August 2010</a>. It is supposed to be a joke, but in some environments those points are too true.</p>
<p><strong>You can have some level of job security.</strong> In this economy, any level of job security is good. This does not mean that programmers always keep their jobs. We go through layoffs just like everyone else. However, there are a lot of available jobs and the industry continues to grow.</p>
<p><strong>There is good money in software engineering.</strong> You may not see large wads of cash to start, but over time your salary will grow. If you look at salary surveys for different locations, senior level engineers can make $100,000 or more.</p>
<p><strong>There is a lot of job diversity available.</strong> Do you like working with real-time devices like <a class="zem_slink" title="Embedded system" href="http://en.wikipedia.org/wiki/Embedded_system" rel="wikipedia">embedded systems</a>? Mobile devices, like phones and tablets, are growing rapidly and there is a ton of development occurring in the mobile space. Web sites and web applications are continuously being built and require people to know <a class="zem_slink" title="User interface" href="http://en.wikipedia.org/wiki/User_interface" rel="wikipedia">UI</a> development, some server side development and maybe even some database code. If you like to code, there are plenty of niches to explore.</p>
<p><strong>What is your inspiration?</strong> <a href="http://regulargeek.com/2009/03/26/why-do-you-write-code/">Why do you code?</a> Some people like the idea of creating something. Others like solving puzzles. You may like the fast feedback cycle in programming. If you have no inspiration for programming, you probably will not really enjoy the job.</p>
<p><strong>Easier path to independence.</strong> Some people may not like the idea of being a wage-slave at some big corporation. Software development allows you to work remotely or build your own consulting business. This is easier than in many other industries, where working remotely is just not a possibility.</p>
<p>Obviously, there is no clear reason to become a software engineer. It is a personal choice and not some stereotype like introverted math and science lovers who are devoted Star Wars and Star Trek fanatics. To find out if you like programming, try writing some simple code. Do not try to build a significant web application or some mobile app, that is too much to start with. Look at some basic tutorials on learning a language and start coding.</p>
<p><strong>Other related posts:</strong></p>
<ul>
<li><a title="15 Tenets For The Software Engineer" href="http://regulargeek.com/2011/11/18/15-tenets-for-the-software-engineer/">15 Tenets For The Software Engineer</a></li>
<li><a title="Programming Is About Keeping Basic Skills Sharp" href="http://regulargeek.com/2011/09/16/programming-is-about-keeping-basic-skills-sharp/">Programming Is About Keeping Basic Skills Sharp</a></li>
<li><a title="7 Resume Tips For a Software Developer" href="http://regulargeek.com/2008/02/20/7-resume-tips-for-a-software-developer/">7 Resume Tips For a Software Developer</a></li>
</ul>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/"><img class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=82a91ebf-495e-4076-baba-c4e8c8b0d3e6" alt="Enhanced by Zemanta" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://regulargeek.com/2012/01/01/why-should-you-become-a-software-engineer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Can Badges Fix Developer Recruitment?</title>
		<link>http://regulargeek.com/2011/12/04/can-badges-fix-developer-recruitment/</link>
		<comments>http://regulargeek.com/2011/12/04/can-badges-fix-developer-recruitment/#comments</comments>
		<pubDate>Sun, 04 Dec 2011 14:39:42 +0000</pubDate>
		<dc:creator>Rob Diana</dc:creator>
				<category><![CDATA[Career]]></category>
		<category><![CDATA[Endorse.me]]></category>
		<category><![CDATA[Geekli.st]]></category>
		<category><![CDATA[Klout]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Path.to]]></category>
		<category><![CDATA[PeerIndex]]></category>
		<category><![CDATA[portfolio]]></category>
		<category><![CDATA[Recruitment]]></category>
		<category><![CDATA[Skillshare]]></category>
		<category><![CDATA[Zerply]]></category>

		<guid isPermaLink="false">http://regulargeek.com/?p=3904</guid>
		<description><![CDATA[Lately, more services have appeared with the hope of showing who has experience with various technologies. The idea is meant to solve two problems. First, influence is a hot topic right now, with people focusing more on general influence and sites like Klout or PeerIndex. How do you find people that know about things like [...]]]></description>
			<content:encoded><![CDATA[<p>Lately, more services have appeared with the hope of showing who has experience with various technologies. The idea is meant to solve two problems. First, influence is a hot topic right now, with people focusing more on general influence and sites like <a class="zem_slink" title="Klout" href="http://klout.com" rel="homepage">Klout</a> or <a href="http://www.peerindex.com" target="_blank">PeerIndex</a>. How do you find people that know about things like <a title="A Simple Introduction To HTML5" href="http://regulargeek.com/2011/07/29/a-simple-introduction-to-html5/">HTML5</a> or <a class="zem_slink" title="JavaScript" href="http://en.wikipedia.org/wiki/JavaScript" rel="wikipedia">JavaScript</a> and <a class="zem_slink" title="JQuery" href="http://jquery.com/" rel="homepage">JQuery</a>? Outside of the people that wrote a book or wrote the framework, how do you find those people that are truly knowledgable? The second problem is the recruitment and hiring process. In the technical industry, recruitment and hiring is big business. Given the amount of turnover in the industry, those recruiting fees can really add up. In many cases, companies need to pay as much as 10% of the starting salary for the new employee to the recruitment firm. If the average placement makes $100,000, that means the recruitment firm takes $10,000 per position.</p>
<p>Due to these issues, more sites are appearing with the hopes of &#8220;fixing&#8221; these problems. Some sites use text recommendations or endorsements, like <a class="zem_slink" title="LinkedIn" href="http://www.linkedin.com" rel="homepage">LinkedIn</a>, while others use slightly different approaches. The question is whether any of these new sites really improve upon the current recruitment situation. So, let&#8217;s take a look at some of these ideas.</p>
<p>First, we have the <a href="http://www.readwriteweb.com/archives/mozilla_aims_to_iconize_skills_with_standardized_m.php" target="_blank">recent announcement from Mozilla</a> regarding a competition:</p>
<blockquote><p>A system proposed earlier this year by the <a class="zem_slink" title="Mozilla" href="http://mozilla.com" rel="homepage">Mozilla Foundation</a> will be the basis of <a href="http://www.dmlcompetition.net/">a global competition</a>. As much as $2 million in grants from Mozilla and the <a class="zem_slink" title="John D. and Catherine T. MacArthur Foundation" href="http://www.macfound.org" rel="homepage">MacArthur Foundation</a> will be awarded to interested parties, in amounts ranging up to $200,000 apiece, who can propose a technical infrastructure and/or physical appearance for what Mozilla describes as a standard system of verified icons for representing individuals&#8217; Web developmental skills.</p></blockquote>
<p>Mozilla is trying to generate interest in a &#8220;standard system of verified icons for representing Web development skills&#8221;. There is part of this that is good, the fact that they are focusing on only web development means that there is a chance this type of initiative could work. This could be similar to the badges that the HTML5 technologies have created. The obvious problem is how do these skills get &#8220;verified&#8221; or more directly, how does a person put one of these icons on their site and how can other people be sure that this badge means something?</p>
<p>What about the sites that focus on this type of thing, those sites that are creating communities around skills? Here are some of the sites that I found and what they say about themselves:</p>
<ul>
<li><strong><a href="http://path.to" target="_blank">Path.to</a></strong> &#8211; &#8220;We love meaningful endorsements based on skills, rather than generic endorsements. We&#8217;ve engineered an endorsement algorithm to identify the most skilled people across industries.&#8221;</li>
<li><strong><a href="http://geekli.st" target="_blank">Geekli.st</a></strong> &#8211; &#8220;Geekli.st is an achievement-based social portfolio builder where all bad-ass code monkeys around the globe can communicate, brag, build their street cred and get found. We founded Geekli.st because it was time for a united front, exclusively for developers, to build tangible credibility in the workplace.&#8221;</li>
<li><strong><a href="http://zerply.com" target="_blank">Zerply</a></strong> &#8211; &#8220;Zerply is a professional network built around people who love what they do. We believe that professional networking can be done differently.&#8221;</li>
<li><strong><a href="http://endorse.me" target="_blank">Endorse.me</a></strong> &#8211; &#8220;With Endorse.me, You will get your own page to create categories to place people from your social networks that you endorse in. Then you share your page for others to see. The idea came to us, because people constantly ask us for Designers, Developers, Angel Investors, or lots of other things.&#8221;</li>
<li><strong><a href="http://skillshare.com" target="_blank">Skillshare</a></strong> &#8211; &#8220;Skillshare is a community marketplace to learn anything from anyone. We believe that everyone has valuable skills and knowledge to teach and the curiosity to keep learning new things&#8230; Our platform helps make the exchange of knowledge easy, enriching, and fun.&#8221;</li>
</ul>
<p>You will notice that I did not include any of the &#8220;business card&#8221; sites like About.me or Flavors.me as their focus is much smaller than these community skills sites. Another minor note is that Skillshare just recently added badges, similar to the Mozilla concept, and is more of a tutorial site, but I included it due to its popularity. In each of these sites, you have a way to endorse other people or even brag about your own work. The community building aspect is not entirely focused upon, as the sites all seem focused on who are the talented people with a specific technology. Can badges and endorsements fix the developer recruitment problem?</p>
<p>Each of these sites has there own problems. First, there is the issue of critical mass. All of these sites need much more user adoption in order to become really useful. Second, the idea of endorsements that are just &#8220;thumbs up&#8221; can easily be gamed, and even text endorsements cannot be completely believed. Third, endorsements (or plus-ones) tend to cluster around more popular people and not the people that are in the trenches, but not web-celebrities. As an example of what I mean, Joe Stump and <a class="zem_slink" title="John Resig" href="http://www.ejohn.org" rel="homepage">John Resig</a> do not need endorsements as many people know about their skills. However, there are many developers that do not get that kind of popularity because they did not create <a class="zem_slink" title="JQuery" href="http://jquery.com/" rel="homepage">jQuery</a> or they do not blog.</p>
<p>Are any of these sites better or more appropriate than LinkedIn? LinkedIn does give you the ability to search the connections for people that have actually worked with you. Ignoring that information means that you really need to build everything from the ground up. It does not make sense to try to build the network given the various networks that already exist. The endorsements are only marginally better than LinkedIn endorsements, because these sites are more developer focused.</p>
<p>The problem with much of the recruitment issue is that development experience really needs to be seen. Geekli.st has an interesting feature where you can &#8220;brag&#8221; about the work that you have done. I am not sure if this is what we need, but moving closer to a portfolio of work may be more useful. However, how does a server-side Java developer show their portfolio? You may be able to show an API that was created, but that does not show what your work was really like. Eventually, this problem degrades back to describing your work.</p>
<p>So, the real challenge is how we can use networks like LinkedIn, along with some endorsements, to understand how good a developer really is. Some of this is in a developer portfolio, but how do we &#8220;see&#8221; the infrastructure of an application? You can talk to any developer, and we all know that this needs to be fixed, but how can we fix this?</p>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/"><img class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=c77103d3-b81f-429f-8b98-5366e2b0b927" alt="Enhanced by Zemanta" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://regulargeek.com/2011/12/04/can-badges-fix-developer-recruitment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>15 Tenets For The Software Engineer</title>
		<link>http://regulargeek.com/2011/11/18/15-tenets-for-the-software-engineer/</link>
		<comments>http://regulargeek.com/2011/11/18/15-tenets-for-the-software-engineer/#comments</comments>
		<pubDate>Fri, 18 Nov 2011 13:00:01 +0000</pubDate>
		<dc:creator>Rob Diana</dc:creator>
				<category><![CDATA[Career]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[NoSQL]]></category>
		<category><![CDATA[RAM]]></category>
		<category><![CDATA[RDBMS]]></category>
		<category><![CDATA[Unit testing]]></category>

		<guid isPermaLink="false">http://regulargeek.com/?p=3875</guid>
		<description><![CDATA[Many people talk about the things a software engineer needs to know in order to be successful in their job. Other people talk about the traits needed to be successful. Typically, these posts may read differently but there are many similarities between the two posts. In reality, a software can never really be successful without [...]]]></description>
			<content:encoded><![CDATA[<p>Many people talk about the things a software engineer needs to know in order to be successful in their job. Other people talk about the traits needed to be successful. Typically, these posts may read differently but there are many similarities between the two posts. In reality, a software can never really be successful without looking at both types of posts. The list of 15 tenets below is my hope to consolidate the ideas into one handy list for your review.</p>
<ul>
<li><strong>Remember the basics.</strong> If you forget the <a href="http://regulargeek.com/2009/03/19/simple-advice-for-learning-a-programming-language/" target="_blank">basics of a programming language</a>, you lose your foundational knowledge. That is never a good thing.</li>
<li><strong>Always assume the worst case.</strong> If you had formal computer science education, you learned about <a class="zem_slink" title="Big O notation" href="http://en.wikipedia.org/wiki/Big_O_notation" rel="wikipedia">big-O notation</a>. Knowing why an algorithm has no chance of performing well is a good thing. Figuring out why a particular use case seems much slower than others is how you stay successful.</li>
<li><strong>Test your code.</strong> Ensure you have tests for your code, whether you follow <a class="zem_slink" title="Test-driven development" href="http://en.wikipedia.org/wiki/Test-driven_development" rel="wikipedia">TDD</a> or any other method. Depending on the type of test, you may want to target a <a href="http://regulargeek.com/2009/06/12/how-much-testing-is-enough/" target="_blank">different level of coverage</a>, but you should still write as many tests as you can.</li>
<li><strong>Do not employ new technologies because they are new, use them because they solve a problem.</strong> As technologists, we tend to follow the hot new tools in the hope of finding a silver bullet. Utility is the key, not coolness.</li>
<li><strong>Read, a lot.</strong> If you are not reading about our industry, you will fall behind and that could have career threatening complications.</li>
<li><strong>Try new techniques and technologies, a lot.</strong> Yes, I said not to use new technologies just because they are new, but you do need to try new things in order to determine if something new is useful. Also, trying new things helps you learn and keep current in your industry.</li>
<li><strong>Fail, you will learn something.</strong> At the minimum, you will learn what does not work and you can refine your solutions. In some case, you can even <a href="http://regulargeek.com/2011/01/28/failures-are-really-mini-successes/" target="_blank">consider the failure a small success</a>.</li>
<li><strong>Ship the damn software.</strong> Sometimes you just need to get the job done, but you must be aware of technical debt. If you continuously just ship software without removing technical debt, you are well on your way to creating a nightmare when a major production issue arises.</li>
<li><strong>Do it the &#8220;right way&#8221;.</strong> Most developers have an idea of the &#8220;right way&#8221; to implement a design, but that may not always be what project management wants. This is almost a contradiction to the previous &#8220;ship the damn software&#8221; rule, but there is a balance that needs to be met.</li>
<li><strong>Leave the code better than how you found it.</strong> Instead of preaching the benefits of refactoring, think of whether you want to maintain the pile of code that keeps getting worse. If you clean it up a little each time you modify it, then it will not be a terrible mess.</li>
<li><strong>Think about concurrent access.</strong> If you are building a web application, and I don&#8217;t mean the scale of Facebook, weird issues may arise under load. Even an application with 100 concurrent users can start to see weird issues when there is concurrent reads and writes on things like HashMaps. This is just the start of the problems as well.</li>
<li><strong>Storage may be free, but I/O sucks.</strong> You may think that writing everything to disk is a great way to persist data. Generally it is, but if you use disk storage as a temporary storage area, your application could quickly grind to a slow crawl. Physical storage should be limited to that data that needs to persist for long periods of time, or when the data cannot reside in memory.</li>
<li><strong>Memory does not go as far as you may think.</strong> To start, many people will have their application and database residing on the same server. This is perfectly acceptable until both require a lot of <a class="zem_slink" title="Random-access memory" href="http://en.wikipedia.org/wiki/Random-access_memory" rel="wikipedia">RAM</a>. As an example, you can easily run a Java application in Tomcat in 528MB. However, once you have to deal with scale of any sort and you add in the RAM required by the persistent storage (<a class="zem_slink" title="Relational database management system" href="http://en.wikipedia.org/wiki/Relational_database_management_system" rel="wikipedia">RDBMS</a>, <a class="zem_slink" title="NoSQL" href="http://en.wikipedia.org/wiki/NoSQL" rel="wikipedia">NoSQL</a>, etc), you can quickly jump to 8GB. Obviously, this is highly dependent upon the number of users hitting the system and how much data you store in memory.</li>
<li><strong>Caching fixes everything until it crashes the server.</strong> If you are looking for ways to avoid a lot of database queries, you end up using some form of <a class="zem_slink" title="Cache" href="http://en.wikipedia.org/wiki/Cache" rel="wikipedia">caching</a>. The problem is that caching requires much more memory than your typical application usage, especially when dealing with data that scales with the number of users (see the previous point on memory). The worst problem with caching is that it can chew up so much memory that you run into an OutOfMemory error in java or similar errors in other languages. At that point, your server will either crash or become unresponsive and caching no longer helps because it has become part of the problem.</li>
<li><strong>Think like a consultant. </strong>As an employee, there tends to be an unwritten rule that the company can do things they would not do with consultants. Deadlines may be moved, scope may be increased, and the developer needs to find a way to meet these new constraints. As an employee, you need to use your power to state that the deadline can not move due to the amount of work required, or that scope cannot be increased without increasing the number of resources. Consultants tend to be allowed to manage a project differently than employees, and it is our job to change that.</li>
</ul>
<p>I know there are a bunch of other ideas that keep running through my head, but this is the best list I can create for now. What other rules would you include for software engineers?</p>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/"><img class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=bfb14f43-7f2b-4fd8-a3b4-0243680d487d" alt="Enhanced by Zemanta" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://regulargeek.com/2011/11/18/15-tenets-for-the-software-engineer/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Programming Is About Keeping Basic Skills Sharp</title>
		<link>http://regulargeek.com/2011/09/16/programming-is-about-keeping-basic-skills-sharp/</link>
		<comments>http://regulargeek.com/2011/09/16/programming-is-about-keeping-basic-skills-sharp/#comments</comments>
		<pubDate>Fri, 16 Sep 2011 15:01:38 +0000</pubDate>
		<dc:creator>Rob Diana</dc:creator>
				<category><![CDATA[Career]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Basic skills]]></category>
		<category><![CDATA[Binary search algorithm]]></category>
		<category><![CDATA[Education]]></category>
		<category><![CDATA[Programming language]]></category>

		<guid isPermaLink="false">http://regulargeek.com/?p=3640</guid>
		<description><![CDATA[Obviously, programming is &#8220;hard&#8221; otherwise everyone would do it and making solid applications would not be so difficult. However, the expectation does not always match reality. The most basic parts of programming are not hard. If you review my old post on advice for learning a programming language, learning the basics like syntax, loops and [...]]]></description>
			<content:encoded><![CDATA[<p>Obviously, programming is &#8220;hard&#8221; otherwise everyone would do it and making solid applications would not be so difficult. However, the expectation does not always match reality. The most basic parts of programming are not hard. If you review <a href="http://regulargeek.com/2009/03/19/simple-advice-for-learning-a-programming-language/" target="_blank">my old post on advice for learning a programming language</a>, learning the basics like syntax, loops and collections is fairly simple. Even I/O is not hard to learn for any given language. So, how does programming become difficult?</p>
<p>Paul Homer has an <a href="http://theprogrammersparadox.blogspot.com/2011/09/contradictions.html" target="_blank">excellent post on contradictions in programming</a>. The most important nugget from the post is:</p>
<blockquote><p>So is programming easy or hard? When the people around you accept it as hard, then although it may take a while, it doesn’t have to be painful or a mess. But when the people around you think it is easy, they get impatient and take really bad short-cuts to avoid the necessary work, so it becomes increasingly difficult to get anything finished properly within the chaos. Thus it all depends on whether the people around you get that in order for it to be easy, they really have approach it like it is hard. Or slightly restated: it is easy right up until you fall into the trap of thinking it is easy &#8230;</p></blockquote>
<p>Yep, programming is easy up until the point you think it is easy. The reason this happens is really a false sense of security. In the beginning, you learn about the <a class="zem_slink" title="Data structure" href="http://en.wikipedia.org/wiki/Data_structure" rel="wikipedia">data structures</a> and syntax of a language. Eventually, you start learning more things like common algorithms, <a class="zem_slink" title="Binary search algorithm" href="http://en.wikipedia.org/wiki/Binary_search_algorithm" rel="wikipedia">binary search</a> and merge sort are good examples. Slowly, you learn more complicated things like <a href="http://programmingpraxis.com/2010/03/05/binary-search-tree/" target="_blank">creating and modifying a binary search tree</a>. However, after learning these things, you eventually get a job building applications and you realize that much of what you learned is handled by frameworks. So, you start ignoring the basics of programming as you learn more about translating business requirements and technical specifications into code.</p>
<p>Suddenly, you start dealing with weird problems like memory constraints or <a class="zem_slink" title="Memory leak" href="http://en.wikipedia.org/wiki/Memory_leak" rel="wikipedia">memory leaks</a>, large-scale <a class="zem_slink" title="Search problem" href="http://en.wikipedia.org/wiki/Search_problem" rel="wikipedia">search problems</a>,  and data aggregation. What you don&#8217;t realize is that as you have grown in your career, your tasks have gotten more difficult but they do not seem as difficult because you have slowly gotten used to the level of difficulty. However, this is where the contradictions arise. You are dealing with a class of problems that requires you to question some of your fundamental assumptions.</p>
<p>In many of these types of cases, you need to revisit some of you basic knowledge. For memory issues, you need to see how many objects are being retained in memory. It could be that some of your data should be serialized to disk. For search, you may need to change your search algorithm, or you may need to build search indexes. Data aggregation, which has become very important with all of the social data that is available, requires you to revisit how you are storing data and how you are querying that data.</p>
<p>Retaining your basic skills is something our industry tends to forget because of the wide adoption of various frameworks. Are sites like <a href="http://programmingpraxis.com" target="_blank">Programming Praxis</a>, which help you practice programming, really useful? In some cases, they absolutely are. Forgetting how to create a binary search tree is not catastrophic, but remembering that these basic data structures and algorithms are critical to your career. The only time that you can really ignore some of these foundations is when your career is focused on creating administrative applications, like form based data entry, with a limited number of concurrent users. There is a large segment of the programming population that does this type of work, but there are a lot of programmers that create all sorts of interesting applications.</p>
<p>There are some people that believe you need to be working on side projects, meaning applications that you are building outside of your current employment, in order to be a good hiring candidate. I am not a fan of this opinion, but I do value the idea of side projects. Typically, people will work on side projects that have only a limited relationship to what they do at work. The benefit is that these side projects will broaden their skill set because they are dealing with different types of problems than they normally see. I find side projects to be better than programming exercises because they have meaning to the person doing the work. Would you rather write another binary search or create an application that you and others may find useful? Obviously, I prefer side projects for this type of work. These side projects are also a useful way to learn new technologies and languages if you are not learning about them at work.</p>
<p>How are you keeping your skills sharp?</p>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/"><img class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=89d0e8d9-475c-4152-ac37-e0a97b60c88d" alt="Enhanced by Zemanta" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://regulargeek.com/2011/09/16/programming-is-about-keeping-basic-skills-sharp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Conflict Between Estimates, Deadlines And A Working Product</title>
		<link>http://regulargeek.com/2011/08/31/the-conflict-between-estimates-deadlines-and-a-working-product/</link>
		<comments>http://regulargeek.com/2011/08/31/the-conflict-between-estimates-deadlines-and-a-working-product/#comments</comments>
		<pubDate>Thu, 01 Sep 2011 00:00:05 +0000</pubDate>
		<dc:creator>Rob Diana</dc:creator>
				<category><![CDATA[Career]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[agile development]]></category>
		<category><![CDATA[estimation]]></category>
		<category><![CDATA[Project management]]></category>
		<category><![CDATA[Project plan]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Velocity]]></category>

		<guid isPermaLink="false">http://regulargeek.com/?p=3598</guid>
		<description><![CDATA[Lately, I have been struggling with some of the management side of projects. The concepts of estimates, deadlines and work completed do not always align in ways that make people happy. The problems with estimates and deadlines had pushed me closer to agile methods before, but not all projects can be run in the manner [...]]]></description>
			<content:encoded><![CDATA[<p>Lately, I have been struggling with some of the management side of projects. The concepts of estimates, deadlines and work completed do not always align in ways that make people happy. The problems with estimates and deadlines had pushed me closer to <a class="zem_slink" title="Agile software development" href="http://en.wikipedia.org/wiki/Agile_software_development" rel="wikipedia">agile methods</a> before, but not all projects can be run in the manner you want them run if you are dealing with a client. So, I was having problems reconciling all of this when I saw a post from <a href="http://www.developmentblock.com/" target="_blank">Matt Block</a> asking <a href="http://www.developmentblock.com/2011/08/is-working-software-enough/" target="_blank">Is Working Software Enough</a>? Matt highlights an interesting problem:</p>
<blockquote><p>The team seemed very concerned about achieving a high velocity. They showed reluctance to slow down and spend more time in “grooming” and planning. Previously, in an effort to optimize velocity and reach “hyper-productivity” the team had capped the amount of time the <a class="zem_slink" title="Scrum (development)" href="http://en.wikipedia.org/wiki/Scrum_%28development%29" rel="wikipedia">product owner</a> could use for grooming at 5% of the sprint. However, I was starting to think that really wasn’t enough time. It was forcing a lot of important design decisions off onto myself and the UX designer without getting the opportunity to explore different options and get feedback from the development team. There may be situations where this setup works well, however I have a very smart and talented development team and I felt that spending more time grooming and brainstorming potential solutions to the problems on the backlog with the team prior to designing the solution would, in the end, result in a much better product.</p></blockquote>
<p>Basically, the development team was so focused on the amount of work to be completed in a specified amount of time that they forgot the goal of producing a better product. This type of stress normally comes from the <a class="zem_slink" title="Project manager" href="http://en.wikipedia.org/wiki/Project_manager" rel="wikipedia">project manager</a>, they were worried about the calendar. When did developers start worrying about the calendar?</p>
<p>Part of the problem is that developers are required to estimate project tasks. In traditional or waterfall projects, these estimates are given in hours or days. With agile methods, developers are often asked to only provide a relative difficulty of the task. For relative difficulty, I have seen various measures like points (based on the fibonacci sequence), t-shirt sizes (S, M, L, XL), donuts, beans and many others. The problem with relative measures is that they do not relate to the calendar directly. In the end, most clients want to know when a selected feature set will be complete, and sometimes there are other calendar pressures like launching before a conference or staying aligned with some business cycle (like monthly accounting). Why is agile used in these scenarios? Because agile methods are related to getting a working product. You implement a feature during a sprint, instead of various people working on tasks that are not entirely related to each other except due to related due dates.</p>
<p>Another problem with estimates is that they are typically not related to the developer doing the work. One way that this issue has been avoided is to have the developer scheduled to do the work, to estimate the task. However, we all know that schedules and reality do not always see eye to eye, so you may have a developer working on tasks that they did not estimate. Invariably, there are differences in the actual hours needed to complete the task and the original estimate. Some of this is due to the estimate-developer mismatch, but sometimes it is just a matter of expectations. In most projects, developers are allocated as 100% utilization for the project. In reality, this is almost never true. During a week, the developer will at least have project status meetings or scrums. In many agile methods, a daily 15 minute scrum is required, which means that the developer already loses 1.25 hours for the week. If you add in the time to process emails, about 30 minutes per day, you have lost 3.75 hours or almost 10% of your week. This does not include any other types of distractions, and the best you can expect is 90% utilization from the team members.</p>
<p>So, we already have the fact that estimates are likely flawed, the project plan is possibly flawed due to lower than expected utilization, and the potential for a business driven deadline, all pulling for attention when looking at the project schedule. Agile methods have attempted to remove the first two issues, by using relative difficulty as the estimate, but that often gets translated to effort hours in the long term in order to determine an approximate date when the project will be complete. Obviously, we could talk this problem in circles, because without data, there is no proof of what could happen or at least data showing trends of what has happened.</p>
<p>In agile methods, the concept of velocity has tried to make use of the trend of previous sprints&#8217; work completed. However, this trend tends to become a target instead of just a trend based on data. Developers try to increase their velocity, because it makes them feel productive, and management likes to see the velocity remain stable or even increase over the life of a project. This is the problem with data, it makes people feel like they can make decisions about the project, while they are forgetting about the main goal of developing a solid, functional product.</p>
<p>What if the only metric that was measured was total points delivered? Or we measure points delivered as a percentage of the required points for the <a class="zem_slink" title="Minimum viable product" href="http://en.wikipedia.org/wiki/Minimum_viable_product" rel="wikipedia">minimum viable product</a>? This is what we really want to know. Is the product done? If not, how much work needs to be done until the product is minimally ready for launch?</p>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/"><img class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=a2bd10a8-1b28-4a00-88b6-be5c3d93996e" alt="Enhanced by Zemanta" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://regulargeek.com/2011/08/31/the-conflict-between-estimates-deadlines-and-a-working-product/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>13 Free GTD Online Tools For Mac Windows OR Linux</title>
		<link>http://regulargeek.com/2011/07/25/13-free-gtd-online-tools-for-mac-windows-or-linux/</link>
		<comments>http://regulargeek.com/2011/07/25/13-free-gtd-online-tools-for-mac-windows-or-linux/#comments</comments>
		<pubDate>Mon, 25 Jul 2011 13:00:58 +0000</pubDate>
		<dc:creator>Rob Diana</dc:creator>
				<category><![CDATA[Career]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Beeswax]]></category>
		<category><![CDATA[Chandler]]></category>
		<category><![CDATA[Doit.im]]></category>
		<category><![CDATA[Getting Things Done]]></category>
		<category><![CDATA[MyLifeOrganized]]></category>
		<category><![CDATA[Nozbe]]></category>
		<category><![CDATA[Remember The Milk]]></category>
		<category><![CDATA[Things]]></category>
		<category><![CDATA[ThinkingRock]]></category>
		<category><![CDATA[TimeGT]]></category>
		<category><![CDATA[Todoist]]></category>
		<category><![CDATA[Toodledo]]></category>
		<category><![CDATA[Veetosoft]]></category>
		<category><![CDATA[Wunderlist]]></category>

		<guid isPermaLink="false">http://regulargeek.com/?p=3426</guid>
		<description><![CDATA[This is a guest post from Lior Levin. In a day and time where people are often tied down by 10+ tasks and to-dos a day, it can be hard to keep up with it all. I find it hard to believe that any true freelancer, professional or student can live without some type of [...]]]></description>
			<content:encoded><![CDATA[<p><em>This is a guest post from Lior Levin.</em></p>
<p>In a day and time where people are often tied down by 10+ tasks and to-dos a day, it can be hard to keep up with it all. I find it hard to believe that any true freelancer, professional or student can live without some type of GTD (getting things done) tool; it’s just a must-have for staying organized and remembering what needs to be done for the day, week, and month.</p>
<p>With that being said, this list of 13 GTD tools will help you get organized on any platform &#8211; whether you’re on Windows, Mac, Linux, a mobile device or right on the web. From managing tasks to creating goals to organizing a project, this list has got you covered and at a company I work for that developed a <a href="http://www.iadvize.com/" target="_blank">live chat customer support software</a> we tried almost all of them internally. So here you go:</p>
<h2><a href="http://culturedcode.com/" target="_blank">Things</a></h2>
<p><img src="http://regulargeek.com/wordpress/wp-content/uploads/2011/07/QK-mj5SzNoczB-rCdJWDgGRws12Wpb7nlbpGjK_wOd6cc10z39SgGVUwUWiT3poteqOvfrst9R9bcxRlYrXH-S_cbuaBAv3SO3PbZZTrjd9ePFAAMp4" alt="" width="575px;" height="427px;" /></p>
<p>A stunning task manager with powerful features and synchronization between devices. You can view all to-do items for the current day, the next day, and future days. You can also organize/group to-dos into projects and areas of responsibility. You can even delegate to-dos to your coworkers and teammates; so it is also great for working with groups.</p>
<p>Available for <a href="http://culturedcode.com/things/" target="_blank">Mac</a>, <a href="http://culturedcode.com/things/iphone/" target="_blank">iPhone/iPod Touch</a> and <a href="http://culturedcode.com/things/ipad/" target="_blank">iPad</a>.</p>
<h2><a href="http://todoist.com/" target="_blank">Todoist</a></h2>
<p>Todoist is an online task manager with a very simple interface and built-in calendar. You can organize your tasks into projects and even sub-projects and sub-tasks. It also includes reminders, Gmail integration, Outlook integration, plus a <a href="http://todoist.com/chrome" target="_blank">Chrome extension</a> and <a href="http://todoist.com/firefox" target="_blank">Firefox addon</a>.</p>
<p>Available for <a href="http://todoist.com/macApp" target="_blank">Mac</a> and online use.</p>
<h2><a href="http://chandlerproject.org/" target="_blank">Chandler</a></h2>
<p><img src="http://regulargeek.com/wordpress/wp-content/uploads/2011/07/uLCa0WilQ4z7K4DU2QYQwqcUsBTTq74IVnwTRFvWH2ykNNYy1CLetgTXamkbP8GmP0WfbDJNx9TdrFugCB2oUkuacc9BLw5Qw_B-vD9gIDwo-LUBg68" alt="" width="575px;" height="377px;" /></p>
<p>“A notebook you can organize, back up and share.” You can separate your to-dos into now, later, and done sections so you know what’s more important and what is already completed. You can also organize your items into collections (via drag and drop) and add stars to important notes and events.</p>
<p>Available for <a href="http://chandlerproject.org/Projects/DownloadChandlerDesktop" target="_blank">Windows, Mac, and Linux</a>.</p>
<h2><a href="http://waxandwane.org/beeswax/beeswax.html" target="_blank">Beeswax</a></h2>
<p>“An information management system inspired by <a href="http://en.wikipedia.org/wiki/Lotus_Agenda" target="_blank">Lotus Agenda</a>” and only for the true geeks at heart. The UI is text based and formats your tasks in an outline-type format (similar to Microsoft Word). It is very basic, yet has quite a few keyboard shortcuts (command key binding). Tasks can be organized into categories and sub-categories.</p>
<p>Available for <a href="http://waxandwane.org/beeswax/installation.html" target="_blank">Linux</a>.</p>
<h2><a href="http://www.nozbe.com/" target="_blank">Nozbe</a></h2>
<p><img src="http://regulargeek.com/wordpress/wp-content/uploads/2011/07/eYPbrPG9YSCHpHotMkjKk7i_t-Y3rW1xAh46Xk8IEdgvCCLV2rx3mM3xM55dJM8KF-KpAhKoIZoMrG3nbmubt2Z0Ynj-XRjQFyN7-Ir-Q_hpNUkiS84" alt="" width="575px;" height="370px;" /></p>
<p>This is a web-based time management and project management application that is geared toward small teams. Tasks and notes can be organized into projects and you can star the ones that are the most important. You can also attach files to your notes and tasks. Nozbe even <a href="http://www.nozbe.com/extras" target="_blank">integrates with</a> many useful apps including: Evernote, Twitter, <a class="zem_slink" title="Google Calendar" href="http://google.com/calendar" rel="homepage">Google Calendar</a>, Gmail, Yahoo, and more.</p>
<p>Available for <a href="http://itunes.apple.com/us/app/nozbe/id368937716" target="_blank">iPhone/iPod Touch</a>, <a href="http://itunes.apple.com/us/app/nozbe-for-ipad/id375348333" target="_blank">iPad</a>, and online use.</p>
<h2><a href="http://www.trgtd.com.au/" target="_blank">ThinkingRock</a></h2>
<p>A Java based application that is great for collecting thoughts, creating to-do lists, organizing tasks into projects and sub-projects, and creating “Do ASAP” actions (for those really important tasks). You can also use it to create goals, which can then be put into a “someday” or “maybe” category.</p>
<p>Available for <a href="http://www.trgtd.com.au/index.php?option=com_content&amp;view=article&amp;id=45&amp;Itemid=58" target="_blank">Windows, Mac, Linux</a>, <a href="http://itunes.apple.com/au/app/thinkingrock/id341050143?mt=8" target="_blank">iPhone</a>, and <a href="https://market.android.com/details?id=au.com.trgtd.tr" target="_blank">Android</a>.</p>
<h2><a href="http://www.toodledo.com/" target="_blank">Toodledo</a></h2>
<p><img src="http://regulargeek.com/wordpress/wp-content/uploads/2011/07/2-6UnVgePsRoTQz3JWmfIhr3HSOVkMdMBLDPUsXI6TZOdAG3JnKMqeN9jnSJeFISSq6FzjVweRHh7cYb4QB7fB1UQ_zIrCyvh-823SDWxxQdUfEdLvk" alt="" width="575px;" height="362px;" /></p>
<p>Toodledo is a very popular and powerful online to-do list organizer. Your tasks can be prioritized and organized into folders and sub-tasks. You can also create notes and goals. Toodledo has numerous integrations and other features like email, SMS reminders, IM support, a <a href="http://www.toodledo.com/widget/google_gadget.php" target="_blank">Google Gadget,</a> Twitter support, a <a href="http://www.toodledo.com/widget/firefox_plugin.php" target="_blank">Firefox addon</a>, <a href="http://www.toodledo.com/widget/apple_dashboard.php" target="_blank">Apple dashboard widget</a> and more.</p>
<p>Available for <a href="http://www.toodledo.com/info/iphone.php" target="_blank">iPhone</a> and online use.</p>
<h2><a href="http://www.rememberthemilk.com/" target="_blank">Remember the Milk</a></h2>
<p>Remember the Milk (also known as RTM) is a popular favorite for managing tasks and creating to-do lists. It is very simple, yet offers superb functionality and integrations with Gmail, Google Calendar, Twitter and more. You can also get reminders via email, SMS or IM and share you tasks with others. There are few other <a href="https://www.producteev.com/" target="_blank">great to-do list apps</a> on the web but RTM are probably the most popular one.</p>
<p>Available for <a href="http://itunes.apple.com/app/remember-the-milk/id293561396?mt=8" target="_blank">iPhone, iPad</a>, <a href="http://www.rememberthemilk.com/services/android/" target="_blank">Android</a>, and online use.</p>
<h2><a href="http://www.mylifeorganized.net/index.htm" target="_blank">MyLifeOrganized</a></h2>
<p><img src="http://regulargeek.com/wordpress/wp-content/uploads/2011/07/yo2Hbe9TRebOFMpbu-Kd31KGZutpEX-yOhW7TTDLnmGJVVihXl7QOq-KZAQQkZsC1T_ETy1STMMoCN83zAe077brvEgI-Z_VoDiJYlasuTm-laM6nLs" alt="" width="575px;" height="412px;" /></p>
<p>With MyLifeOrganized you can collaborate and create tasks, sub-tasks, projects, goals and even mind-maps. The interface is customizable and actually designed to run from a <a href="http://portableapps.com/about/what_is_a_portable_app" target="_blank">portable drive</a>. One of the most unique features is the ability to enter the amount of time required for a task. You can then ask MyLifeOrganized “I have only 30 minutes now. What is the best thing I can complete from my To-Do list?” and it will let you know which items you can do.</p>
<p>Available for <a href="http://www.mylifeorganized.net/downloads/index.htm" target="_blank">Windows</a>, <a href="http://itunes.apple.com/us/app/mylifeorganized/id406333543?mt=8" target="_blank">iPhone</a>, and <a href="https://market.android.com/details?id=net.mylifeorganized.mlo" target="_blank">Android</a>.</p>
<h2><a href="https://i.doit.im/" target="_blank">Doit.im</a></h2>
<p>Another simple, yet stylish to-do list manager that works on just about every platform and browser. You can organize your tasks into projects and share with others. There is also a quick-add feature, which is great if you’re in a hurry. The different view modes lets you you filter your tasks by time, context, project, contact, calendar and archiver.</p>
<p>Available for <a href="http://download.doit.im/setup.zip" target="_blank">Windows</a>, <a href="http://doitim.googlecode.com/files/Doit_for_linux_2_3_19_en.tar.gz" target="_blank">Linux</a>, <a href="http://itunes.apple.com/us/app/doit-im/id350974721?mt=8" target="_blank">iPhone</a>, <a href="http://itunes.apple.com/us/app/doit-im-for-ipad/id397176407?mt=8" target="_blank">iPad</a>, <a href="http://download.doit.im/doit.apk?v=3.2.1" target="_blank">Android</a>, and online use.</p>
<h2><a href="http://timegt.com/" target="_blank">TimeGT</a></h2>
<p><img src="http://regulargeek.com/wordpress/wp-content/uploads/2011/07/HbgquXOBszsHk8t3MY9LxAK47Hio7yGqQ2Im9K-grKZDnMxPjK1p1i67u5fkVtG6m8fuJAH6vMahXyoMlCqKuladkBjo_cB3AzT2ySsIGvHkJCgvSo0" alt="" width="575px;" height="432px;" /></p>
<p>“TimeGT is a powerful life and task management software that keeps data in sync using a secure server and freeware desktop clients.” Tasks can be tagged and organized into nested projects with unlimited depth levels. You can also separate the items that you can do now from the ones that you want to do later or someday. TimeGT also offers secure synchronization and backup so that you never lose your data.</p>
<p>Available for <a href="http://timegt.com/download/" target="_blank">Windows, Mac, Linux</a>, and online use.</p>
<h2><a href="http://www.veetosoft.com/" target="_blank">Veetosoft</a></h2>
<p>Veetosoft offers 2 different programs: uTodo (“simple and fast to-do list software”) and uOrganized (“powerful task list software”). uTodo lets you tag your tasks and organize them into lists, while uOrganized lets you tag your tasks and organize them into folders. Both offer task filtering, organization via drag and drop, keyboard shortcuts, sticky notes, themes, and the ability to run the program from a portable drive.</p>
<p>Available for <a href="http://www.veetosoft.com/download.html" target="_blank">Windows</a>.</p>
<h2><a href="http://www.wunderlist.com/" target="_blank">Wunderlist</a></h2>
<p><img src="http://regulargeek.com/wordpress/wp-content/uploads/2011/07/m7UQZ81jeipwaPD3sS6nnyW4sO6uzSRXaRpOv8xTaeYFPorZECWDEZsJJvTAygy1NWeyuFaO_UxBe-adhJ9iz0U38_2wlmOEoJPiePGEJ973nmplcAg" alt="" width="575px;" height="398px;" /></p>
<p>Wunderlist is very similar to Doit.im; it’s a beautifully designed task manager that is accessible from almost any device. Items can be started to show importance, organized into lists, and shared with others. You can also customize your background with 1 of 12 built-in designs. Tasks can be filtered and viewed by due date, importance, or according to whether or not it has been completed.</p>
<p>Available for <a href="http://www.6wunderkinder.com/wunderlist/" target="_blank">Windows, Mac</a>, <a href="http://itunes.apple.com/us/app/wunderlist-to-do-listen/id406644151" target="_blank">iPhone</a>, <a href="http://itunes.apple.com/us/app/wunderlist-hd/id420670429" target="_blank">iPad</a>, <a href="https://market.android.com/details?id=com.wunderkinder.wunderlistandroid" target="_blank">Android</a>, and online use.</p>
<p>What have we missed? What’s your favorite GTD tool?</p>
<p><em>This post was written by Lior Levin who works for iAdvize and is also a marketing advisor to a <a href="http://psdtohtmlconversion.com/" target="_blank">psd to html service</a> company that works with designers from all over the US and Europe.</em></p>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/"><img class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=7b68b21d-d4a8-4f7a-8824-9c853700050d" alt="Enhanced by Zemanta" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://regulargeek.com/2011/07/25/13-free-gtd-online-tools-for-mac-windows-or-linux/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Bridging The Technology Communication Gap</title>
		<link>http://regulargeek.com/2011/05/24/bridging-the-technology-communication-gap/</link>
		<comments>http://regulargeek.com/2011/05/24/bridging-the-technology-communication-gap/#comments</comments>
		<pubDate>Tue, 24 May 2011 14:00:07 +0000</pubDate>
		<dc:creator>Rob Diana</dc:creator>
				<category><![CDATA[Career]]></category>
		<category><![CDATA[Bugzilla]]></category>
		<category><![CDATA[chris brogan]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[JIRA]]></category>
		<category><![CDATA[Quality assurance]]></category>
		<category><![CDATA[TRAC]]></category>

		<guid isPermaLink="false">http://regulargeek.com/?p=3222</guid>
		<description><![CDATA[Throughout my career, I have been blessed with the ability to effectively translate technology issues to business users. At one point I was even told that I &#8220;explain technology to the users in a way that makes sense and does not make them feel stupid.&#8221; This has also been a focus for this blog, explaining [...]]]></description>
			<content:encoded><![CDATA[<p>Throughout my career, I have been blessed with the ability to effectively translate technology issues to business users. At one point I was even told that I &#8220;explain technology to the users in a way that makes sense and does not make them feel stupid.&#8221; This has also been a focus for this blog, explaining and discussing technology with the idea that many people that read this blog are not software developers.</p>
<p>I started thinking about this recently for a few reasons. First, <a href="http://www.chrisbrogan.com/talk-in-their-language/" target="_blank">Chris Brogan wrote about talking in a customer&#8217;s language</a>:</p>
<blockquote><p>Would you give that same kind of opportunity to connect if it were your customer? Do you talk in their language, on their device of choice and about the topics that interest them?</p></blockquote>
<p>There are two important things to note in that quote. First, are you talking in their language? Do you use their terminology? Do you try to make technical issues sound understandable? The second point is which communication medium does your customer prefer to use? These ideas are very important for any software engineer above the most junior levels of experience.</p>
<h3>Speak Their Language</h3>
<p>When you are talking with a customer, you need to speak in different terms than you would with other software engineers. This should be obvious to most people, but it is not an easy skill to master. First, when do you give the users technical detail and when do you give them a summary of the situation? For example, if you have a data issue that needs to be fixed, do you tell the users the details of the issue? Or do you explain the problem in terms of how the application reacts? So, your data issue may cause an error in the application, and that is what the users understand.</p>
<p>The communication also needs to use the same terminology as your users. In blogging software, most of the textual content is described as posts. However, your users may describe things in terms of articles. This may not seem like a big difference, but hours of discussion could be lost due to such terminology differences. It may even be helpful to create a glossary of terms when developing any documentation, that way the terminology is documented for when new people join the team.</p>
<h3>Use Their Tools</h3>
<p>The second question about which communication tools to use is just as important as the terminology. It may seem like a small thing, but if a company typically uses conference calls to meet and make decisions, then an email will probably not convey the same level of importance. In some companies, the opposite is true and email is the main communication medium.</p>
<p>The choice is not as simple as phone or email either, and it changes with each department. Your fellow programmers probably communicate using instant messaging. When you are dealing with <a class="zem_slink" title="Quality assurance" rel="wikipedia" href="http://en.wikipedia.org/wiki/Quality_assurance">QA</a>, you probably will communicate using your task/issue tracking software like <a class="zem_slink" title="JIRA" rel="homepage" href="http://atlassian.com/software/jira">JIRA</a>, <a class="zem_slink" title="Bugzilla" rel="homepage" href="http://www.bugzilla.org/">Bugzilla</a> or <a class="zem_slink" title="Trac" rel="homepage" href="http://trac.edgewall.org/">TRAC</a>. In some cases, the communication medium could even be a status report sent to your manager. Each group typically will require a different method of communication.</p>
<p>As a software engineer, you may not think that all of this is important to your job. However, only the most junior developers do not need these types of communication tips. As your career progresses, communication can become as important as your coding skills. Developing a breadth of business skills in addition to a breadth of technology skills is very important to your development even if you do not want to be in management. If you are thinking of going the entrepreneurial route, these skills are even more important than if you stayed in a large corporation.</p>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/"><img class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=83a678e6-ddcc-49cb-ac6d-8b462d85aac2" alt="Enhanced by Zemanta" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://regulargeek.com/2011/05/24/bridging-the-technology-communication-gap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Acknowledge Your Bias And Succeed</title>
		<link>http://regulargeek.com/2011/05/08/acknowledge-your-bias-and-succeed/</link>
		<comments>http://regulargeek.com/2011/05/08/acknowledge-your-bias-and-succeed/#comments</comments>
		<pubDate>Sun, 08 May 2011 12:27:08 +0000</pubDate>
		<dc:creator>Rob Diana</dc:creator>
				<category><![CDATA[Career]]></category>
		<category><![CDATA[Bias]]></category>
		<category><![CDATA[Experience]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[yahoo]]></category>

		<guid isPermaLink="false">http://regulargeek.com/?p=3190</guid>
		<description><![CDATA[As is typical in the blogosphere, people will latch onto whatever topic is popular or controversial. Today, I read an interesting post from Michael Arrington regarding the responses to his investment policy. In his &#8220;Screw Them All&#8221; post, he says something very interesting, and possibly obvious to some people: the really important thing to remember, [...]]]></description>
			<content:encoded><![CDATA[<p>As is typical in the blogosphere, people will latch onto whatever topic is popular or controversial. Today, I read an <a href="http://techcrunch.com/2011/05/07/tech-press-screw-them-all/" target="_blank">interesting post</a> from Michael Arrington regarding the responses to his <a href="http://techcrunch.com/2011/04/27/an-update-to-my-investment-policy/" target="_blank">investment policy</a>. In his &#8220;Screw Them All&#8221; post, he says something very interesting, and possibly obvious to some people:</p>
<blockquote><p>the really important thing to remember, as a reader, is that there is no objectivity in journalism. The guys that say they’re objective <a href="http://www.slate.com/id/2139042/">are just pretending</a>. Everyone is conflicted in different ways, and yet the “rules of journalism” don’t require any sort of transparency or disclosure unless it’s a direct financial conflict.</p></blockquote>
<p><strong>Everyone has some bias.</strong></p>
<p>I am sure you are wondering where this is going, since I have not commented about the blogosphere problems in quite some time. As a software engineer, if you remember the &#8220;everyone has some bias&#8221; mantra, you can actually change your career. The key is to remember that &#8220;everyone&#8221; includes you. As an example, I have been developing in <a class="zem_slink" title="Java (programming language)" rel="homepage" href="http://www.oracle.com/technetwork/java/">Java</a> for over 10 years, so my experience affects my bias against other technologies. I will likely get some complaints about this, but I do not like using <a class="zem_slink" title="PHP" rel="homepage" href="http://www.php.net/">PHP</a> as a final implementation for a web application, mainly because I do not feel like trying to scale PHP. Java has its own issues, but scaling Java is a known problem and only requires a little research. I know there are companies using PHP with huge scale, like <a class="zem_slink" title="Facebook" rel="homepage" href="http://facebook.com">Facebook</a> and <a class="zem_slink" title="Yahoo!" rel="homepage" href="http://www.yahoo.com">Yahoo</a>, but there are a lot of companies that cannot hire the best and brightest engineers to solve their <a class="zem_slink" title="Scalability" rel="wikipedia" href="http://en.wikipedia.org/wiki/Scalability">scalability</a> problems.</p>
<p>How does this anti-PHP stance help me? When people ask me what language to use, I can start by saying I am a Java developer, so my opinion is biased. I can explain my issues with PHP and tell them to search for some information on scaling PHP on the internet if they choose that language. PHP is great for prototyping a web application, and may be an acceptable choice for most applications if you are not planning to scale to the size of Facebook.</p>
<p>By acknowledging my bias, and ensuring that I include it in analysis means that I can provide a more complete picture. If you are a consultant, this becomes very important. If you have biases but do not include them in your analysis, you are not being honest with your clients. That is not a path to success.</p>
<h3>Experience Is Bias</h3>
<p>The problem that most people have is that they see their experience as a valuable tool, which it is, but they use it as a hammer and everything is a nail. Everyone is guilty of this at some point. Recognizing experience as only a tool is important in avoiding unnecessary bias. Experience also needs to retain its context in order to be truly useful. If you have a performance problem in your code, experience may tell you to look at the database queries and you may focus on that. A quick check to ensure the database is not obviously a problem is good, but you can&#8217;t focus on anything until real performance profiling is completed. The current application may not be similar to your previous experience, so your bias is actually getting in the way of solving the problem. Granted, it is very difficult to see when to rely on experience and when not to. This is one of the things that separates really successful people from other people that want to be successful.</p>
<p>So, admit your bias and recognize your experience as additional bias. You and your work will benefit from it.</p>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/"><img class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=913c8eef-74fc-4e41-ad22-916f57dc2a47" alt="Enhanced by Zemanta" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://regulargeek.com/2011/05/08/acknowledge-your-bias-and-succeed/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.583 seconds -->

