<?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>Krotscheck.net &#187; developer</title>
	<atom:link href="http://www.krotscheck.net/tag/developer/feed" rel="self" type="application/rss+xml" />
	<link>http://www.krotscheck.net</link>
	<description>Michael Krotscheck's insights, ideas, and inspirations about web technology, life, and the kitchen sink.</description>
	<lastBuildDate>Fri, 03 Feb 2012 05:10:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>What makes a &#8216;Rockstar&#8217; Developer?</title>
		<link>http://www.krotscheck.net/2010/01/10/what-makes-a-rockstar-developer.html</link>
		<comments>http://www.krotscheck.net/2010/01/10/what-makes-a-rockstar-developer.html#comments</comments>
		<pubDate>Sun, 10 Jan 2010 15:11:30 +0000</pubDate>
		<dc:creator>Michael Krotscheck</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[entrepreneurship]]></category>
		<category><![CDATA[rockstar]]></category>
		<category><![CDATA[startup]]></category>

		<guid isPermaLink="false">http://www.krotscheck.net/2010/01/10/what-makes-a-rockstar-developer.html</guid>
		<description><![CDATA[I&#8217;ve recently been involved in a discussion about what makes a rockstar developer for a startup. This has always surprised me- the reality of the matter is that there are no rockstars, only people who think of themselves as rockstars, and those are the last people you want in charge of your product. So I [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently been involved in a discussion about what makes a rockstar developer for a startup. This has always surprised me- the reality of the matter is that there are no rockstars, only people who think of themselves as rockstars, and those are the last people you want in charge of your product. So I figure, as someone who&#8217;s been around the block a few times, it would be good to come up with a list of what actually makes for a &#8220;rockstar&#8221; developer. If I miss anything, feel free to contribute in the comments.</p>
<h4>1- They don&#8217;t think of themselves as rock stars.</h4>
<p>Arrogance is perhaps a key requirement in being an entrepreneur, but overconfidence will drain your cash pool faster than hookers and blow.</p>
<h4>2- They have a proven track record of multiple shipped products.</h4>
<p>You don&#8217;t want a hotshot kid out of school, you want a seasoned professional, preferably one who knows how to write applications for the industry you&#8217;re trying to reach.</p>
<h4>3- They care more about frameworks than plumbing.</h4>
<p>Unless you&#8217;re trying to design a complex new mathematical algorithm (in which case you should probably be partnering with a university research lab), you want someone who can grasp a system rather than a method. If this guy ends up in deep technical discussions about the optimal way of implementing a sort, you&#8217;ve got the wrong guy.</p>
<h4>4- They&#8217;re not willing to work for free</h4>
<p>Risk management and strategic thinking is key to long-term project viability. If you have someone willing to work for equity, they&#8217;re willing to take risks with your payment processing gateway just as easily as they&#8217;re taking a risk on you.</p>
<h4>5- They believe in development process and best practices to speed up their work.</h4>
<p>The last thing you want is someone who&#8217;s trying to reinvent the wheel. Mind you, this also likely means that the first two weeks or so of development you&#8217;ll see a lot of development support tools get set up and used before code actually starts, but that&#8217;ll give you time to get your documentation in order.</p>
<h4>6- They have a positive attitude.</h4>
<p>If someone bitches, they&#8217;re looking to blame themselves. Instead, you want them to identify their concern as a problem they can solve.</p>
<h4>7- They get uncomfortable when you ask about their social life.</h4>
<p>&#8217;cause, well, currently it&#8217;s still socially odd to prefer coding on a saturday night.</p>
<h4>8- You don&#8217;t want Alphabet/Acronym soup in their technical skills.</h4>
<p>Lots of languages means little depth in each, and depth = speed. Pick a serverside language (PHP, .Net, Ruby, etc), pick a database (MySQL, SQLServer, Postgres, etc), and pick a frontend (Flex, Mootools, JQuery, etc). Focus on that. If a dev has only a few languages this does not mean they&#8217;re stupid- it means they know how to focus.</p>
<h4>9- They&#8217;re involved in the community.</h4>
<p>Speaking, attending, whatever, you need to make sure their technical skills don&#8217;t stagnate, and that they&#8217;re willing to accept ideas from outside.</p>
<h4>10- You respect them</h4>
<p>Respect means you are willing to listen when they tell you you&#8217;re full of it, and that&#8217;s key in a partnership. You&#8217;re not looking for a monkey you can put in a corner who can bang out some code- you&#8217;re looking for a partner who&#8217;ll act as a technical sounding board.</p>
<div class="hr"></div>
<p>So now I have this question: What makes for a rockstar business partner?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krotscheck.net/2010/01/10/what-makes-a-rockstar-developer.html/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Singletasking</title>
		<link>http://www.krotscheck.net/2008/01/27/singletasking.html</link>
		<comments>http://www.krotscheck.net/2008/01/27/singletasking.html#comments</comments>
		<pubDate>Mon, 28 Jan 2008 00:48:12 +0000</pubDate>
		<dc:creator>Michael Krotscheck</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[selfmanagement]]></category>
		<category><![CDATA[simplicity]]></category>
		<category><![CDATA[singletask]]></category>

		<guid isPermaLink="false">http://www.practicalflash.com/articles/singletasking/</guid>
		<description><![CDATA[<p>The most telling thing about this article is that not five  words into my first introduction, my Gmail reminder popup came up demanding  attention, and my automated reflexes immediately clicked on the little window  to see what the hopeful mailer wanted. The side effect? It completely derailed  my train of thought I had to work myself back into it. QED.</p>
<p>I have had no small number of conversations with my boss  about the nature of Work-Life balance. Today's everyday wisdom says that you  have to keep both your personal and professional life properly segregated if  you want to lead a happy life, and yet work continues to raise it's ugly head  once I leave the office. Case and point: I've been in the office most of the  weekend trying to complete some tasks that I was unable to complete during the  week, and even now I'm having a hard time even thinking about them in such a  way that I can complete them and finally go home. Frustrated, I flipped back  over to my browser and read my RSS feeds to clear my head, an came across an  article on <a href="http://www.theatlantic.com/doc/200711/multitasking">multitasking</a> that allowed me to frame the problem in a way that made  some sense: It's not the work-life balance that I need to deal with, it's the  work-work balance.</p>]]></description>
			<content:encoded><![CDATA[<p>The most telling thing about this article is that not five  words into my first introduction, my Gmail reminder popup came up demanding  attention, and my automated reflexes immediately clicked on the little window  to see what the hopeful mailer wanted. The side effect? It completely derailed  my train of thought I had to work myself back into it. QED.</p>
<p>I have had no small number of conversations with my boss  about the nature of Work-Life balance. Today&#8217;s everyday wisdom says that you  have to keep both your personal and professional life properly segregated if  you want to lead a happy life, and yet work continues to raise it&#8217;s ugly head  once I leave the office. Case and point: I&#8217;ve been in the office most of the  weekend trying to complete some tasks that I was unable to complete during the  week, and even now I&#8217;m having a hard time even thinking about them in such a  way that I can complete them and finally go home. Frustrated, I flipped back  over to my browser and read my RSS feeds to clear my head, an came across an  article on <a href="http://www.theatlantic.com/doc/200711/multitasking">multitasking</a> that allowed me to frame the problem in a way that made  some sense: It&#8217;s not the work-life balance that I need to deal with, it&#8217;s the  work-work balance.</p>
<p>The author in the article makes a reference to something  called &quot;dual task interference&quot;, which in a nutshell means that the  brain cannot really do more than one thing at a time. You can switch between  different tasks fairly rapidly, but according to research (citations for which  I have yet to find, apparently there was a study at Stanford) doing so  dramatically reduces your mental capacity for both tasks. You end up not firing  on all cylinders when you&#8217;re trying to accomplish more than one thing at once.</p>
<p>Lets take this into the office space: Let’s say you, like  myself, are a developer who sits on an open floor. It&#8217;s easy for others to walk  up to you and ask questions, and depending on where you sit on the team you  could be pulled into a variety of meetings haphazardly scheduled throughout the  day with breaks of intermittent length. You have neither door, cube walls, nor  some way of shielding yourself from the rest of the world (except for maybe  headphones). Now from a management and collaboration standpoint this  environment is great: All the resources are readily available to each other,  you can have impromptu discussions if you hit a roadblock or if something interesting  comes up, and questions can be directly posed rather than sent (and forgotten)  via email. Personally I love these environments because I&#8217;m very extroverted,  and it feels like I&#8217;m working at a party, which given the conclusion presented  here means I’m probably one of the worst offenders.</p>
<p>Let’s take a look at this from the perspective of  interference: Every time someone asks you a question, you&#8217;re distracted from  your task, and your brain is trying to both not forget where you left off the  task while also coming up with an answer. Every time you see an email popup  come up, you&#8217;re distracted. Every time a coworker IM&#8217;s you, or you have to  start prepping for a meeting in 15 minutes, or something that&#8217;s important to  someone else needs to get done your mind starts splitting itself and you get, to  put a fine point on it, stupid. The very act of creating an environment conducive  to collaboration guarantees that your employees aren&#8217;t working at their peak  capacity.</p>
<p>There are aggravating factors as well: Do you have your IM  client running? How about new email notification? Do you have an automated  process in your brain that loads up your RSS reader every half hour? SMS?  Weather warnings? Twitter? A low battery beep on your cell phone? All of these will  similarly distract you, and chances are that anyone working at a computer these  days has no less than 2, maybe 4 things occupying their attention at any given  point in time.</p>
<p>On top of that, we developers have to construct systems that  requires quite a bit of mental capacity, and having a question fielded by  another team member on a different topic right when we&#8217;re in the middle of  something is much like wiping a magnet across a disk drive: You have to get  back into your code, remember where you were, reconstruct the logical process  you were following and then pick up where you left off. For small tasks this  isn&#8217;t much of a problem, but if your application is particularly  complicated&#8230;. well, speaking for myself it takes anywhere from 10-30 minutes  to reconstruct where I was, assuming another interruption or meeting doesn&#8217;t  come along.</p>
<p>The natural conclusion of this is that it is in the best  interest for yourself as a developer, your company, your clients and  practically everyone on your team that you cut out as many distractions as  possible. Yes, the current generation is all about being instantly and  constantly connected, but to actually accomplish something you have to let it  all go. Turn off your IM client, schedule certain periods of time when you  check email rather than leaving it open, block out time during the day when you  simply refuse to attend meetings, and be ready to ask a coworker to bring his  question back at another time.</p>
<p>In short, learn how to Singletask, to focus exclusively on  what&#8217;s in front of you.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krotscheck.net/2008/01/27/singletasking.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Ethical Developer</title>
		<link>http://www.krotscheck.net/2008/01/20/the-ethical-developer.html</link>
		<comments>http://www.krotscheck.net/2008/01/20/the-ethical-developer.html#comments</comments>
		<pubDate>Sun, 20 Jan 2008 22:15:00 +0000</pubDate>
		<dc:creator>Michael Krotscheck</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[ethics]]></category>

		<guid isPermaLink="false">http://www.practicalflash.com/articles/the-ethical-developer/</guid>
		<description><![CDATA[<p>The internet is an interesting beast. It offers privacy and anonymity, yet at the same time gives us plenty of opportunity to pull those curtains aside and become celebrities in our own right. In the world of community-shaped brands, overnight popularity and popularity as fickle as a mouse click, we are given plenty of opportunities to make a quick buck, win a quick victory, be a featured celebrity or make a quick contribution.</p>
<p>The only thing that seems to be tying all these things together on a consistent basis is speed. Contribution needs to be fast, results have to be instant, and if something doesn't catch our attention within our rapidly diminishing attention span, the audience moves on to the next best thing. Things with real staying power are growing fewer and fewer, and the last thing that seems to have any kind of tenacity is reputation.</p>
<p>Let's face it: Employers, clients, friends and colleagues will search for our names online, and an even sightly determined sleuth will be able to uncover a substantial amount of our history. As a result we each have to be very careful about managing our online activity, and in particular our professional reputation; Even the slightest negative comment found in a search result will raise unwanted eyebrows, and raised eyebrows mean lost interviews, bids, and job opportunities.</p>
<p>To that end, I've tried to list a few rules and guidelines that I follow. I'm hardly perfect at them, and there are exceptions for each, yet overall they are things that I've learned that are absolute must-haves in order to properly manage your reputation as a developer.</p>]]></description>
			<content:encoded><![CDATA[<p>The internet is an interesting beast. It offers privacy and anonymity, yet at the same time gives us plenty of opportunity to pull those curtains aside and become celebrities in our own right. In the world of community-shaped brands, overnight popularity and popularity as fickle as a mouse click, we are given plenty of opportunities to make a quick buck, win a quick victory, be a featured celebrity or make a quick contribution.</p>
<p>The only thing that seems to be tying all these things together on a consistent basis is speed. Contribution needs to be fast, results have to be instant, and if something doesn&#8217;t catch our attention within our rapidly diminishing attention span, the audience moves on to the next best thing. Things with real staying power are growing fewer and fewer, and the last thing that seems to have any kind of tenacity is reputation.</p>
<p>Let&#8217;s face it: Employers, clients, friends and colleagues will search for our names online, and an even sightly determined sleuth will be able to uncover a substantial amount of our history. As a result we each have to be very careful about managing our online activity, and in particular our professional reputation; Even the slightest negative comment found in a search result will raise unwanted eyebrows, and raised eyebrows mean lost interviews, bids, and job opportunities.</p>
<p>To that end, I&#8217;ve tried to list a few rules and guidelines that I follow. I&#8217;m hardly perfect at them, and there are exceptions for each, yet overall they are things that I&#8217;ve learned that are absolute must-haves in order to properly manage your reputation as a developer.</p>
<p><strong>Rule #1: Don&#8217;t misrepresent your skills.</strong></p>
<p>The first and foremost rule is not to lie about what you&#8217;re capable of. This can often be tricky, because skill and competence are largely subjective in nature, and the title &#8220;Developer&#8221; can span anything from a college dropout with a PHP tutorial and an Ego to a 15 year assembly veteran who knows how to read a core dump.</p>
<p>This rule is especially hard to follow when you&#8217;re a junior level developer, trying to break into an industry, or a freelancer short on paying projects. As the bills start piling up the pressure to enhance a resume increases, and there are many ways of spinning a phrase to make it say one thing but mean something completely different.</p>
<p>Consider the consequence: You&#8217;ve engaged in some creative embellishment and finally landed a gig. You start working, and your lack of skill comes to light. Now not only have you lost your paycheck, but you have also demonstrated that you&#8217;re wholly untrustworthy and left a sour taste in your employers&#8217; mouth. This then begins to cascade: You may be asked about it in interviews, they might do some background checking, someone might make an idle comment on a blog or in a discussion at a local professional group and suddenly you&#8217;re working at McDonald&#8217;s just to make ends meet.</p>
<p>In contrast, honesty about your skills will properly frame your employers&#8217; expectations, and give them a good sense of how to compare you against other candidates. You will definitely lose some opportunities, but now these opportunities will either have been outside your skill set (with all the issues listed above), or for a boss who&#8217;s expectations aren&#8217;t in line with the project scope (whom you probably didn&#8217;t want to work for anyway).</p>
<p><strong>Rule #2: Credit where credit is due.</strong></p>
<p>If you write code, you deserve credit for it. If someone else wrote it, they deserve credit for it. This is not rocket science, and falls neatly under the Golden Rule. Even so, it is very easy to take full credit for a particular body of work, especially if you were the sole developer on the project.</p>
<p>This is perhaps the hardest rule to give proper shape to, because while we all appreciate the work of developers whose libraries make our jobs easier, it&#8217;s difficult to figure out exactly <span style="font-style: italic;">when</span> to show that appreciation. Do I send an email thanking that developer? Do I put his name in the documentation? Do I blog about it?</p>
<p>I personally err on the side of being reciprocal. Whenever <span style="font-style: italic;">I</span> take or receive credit for something, I make sure to note everyone who&#8217;s made a substantial contribution. This doesn&#8217;t always work- for instance I can&#8217;t go into too much detail on my recent work on HP Print Studio, both because of client agreements and internal policy (As much as I&#8217;d like to), and you might have similar restrictions.</p>
<p><strong>Rule #3: Own up to your mistakes.</strong></p>
<p>Risk is an everpresent part of projects. The risk of not meeting the launch date, the risk of hiring the right skill set, the risk of a client that won&#8217;t pay their bills or the risk of your project manager being suddenly hit by a bus. Many of these are not under our control, and yet even for those there are ways of mitigating the damage, usually involving project contingency time and exit clauses.</p>
<p>From a developer&#8217;s perspective, the three risk factors are (broadly speaking) the risk of not having the right resources on the project, the risk of improper time estimates, and the risk of development mistakes (frequently referred to as bugs). The first of these is largely an issue of staffing, so doesn&#8217;t affect us directly. The other two however are factors of our skill as developers, and can frequently be subject to errors of judgement.</p>
<p>The second to last thing a project needs to deal with when the pressure is on is a long, extended blame game that wastes everyone&#8217;s time. The last thing a project needs is a lurking mistake that&#8217;ll blow up in everyone&#8217;s faces just because someone didn&#8217;t have the guts to raise a red flag.</p>
<p>If you screw up, admit it. That way everyone is up to date, can plan for the extra time, and though you might lose some face (though you&#8217;ll gain some points for being honest) in the long run it is far preferable to the alternative.</p>
<p><span style="font-weight: bold;">Rule #4: Ask for help.</span></p>
<p>One of the hardest things for a technologist is to admit that we don&#8217;t know how to to do something. We&#8217;re asked to complete projects of staggering complexity, and after a while adopt a sense of infallibility that lends itself towards making extravagant promises. This pride cometh before the fall, as sooner or later we make extravagant promises in spite of having no clue of how to implement a request, and a single broken promise can derail an entire project.</p>
<p>We are usually the first to know whether our promises have landed us in hot water, and the hardest thing to do once this realization hits is to ask someone else for help. I for one am far more likely to pull ridiculous hours than admit that someone else might be better qualified to solve a problem, and the resulting billing mayhem has to be dealt with by someone.</p>
<p>Here&#8217;s a secret: People like to feel important, and asking someone else for help is doing exactly that. What for you is a pretty tight situation is to them a casual request that makes them feel good about themselves, and that goodwill may even get you some pro-bono help. It could be that they have that one remaining piece of information you need to get the job done, or maybe they can point you at the shape of the solution so that you can fill in the blanks. Alternatively if they don&#8217;t have an answer, they might know someone who does.</p>
<p>One cautionary note: There is a fine difference between asking someone for help and relying on them.</p>
<p><span style="font-weight: bold;">Rule #5: Respect your team</span></p>
<p>Lets face it, we&#8217;re an independent bunch, especially those of us who are freelancers. The teams we work on don&#8217;t usually include a full complement of project contributors, and it&#8217;s often that we have to take on the duties of other Developers, Information Architects, Designers, Testing and in some cases even Account and Project Managers. Yet even when we&#8217;re burning the candle at both ends and the other team members aren&#8217;t available, we have to remember that we do not work in a vacuum, and there are others whom we can rely on.</p>
<p>Everyone has their part, and each specialization is there to support and complement the goals of the project. While it might be tempting to assume that you can take on the duties of a Designer, chances are he has experience, nuanced training and a method of thought that you simply cannot compete with.</p>
<p>Lets take the case of Design vs. Development as a case study, because for flash developers like myself this is one of the blurriest lines. Here, a designer has set a vision for a particular project, and you are asked to implement it. In the course of development it turns out that there are several pages/screens that have not been accommodated for, but you can easily extrapolate something from the existing comps and maybe add a bit of personal flair. If you do so without the designer&#8217;s input, you are bypassing him altogether and effectively telling him you can do his job. If instead you inform him of the oversight and ask him whether you should do that, you&#8217;re deferring authority to him and acknowledging his place and responsibility on the team. In short you&#8217;ve just turned a potentially volatile situation into a team bonding experience.</p>
<p>That about sums it up. I&#8217;ll probably keep this list updated as I encounter more things, but these five should get you off on good footing. Remember, your reputation is as valuable as your paycheck, because in the long run that&#8217;s what will define where, what, and how you work.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krotscheck.net/2008/01/20/the-ethical-developer.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

