<?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>development &#8211; Software, Fitness, and Gaming &#8211; Jesse Warden</title>
	<atom:link href="https://jessewarden.com/tag/development/feed" rel="self" type="application/rss+xml" />
	<link>https://jessewarden.com</link>
	<description>Software &#124; Fitness &#124; Gaming</description>
	<lastBuildDate>Wed, 29 Jun 2016 01:54:59 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://jessewarden.com/wp-content/uploads/2016/08/cropped-Lambda2-32x32.png</url>
	<title>development &#8211; Software, Fitness, and Gaming &#8211; Jesse Warden</title>
	<link>https://jessewarden.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Experiences in Managing Software Development Through Kanban &#038; Trello</title>
		<link>https://jessewarden.com/2016/04/experiences-in-managing-software-development-through-kanban-trello.html</link>
		
		<dc:creator><![CDATA[JesterXL]]></dc:creator>
		<pubDate>Sat, 16 Apr 2016 20:02:57 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[angular]]></category>
		<category><![CDATA[bdd]]></category>
		<category><![CDATA[behaviordrivendevelopment]]></category>
		<category><![CDATA[cucumber]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[gherkin]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[leadership]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[protractor]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[testdrivendevelopment]]></category>
		<category><![CDATA[trello]]></category>
		<category><![CDATA[unitests]]></category>
		<guid isPermaLink="false">http://jessewarden.com/?p=5112</guid>

					<description><![CDATA[Introduction On my last project, I managed a team developing an application to manage hospitality locations. Given our requirements were constantly in flux, the contracts were on a short cycle, and the team was generally new to enterprise software development, I chose a Kanban style approach to managing and delivering it. I wanted to share [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1>Introduction</h1>
<p>On my last project, I managed a team developing an application to manage hospitality locations. Given our requirements were constantly in flux, the contracts were on a short cycle, and the team was generally new to enterprise software development, I chose a Kanban style approach to managing and delivering it. I wanted to share with you the rationale, methodology, challenges, and the surprising change to my role while on the project.<br />
<span id="more-5112"></span></p>
<h1>Why Kanban vs Scrum?</h1>
<p>Scrum has too many meetings, requires a well groomed backlog, and assumes senior developers so that they canÂ accurately task &amp; plan their stories.</p>
<h2>Junior to Mid-Level Team</h2>
<p>Given I was running my mid-level team in an Enterprise setting, I knew others would be more than happy to sabotage our teams productivity with meetings of their own. Part of the solution, not part of the problem. New team members, both onshore and offshore, who I expected to be reasonably cross functional whether they liked it or not, needed all the time they could to focus and learn quickly.</p>
<h2>No Solid Requirements</h2>
<p>Given staffing wasÂ changing bi-weekly with an my on-going effort to teach the Subject Matter Experts (SME&#8217;s) turned Business Analysts (BA&#8217;s) how to create properly groomed stories, there wasn&#8217;t anything the team could commit to within a reasonable timeframe. For example, it took us 8Â <a href="http://programmers.stackexchange.com/questions/176063/how-to-be-successful-at-bdd-specifications-workshops">workshops</a>Â over 3 weeks to get to a solid understanding of what we thought we were building.</p>
<h2>No CICD</h2>
<p>We also had no buildÂ nor <a href="https://en.wikipedia.org/wiki/DevOps">DevOps</a>Â in place to facilitate <a href="https://www.thoughtworks.com/continuous-integration">ContinuousÂ Integration</a> and <a href="https://www.thoughtworks.com/continuous-delivery">Continuous Delivery</a>.Â Thus we had no ability for weeks to deliver a working, high quality feature because there was no build to allow Developers &amp; Quality Assurance toÂ verify quality, nor server to deploy it to.</p>
<h2>No Roles, Just Fullstack / Cross Functional</h2>
<p>Having a <a href="https://www.mountaingoatsoftware.com/agile/scrum/product-owner">Product Owner</a> assumes you have someone either in Business, or who represents them, that knows what to build. The client asked us to use our expertise to help them out in true Consulting style.Â Thus there was no Product Owner.</p>
<p>There was no need for a <a href="http://whatis.techtarget.com/definition/scrum-master">Scrum Master</a>. <a href="https://www.mountaingoatsoftware.com/agile/scrum/sprint-planning-meeting">Sprint Planning</a>Â was pointless because we couldn&#8217;t plan 1 to 2 weeks in advanced since high level Epic&#8217;s were still beingÂ both defined, priced, and architecturally validated. ForÂ months. I already knew what the team was working on, and so did they, by their small Trello cards. If people had blockers, they asked me or the team over <a href="https://slack.com/">Slack</a> andÂ we collectively resolved it. There was no need for <a href="https://www.mountaingoatsoftware.com/agile/scrum/sprint-retrospective">Retrospectives</a> because there were no Sprints since things changed daily so you couldn&#8217;t effectively reflect on what happened the past week because it was ever changing.Â There were no roles beyond everyone coding the client, server, and some of the DevOps together.</p>
<p>Scrum would of beenÂ lot of ceremony with noÂ value.</p>
<h1>EnterÂ Kanban</h1>
<p>What <a href="https://www.atlassian.com/agile/kanban">Kanban</a> does well is allow you to change quickly, allow the team to be productive despite the chaos, with a continuous flow of delivering working software that&#8217;s in sharp contrast to the insanity outside their productive world. Unlike <a href="https://www.scrumalliance.org/community/articles/2014/july/scrum-vs-kanban">Scrum</a>, you much more quickly visualize the work going on &#8220;today&#8221; and identify problems sooner than later. Since the work in progress tends to be smaller, you can flush out bottlenecks in the process sooner. You can create <a href="http://leankit.com/learn/kanban/kanban-board-examples-for-development-and-operations/">swimlanes</a> and also identify which ones have bottlenecks.</p>
<h2>Flexible to Ever Changing Direction</h2>
<p>As each new day brought in new or modified requirements, role changes, and improved DevOps and API offerings, I wouldÂ changeÂ the Backlog to match &#8220;today&#8221;. Given we had no build, nor DevOps starting from scratch, I had a lot of flexibility to inject more build specific tasks so as to keep away from <a href="http://martinfowler.com/bliki/Yagni.html">Yagni</a>Â until we got a solid enough user story. &#8220;No user stories, nor API? No problem, get <a href="https://mochajs.org/">Mocha</a> working with our <a href="https://nodejs.org/en/">Node</a> code.&#8221; I&#8217;d attempt to stay 1 to 4 days ahead of my team. This was to ensure they were working on what I knew at the time to be real and providing client &amp; user value.</p>
<h2>Productive Despite Chaos</h2>
<p>Politically, it helped ensure we were being productive and thus visually showing we&#8217;re using the client&#8217;s money effectively with the fast ability to change course if they wanted something changed faster than aÂ Scrum Sprint would typically allow. This happened often.</p>
<h2>Learning the Team&#8217;s Strengths, Weaknesses, and Desires</h2>
<p>I had a new, junior to mid-level Development team and QA team, on a greenfieldÂ client (meaning no existing infrastructure or code), with ever changingÂ requirements, staffing, and contract lengths. Since the team was new and learning the entire <a href="https://en.wikipedia.org/wiki/Systems_development_life_cycle">Software Development Lifecycle</a> whilst me doing my best to shield them from politics, lack of a CICD process,Â lack of requirements, and nothing pre-built for them via <a href="http://yeoman.io/">Yeoman</a> generators / starter projects&#8230; I knew things would be slow and unpredictable at first.</p>
<p>What I didn&#8217;t know was the team. I didn&#8217;tÂ know their strengths, weaknesses, and most importantly, desires. Happy developers are productive developers. A lot of people say they are <a href="http://andyshora.com/full-stack-developers.html">fullstack</a> to ensure they are employable or because they are insecure that their speciality skill set cannot stand on it&#8217;s own. That or they like working in smaller, more cross functional groups.</p>
<p>As much as I expected the team to touch all parts of the development stack, including myself, you always have people who naturally gravitate somewhere, or like to be pushed to a particular area like API&#8217;s, services, components, or build level tasks. This should be encouraged just as much as being cross functional to get the most out of them, and the team. Additionally, as the project matures, you have less of a need to be cross functional as often, and tend to see people dive deep over time.</p>
<h1>Creating Tasks in Trello</h1>
<p>I also didn&#8217;t know the team&#8217;s ability to estimate their own tasks. It didn&#8217;t matter since the user stories weren&#8217;t defined enough for them to do so. Thus, I broke all tasks down for the team and included additional DevOpsÂ and QAÂ tasks as well into small units. We used <a href="https://trello.com/">Trello</a>, a real-time collaborative project board full of cards, to keep track of the work.</p>
<p>We had 6 columns in our Trello board, from left to right:</p>
<ol>
<li><strong>Bulletin Board</strong>: All the documents &amp; images for our project</li>
<li><strong>Undefined</strong>: Stories &amp; Tasks I didn&#8217;t have enough clarity on for the team to work on.</li>
<li><strong>Defined</strong>: Tasks I fleshed out enough toÂ ensure anyone on the team could work on with clearly defined success criteria, easily merged into a <a href="https://github.com/">Github</a> <a href="https://help.github.com/articles/using-pull-requests/">Pull Request</a>, and colored with the swimlane it belonged to: Testing, Client UI, Node API, DevOps, and <a href="https://en.wikipedia.org/wiki/User_experience_design">UX</a>.</li>
<li><strong>Working On It</strong>: What tasks were being actively worked on in the team. I ensured only 1 card per developer</li>
<li><strong>Done</strong>: For tasks that were done and developer tested, but not QA approved via them manually testing the Card&#8217;s associated PR.</li>
<li><strong>Approved</strong>: QA approved PR&#8217;s that merged into the dev branch and deployed via <a href="https://jenkins.io/">Jenkins</a> <a href="https://www.docker.com/">Docker</a> build.</li>
</ol>
<p><img fetchpriority="high" decoding="async" class="alignnone size-full wp-image-5113" src="http://jessewarden.com/wp-content/uploads/2016/04/trello-board.png" alt="trello-board" width="720" height="456" srcset="https://jessewarden.com/wp-content/uploads/2016/04/trello-board.png 720w, https://jessewarden.com/wp-content/uploads/2016/04/trello-board-300x190.png 300w" sizes="(max-width: 720px) 100vw, 720px" /></p>
<h2>Observe the Flow of Development&#8230;</h2>
<p>What happened next sold me on one of the key strengths of Kanban.</p>
<p>Every day I could immediately see problems. Instantly. It happened just like <a href="https://www.linkedin.com/in/andrea-ross-csm-sa-0a056b3b">Andrea Ross</a> <a href="http://jessewarden.com/2013/08/kanban-paper-airplane-factory.html">said it would</a>, and I&#8217;d see where bottlenecks were in the process. Each column in Trello would suddenly get overflowed with cards. You could be near blind, simply squint at the board so you couldn&#8217;t actually read anything and STILL SEE IT. The size of the columns told all: you have a bottleneck somewhere here.</p>
<p>It&#8217;s called <a href="https://stefanroock.wordpress.com/2010/03/02/kanban-definition-of-lead-time-and-cycle-time/">Cycle Time</a>: how long a piece of work goes from left to right. You want toÂ ensure once cards are created, they speed from Undefined to Accepted (left to right, start to finish) as quickly as possible. Typically that process isn&#8217;t linear; SOMEWHERE in the journey there is always a bottleneck.</p>
<h2>&#8230; Adjust as Necessary</h2>
<h3>How do I know I&#8217;m done?</h3>
<p>The first one was the success criteria I gave wasn&#8217;t clear enough. 90% ofÂ my created cards in Defined were moved back to Undefined by the team. Once I gave better success criteria, the development team started to chew through them. I wouldn&#8217;t hear from them for hours, then cards would suddenly start piling up in the Done column w/PR&#8217;s to boot.</p>
<h3>What does the UI look like?</h3>
<p>The second one was lack of good <a href="https://en.wikipedia.org/wiki/Website_wireframe">wireframes</a> and <a href="http://graphicdesign.stackexchange.com/questions/30860/what-is-the-difference-between-wireframes-and-mockups">designs</a> to illustrate both the layout and interactions of how the UI worked. We didn&#8217;t yet have budget for a UX resource, so I spent the time myselfÂ building low fidelity wireframes that were as accurate as possible and then creating design comps matching our <a href="https://www.google.com/design/spec/material-design/introduction.html">Material Design</a>Â style guide. I ensured all new cards had relevant design artifacts attached. If the wireframe/design comp changed, I&#8217;d move the card from Defined back to Undefined to ensure the team didn&#8217;t touch it. If it was too late, I&#8217;d create an iteration card to modify an existing piece of work with the updated UI/functionality change.</p>
<h3>How do I test itÂ works?</h3>
<p>The third one was the inability for QA to test functionality as cards started piling up in the Done column. QA didn&#8217;t yet have the build running locally, nor a QA environment to test on, nor a set of tools to help them automate it, nor a lead to help mentor them towards this.</p>
<p>So I picked up the torch, implemented <a href="http://www.protractortest.org">Angular&#8217;s Protractor</a> with theÂ <a href="https://github.com/mattfritz/protractor-cucumber-framework">Cucumber</a> version, then had a team member get an actual working feature through <a href="http://gulpjs.com/">Gulp</a>. I then worked with the QA team and BA&#8217;s to help define better Cucumber features through workshops so they were easier to test. I attached these as additional artifacts to each card where applicable.</p>
<p>Finally, we started Dockerizing our build to use throughÂ <a href="https://kitematic.com/">Kitematic</a> &amp; <a href="https://hub.docker.com/">DockerHub</a>.Â Given how hard it was to get <a href="http://redis.io/">Redis</a> + Node working the same between the Developer&#8217;s Macs and the QA&#8217;sÂ Windows machines with various lack of admin rights, this helped ensure things actually worked, quickly, without debugging install or configuration issues.</p>
<h3>Continually Improve</h3>
<p>This process never stopped. Sometimes it was smallÂ bottlenecks or even just blockers and we&#8217;d do our best to improve the process.Â Despite the politics, climate of unknowing, and constant readjustment of requirements &amp; processes&#8230; it felt good to be making both progress and improving the process.</p>
<p>Developers got to zone out by donningÂ headphonesÂ toÂ jam on code all day. Working codeÂ continually emerged as long as I fed this process.</p>
<p>We almost got to the point where the developers had no clue about the ever changing conditions on the ground with the client, ignored it when I brought it up, and focused strictly on questions about specific tasks. I&#8217;d call that a process win.</p>
<h1>Challenges</h1>
<p>It wasn&#8217;t all rose colored glasses.</p>
<h2>The Importance of Good, Upfront DevOps</h2>
<p>The main pain point throughout the entire process was our DevOps starting late in the cycle. Without a good CICD process, Scrum and Kanban don&#8217;t really seem to work all that well in tracking &#8220;actual work&#8221; because no actual work&#8230; works. Now, the CIÂ portion we knocked out of the park ourselves and quickly while waiting for confirmed requirements using Github and Jenkins in Docker + <a href="https://aws.amazon.com/">AWS</a>. Mostly. The CD, however, took awhile.</p>
<p>What we wanted at first was once a PR was approved, the code would, after a successful Jenkins build, deploy a Docker container of our code to a publicly accessible Amazon Web Service (AWS) instance. It took us about 3 months to get that going given our resource constraints &amp; timing. In the interim, we did a lot of <a href="https://en.wikipedia.org/wiki/Mock_object">mocks</a> and testing on localhost with <a href="https://ngrok.com/">ngrok</a> for demos.</p>
<p>Once our Docker deployment was working we started having code be deployed without our knowledge in a good way; the development teamÂ just focused on completing cards, and eventually the QA would focus on verifying manually what made it through the automated QA process to the server matched up.</p>
<p>The latter took forever simply because I was stretched too thin running the Development team, helping the DevOps team, doing my own wireframes and design comps, mentoring the BA&#8217;s to writeÂ awesome user stories via <a href="https://dannorth.net/introducing-bdd/">Behavioral Driven Development</a> to minimize our story grooming sessions, and keeping Senior Management in the loop.</p>
<p>Even with Analysts starting the DevOps, it&#8217;s clear having them full time on that endeavor payed off big time. In the future, I&#8217;m curious if I&#8217;d rather focus on that full time myself since it seems to have the largest, cross team impact regardless of whether the requirements, UX, and CIÂ are in a good or bad spot.</p>
<h2>Wireframing &amp; Designing at the Same Time vs. Staggered</h2>
<p>While me being the same person to do the wireframes made it easier to build design comps around them, it simnifically reduced the time I could spend with other teams.Â When the Undefined column would get too full, I&#8217;d have to spend the early part of the week ensuring I had enough information to wireframe. I&#8217;d then spend the weekend onÂ the design comps and then break them down into easily tackled, small PR tasks in Trello. This wasn&#8217;t sustainable and I knew it, but was banking on getting budget for UX resources.</p>
<p>While I was helping the BA&#8217;s, Development Team, and QA by ensuring the stories had a visual component toÂ help ensure we&#8217;re all on the same page of what theÂ user story looked like, I&#8217;d end up neglecting other things like refining those very stories, not unblocking the development team when they&#8217;d get stuck on build or architecture issues, nor helping push the DevOps team to help the QA do their job.</p>
<p>Rather than complain, I made a daily tactical call on what to focus on based on what Trello was telling me. Once we got the UX resourceÂ onboard, he worked aside the BA&#8217;s and that helped a ton; at that point I could just match the design comps to his wireframes, cutting my work in half + his were of insanely higher quality for talent &amp; focus reasons.</p>
<p>What this tells me is that unless I have a huge backlog of build and DevOps work in the pipeline, I&#8217;ll be hard pressed in the future to keep my development team busy with those tasks for a long timeÂ without quickly needing a proper UX team member(s).</p>
<h2>QA in Lean Engineering</h2>
<p>I didn&#8217;t have enough seniors to delegate management tasks to, and coupled with my CD problems, IÂ struggled to keep QA productive. While our developers were using <a href="http://eslint.org/">linting</a> <a href="https://www.typescriptlang.org/">compilers</a>, <a href="https://github.com/vigetlabs/grunt-complexity">complexity metrics</a>, unit and integration testing with <a href="https://www.youtube.com/watch?v=o6KSOs-N75o">end to end testing</a>, no one was laser focused on improving the latter part of the QA CD pipeline. I&#8217;d made some headway in getting QA involved in the beginning to help contribute to ensuring good user stories came out of our workshops. Where I struggledÂ was giving them enough of my time to teach them basic JavaScript coding, DevOps, and helping them walk through their testing plans on what we did have to start to develop a cadence.</p>
<p>A lot of this was we just didn&#8217;t have that much to test yet and the other was&#8230; well, nothing. I did the best I could working insane hours. If I were to do it again, I&#8217;d assign a senior dev interested in furthering their testing &amp; DevOps chops to work with them on owning the CD process, and ensuring a good quality pipeline.</p>
<p>In Lean Engineering, QA is no longer thrown code to test weeks or months later. Instead, they are brought into the beginning of the process and the end to improve the entire pipeline. You can&#8217;t do that if you don&#8217;t have a DevOps pipeline.</p>
<h2>User Feedback</h2>
<p>The same problem I had with QA I had with user feedback. Part ofÂ Lean engineering with Kanban is continuously improve not just the process, but the software. You do this by giving the working build to a user, testing it, and taking their feedback BACK into the process. While doing wireframes, I did informal and adhoc user interviews, created basic <a href="https://www.smashingmagazine.com/2014/08/a-closer-look-at-personas-part-1/">Persona&#8217;s</a> to differentiate who we were targeting, but did not get to validate this with released software until late in the cycle.</p>
<p>This actually wasn&#8217;t much of a bad thing, but rather, a challenge because a working build didn&#8217;t emerge until much later in the cycle, so we just did localhost demo&#8217;s &amp; testing vs. &#8220;use whatever device you have on your person or will use in your job&#8221;. I had already had extensive, informal discussions with the target users and really liked them as people. It just came up when I&#8217;d look at swimlanes via colors in Trello cards, the features had a huge cycle time in knowing if they were valid or not from user testing.</p>
<h1>Role Changes</h1>
<p>Traditionally in Agile, I&#8217;ve found I do most of my management efforts on Sprint Planning and post Retrospective. I ensure the requirements are rock solid and follow up on loose ends, and take action items seriously during retrospectives where new things need to be implemented or changed. The rest of the time I architect, pair program, and code.</p>
<p>In Kanban, it was very different. My role, daily, was to manage away problems for the team. Instead of a weekly or bi-weekly discovery, this was daily to hourly. I&#8217;d adjust based on what Trello was telling me. It gave me a greater insight into how my management efforts positively and negatively affected the team.</p>
<p>I also liked continually working with the team to improve our process. I&#8217;ve done that before in teams with Scrum, but process improvement usually fell behind &#8220;getting my story done&#8221; in terms of priority. In Kanban, fixing the bottleneck and improvingÂ the process is the priority.</p>
<p>I&#8217;ve found I really like Kanban. The consulting world is full of extremely hard software problems surrounded by politics and chaos. I love thoseÂ aspectsÂ and Kanban is now my tool of choice for managing teams within it.</p>
<h1>Citations</h1>
<p>I wanted to thank <a href="http://joelhooks.com/">Joel Hooks</a> forÂ telling me about Kanban being an alternative to ScrumÂ years ago. If Joel likes something, I typically trust his judgement that it must be good.</p>
<p>Also thanks to my manager, <a href="https://www.linkedin.com/in/mlancast">Matt Lancaster</a>, for teaching me about Lean engineering processes. You can see him speak about the processÂ below.</p>
<p><iframe src="https://www.youtube.com/embed/q2eyhFVWuKY" width="640" height="360" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p>Thanks to <a href="https://www.linkedin.com/in/eric-motazedi-648a0490">Eric Motazedi</a>Â for teaching me about BDD and why <a href="http://programmers.stackexchange.com/questions/176063/how-to-be-successful-at-bdd-specifications-workshops">workshops</a> are so important.</p>
<p>FinallyÂ thanks to the Richmond <a href="http://www.meetup.com/Capital-Kanban/">Capital Kanban</a> group for teaching me more about how <a href="http://jessewarden.com/2013/08/kanban-paper-airplane-factory.html">Kanban works</a>.</p>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Breaking the $100 Per Hour Barrier</title>
		<link>https://jessewarden.com/2013/09/breaking-the-100-per-hour-barrier.html</link>
					<comments>https://jessewarden.com/2013/09/breaking-the-100-per-hour-barrier.html#comments</comments>
		
		<dc:creator><![CDATA[JesterXL]]></dc:creator>
		<pubDate>Sun, 15 Sep 2013 15:01:29 +0000</pubDate>
				<category><![CDATA[Branding]]></category>
		<category><![CDATA[Business Process]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[1099]]></category>
		<category><![CDATA[consulting]]></category>
		<category><![CDATA[corptocorp]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[freelance]]></category>
		<category><![CDATA[money]]></category>
		<category><![CDATA[personalbranding]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[proposition]]></category>
		<category><![CDATA[rate]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[value]]></category>
		<category><![CDATA[w2]]></category>
		<category><![CDATA[w9]]></category>
		<guid isPermaLink="false">http://jessewarden.com/?p=4382</guid>

					<description><![CDATA[I get this question at least once a year so thought I would write a blog post on it to help others. &#8220;How do I make more than $100 per hour?&#8221;. I&#8217;ve learned a few ways and wanted to share them below. If you want to save time, simply do something other than programming such [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I get this question at least once a year so thought I would write a blog post on it to help others. &#8220;How do I make more than $100 per hour?&#8221;. I&#8217;ve learned a few ways and wanted to share them below. If you want to save time, simply do something other than programming such as flipping houses, investment banking, or being the boss of a mid size company. They make way more money than we do. If you still love programming, but just want to know your options for making more money, read on.</p>
<p>I won&#8217;t cover whether money can buy you happiness or not. All I&#8217;ll say is that for some people it does, and others it does not.</p>
<p>Many of the financial and tax nomenclature below applies to the USA, but the types of work are the same regardless of country.</p>
<p><span id="more-4382"></span><strong>Introduction</strong></p>
<p>Early on my consulting career, I found the maximum amount of money I could charge per hour was $100/hr. I had just assumed it was a simple linear graph: the more time that goes, the more experienced &amp; marketable I get, thus the more money I can make per hour. This wasn&#8217;t the main metric I used to measure my success, but it&#8217;s certainly how a lot of people, at least in America, do. &#8220;How much money do you make?&#8221;</p>
<p>As time went on, and I actually did get more experienced, I learned it&#8217;s not a linear line. A variety of things can happen, or not, to affect it&#8217;s elevation. Examples include not working for a couple months, whether intentionally or not. There are a variety of stages you can possibly go through, at least in software development, and I&#8217;m still learning all the possible vs. desirable ones.</p>
<p>The basics are starting out in an internship or job, then breaking away to do freelance, and finally starting a company.</p>
<p>Below are the 3 things that don&#8217;t work.</p>
<p><strong>W2 &#8211; Salaried Employee</strong></p>
<p>Salaried employees are those who work for a company, called a &#8220;job&#8221;, and that company takes out your State and Federal taxes for you. They pay a salary, a flat amount of money per 1 days worth of work, whether you actually work 1 hour or 12 doesn&#8217;t matter. They also offer &#8220;compensation packages&#8221; such as 401k matching, 20 or more vacation days, and 5 or more sick days. People put their own arbitrary dollar amounts on these which helps companies offset their lowered salaries.</p>
<p>The problem with W2 is that you eventually max out. I&#8217;ve yet to see a salaried programmer make more than $175,000, although most are $120,000. That&#8217;s gross, not net. That&#8217;s still only about $90 an hour if you take out vacation days and holidays. You&#8217;re replaceable, and there is only so much code you can produce in a given time on your own. Although there are <a href="http://www.dungeonsanddevelopers.com/">skill trees for development</a>, getting better doesn&#8217;t lead to making more money. You basically have to go into management, leadership, or sales to sometimes fully utilize all those software skills you know. There are SOME options for hybrid roles such as Enterprise Architects, people who dictate how to build things but don&#8217;t actually build the things. Sales Engineers are another. You travel with a Sales person and get their back when the clients ask highly technical questions. Sometimes you get to code, but they&#8217;re often just simple prototypes, not real projects.</p>
<p>Finally, W2 is perceived as a form of &#8220;stability&#8221;; something long term, something earned and deserved. Unfortunately, that&#8217;s how things were back in the 1940&#8217;s, not anymore. Regardless, the prophecy is self-fulfilling for some people, so they believe it to be true, and thus it is true even if it&#8217;s not.</p>
<p>Unless you actually want to get out of programming, W2 isn&#8217;t an option.</p>
<p><strong>1099 &#8211; Freelance</strong></p>
<p>Freelancers usually charge by the hour or project (obviously they like the former). They are synonymous with contractors: someone who works for the company but is their own business. Your own business can just be 1 person: you. You are ultimately responsible for all of your finances and taxes, thus you file a form for the IRS called a 1099. The common rule is when you get a paycheck, you immediately take 33%, round up, and shove into savings so you can pay once a month, 4 times a year, or once if you&#8217;re a slacker the taxes you owe the State you live in and the IRS. None of that includes your operating expenses like buying your own computer, contributing to your retirement, and paying your own medical insurance.</p>
<p>The key here, though, is you can pay those first, THEN get taxed on what you have left over using &#8220;pre-tax&#8221; money whereas in W2, you&#8217;re taxed twice: first on your paycheck and then whatever you buy with it, the IRS still assumes you made X per year. For example, lets say you make $100,000 per year. You then buy $50,000 worth of hardware, software, and office space. You then only owe $16,500 in taxes vs. $33,000 like you would as a W2. This desire to spend your pre-tax money, whether on stuff, services, or even contributing to retirement accounts like SEP IRA&#8217;s is yet another to balance in your time that has nothing to do with programming. W2&#8217;s don&#8217;t have to worry about any of this crap.</p>
<p>This amount of work is not to be understated. This is how many companies go out of business. It&#8217;s also a lot of work for 1 person to handle just 1 persons business finances, let alone all the time spent hustling to get clients. More importantly, though, companies bear this &#8220;burden&#8221; when hiring W2&#8217;s. This is why a lot more companies are going the 1099 route or hiring contractors for set projects, not providing benefits, nor the &#8220;free&#8221; tax services like <a href="http://www.bbc.co.uk/news/uk-24017011">Amazon and others are doing in the UK</a>Â and in the states.</p>
<p>There are a variety of reasons programmers go freelance. There is no growth potential at their W2 job. They don&#8217;t like the clients they&#8217;re working with and want to choose their own. They have short attention spans and want smaller projects. They hate the large code base they&#8217;re working on that&#8217;s messed up and they didn&#8217;t create, and want the opportunity to create their own. They want to utilize a completely different technology stack and there is no opportunity to do so at their current job.</p>
<p>Whatever the reason, the POTENTIAL exists for making more money than W2. Sometimes, you&#8217;ll make less. The reasons for those are also numerous. While you may get many high paying gigs, you may actually have many weeks or months with no work. While W2 has a steady paycheck, 1099 does not. Additionally, there is a cost of doing business that you now incur. Time spent on the phone, writing emails, going to meetings and conferences, writing books, blog entries, curating relationships with your content and others on social media; all of that takes a lot of time that no one is paying you for. Some of that could lead to getting a client to hire you to build something. Sometimes that client just wants free consulting, or is asking you and 9 other contractors to bid on a project and they just want you to do the quote for them with zero intention of actually hiring you.</p>
<p>The reasons are vast. The theory, though, is that you&#8217;re using a technology with either a local market (where you live) that has a need for your skills, a remote market (meaning you telecommute with clients you&#8217;ll never meet face to face), or both. Sometimes you&#8217;ll get many concurrent projects. While one project has slow communication and is long term, and other is more clear, and shorter. While you&#8217;d prefer to have both side by side, the companies hiring you, and their clients, usually dictate the schedule, and they don&#8217;t care that you haven&#8217;t had any work all June and July, and now 3 companies want to start work immediately in August all at the same time. Sometimes that can work; other times it can sacrifice your code quality so you can only get one.</p>
<p>Bottom line, this is where most programmers get stuck. If they do manage to break the $100/hr barrier, it&#8217;s because they got a fixed bid contract and just did it in a shorter time. Meaning you produce the work for this amount of money, no more. If you work 4 hours or 40, you still get paid the lump sum. So, if you can do 40 hours worth of work for less than 40, then great, you just made more than $100/hr. Sadly, this is just 1 week out of the year. It also doesn&#8217;t factor in the cost of doing business to actually get that contract signed.</p>
<p>1099 is a mindset. You either like the freedom, the &#8220;harder I work, the more I get paid&#8221;, or just the lifestyle of having your clients&#8230; even if those clients are just like a W2, only with none of the benefits. Worse, many large companies cannot do work directly with 1099&#8217;s, and want to do W9. While that&#8217;s fine, it&#8217;s usually assumed those W9&#8217;s are a preferred vendor, or have workman&#8217;s comp and a lot of other bs that isn&#8217;t needed and doesn&#8217;t matter. If you get the W9, great, but if you&#8217;re not a preferred vendor and you haven&#8217;t convinced the company to go through the process, you&#8217;ll simply have some company you&#8217;ve never heard of take $10 to $30 an hour off your paycheck. Horrible.</p>
<p>Independent Contractor programmers, someone who owns a company strictly as a tax shelter and is a single person, aren&#8217;t usually paid more than $100/hr outside of California, New York, or Boston. So 1099 is usually a no go (exceptions below).</p>
<p><strong>Recruiters</strong></p>
<p>Recruiters are a waste of your time, and theirs.</p>
<p>Many companies lack the resources to &#8220;find you&#8221;. Even if you make yourself easy to find on the internets, they often won&#8217;t look. Swimming through mountains of programmer social media is less savory than paying a fee to someone to &#8220;find me someone with these skills&#8221;. While smaller companies who recognize the value of good talent DO use Github, LinkedIn, and Google to search for people such as yourself, they aren&#8217;t going to dump bling into your lap.</p>
<p>Thus, recruiters are often the gateway to jobs nowadays. Many in large companies like recruiters because it&#8217;s not their money being spent, and a litany of resumes arrive in their email with them not having to do anything but ask HR to send a list of requirements of what they need. As such, most job sites nowadays such as Monster, Dice, LinkedIn, etc. are owned by recruiters. I say owned because finding a job posting that ISN&#8217;T a recruiter is rare. If it&#8217;s not, the likelihood of someone with your skills getting past the often horrible interview web applications or HR wall (&#8220;Yes, mam, as I&#8217;ve told you, MVP is just like MVC, and Ember and Backbone share many characteristics, so if you know one, you can easily learn the other and be prod&#8230; mam? Hello?&#8221;)&#8230; all for W2 position we&#8217;ve already talked about is a no go.</p>
<p>They&#8217;ve seen their business explode since the information age started back in the 80&#8217;s and 90&#8217;s. We have some of the worst unemployment, underemployment, and those giving up and leaving the workforce since 1979. This means a few things.</p>
<p>First, it&#8217;s just &#8220;normal&#8221; nowadays that mid-size and large companies use them. You may not like the game, so you can either get played by it, play it, or make your own rules.</p>
<p>Second, a lot of them are NOT there by choice. We have a swath of college educated youngsters with degrees not in the Art disciplines who just can&#8217;t find jobs that their degrees implied. Many went to recruiting because they had no other choice.</p>
<p>Therefore, you shoulder never be rude to them for the above reasons. Yes, I troll them every chance I get, but that&#8217;s in good fun. You should never be rude; you never know when you have zero choice but to go through a recruiter for a job. We&#8217;re extremely lucky in software, and history shows it will not last.</p>
<p>Keep in mind larger consulting firms like Accenture, Deloitte, IBM, Randstad, etc. are hybrid. They sometimes act like staffing companies, but often have internal divisions that do consulting. Meaning, although they recruit you, can you get above $100/hr rates with them which often includes lots of travel, but is still longer term projects. Still, better to err on the side of caution; bring up money first to save yourself time.</p>
<p>That said, again, recruiters are a waste of your time, and theirs. I made $80,000 at one large company, and another $140,000. We went through the same recruiting firm for the same position. When I once was hiring for my client, the recruiting firm was charging $200/hr and paying him $80/hr. Finally, recruiter rates are beholden to the location in which they are hiring. You won&#8217;t get New York city rates in Nashville even if the recruiting firm is national; companies, even for telecommuters, often pay the local rate.</p>
<p><strong>5 Solutions</strong></p>
<p>So if &#8220;a job&#8221; caps out at or below $100/hr, freelance has no growth potential with maintenance pain, and recruiters are worthless, what to do? You have 5 options that I&#8217;ve seen work. I&#8217;m sure there are more, I&#8217;m just basing the below on what&#8217;s worked for me, others I know, and what I&#8217;ve seen work from past clients who&#8217;ve done it.</p>
<ol>
<li>Build a Personal Brand</li>
<li>Score a large client</li>
<li>Find a Closer</li>
<li>Find a network and form a firm</li>
<li>Start a business</li>
</ol>
<p><strong>Build a Personal Brand</strong></p>
<p>I&#8217;ve written about <a href="http://jessewarden.com/2006/10/personal-branding-checklist.html">Personal Branding</a>Â 7 years ago. I even <a href="http://www.youtube.com/watch?v=R4HP08mlefk&amp;list=PLZEZPz6HkCZl7gJELOkwz5WF4pTahlUB7">talked in depth about Personal Branding in my video series</a> about becoming a successful freelancer. Make no mistake; the level of effort is inversely proportional to how bad ass you are. This includes either your talent &amp; technical prowess at programming, your charisma, or both. The less awesome you are, the harder you have to work. That&#8217;s called life.</p>
<p>Worse, if you cultivate a rock star status, whether on purpose or by accident, fame is fleeting. Trends in software occur just like they do in the music industry. A library you wrote, a blog post that became popular, or an app that scored you money and fame&#8230; is only temporary and you can only milk it so long. A personal brand is something that is cultivated often, like a garden. The decisions you make in the beginning help guide it and create expectations amongst those in the industry.</p>
<p>Writing blog posts, contributing to open source, releasing helpful code, speaking at conferences, and writing books are all staples of building a personal brand for yourself. Additionally, networking and PARTICIPATING in the industry, even if it&#8217;s just your small niche, are important. You want people to like you, you want them to want to work with you, and most importantly, THEY should be selling the client on you, not you selling the client on you. <a href="http://sethgodin.typepad.com/seths_blog/2008/03/why-bother-havi.html">You don&#8217;t have a resume</a>.</p>
<p>Those who have cultivated their epics skills/personality/brand are rife. Martha Stewart, Rachel Ray, Dr. Oz, Oprah, Craig Ferguson, Conan O&#8217;Brien, etc. In our industry, <a href="http://gskinner.com/blog">Grant Skinner</a>, <a href="http://en.wikipedia.org/wiki/Bruce_Eckel">Bruce Eckel</a>, <a href="http://en.wikipedia.org/wiki/Linus_Torvalds">Linus Torvalds</a>, <a href="http://ejohn.org/">John Resig</a>, <a href="http://www.paulirish.com/">Paul Irish</a>, <a href="http://joelhooks.com/">Joel Hooks</a>, <a href="http://infrequently.org/">Alex Russell</a>, <a href="http://www.joshuadavis.com/">Joshua Davis</a>, <a href="http://www.joa-ebert.com/">Joa Ebert</a>, and <a href="http://ricardocabello.com/blog">Ricardo Cabello</a> (<a href="http://www.mrdoob.com/">Mr Doob</a>).</p>
<p>You may not know some of them, which is fine, but also potentially brings up a good point. Some of them spend more time using their talents, and the fame is just a byproduct of that, whilst others get the marketing angle, and help accentuate their work. People like me are 90% big mouth, 10% contribution. Any combination works. The point is, it&#8217;s hard work, but less so if you&#8217;re talented. And you can&#8217;t stop, you have to keep marketing yourself, either through continually producing awesome, or continually producing just enough awesome, and marketing like crazy.</p>
<p>If you&#8217;re famous, you can easily charge more than $100/hr for freelance work even for work that&#8217;d normally go for $80/hr. Just depends on the clientele.</p>
<p>Con? It&#8217;s a lot of work. All the time. Sometimes you have to start at square one if the tech changes. It can be done and repeated and is easier in a objective discipline like programming vs. the entertainment industry.</p>
<p><strong>Score A Large Client</strong></p>
<p>I&#8217;ve seen many large agencies and software firms sprout up like this. You&#8217;re 1 dudette/dude, 2 friends, or maybe you just know a lot of people you could sub-contract for design and other back-end/front end development if you could only get a large client. What happens is, the contractor gets a large client, can&#8217;t handle the size of the project alone, hires people, and voila: a company.</p>
<p>The money comes into play from 2 places. First, the job is obviously larger, thus requires more money to pay more people for more time working.</p>
<p>Second, those more people do not get the same amount you do. There are a variety of factors that dictate how much a designer gets, a front end developer gets, a back-end developer, manager, project manager, qa, etc. The more you make is inversely proportional to how much you pay your sub-contractors/employees. The less you pay, the more you make. Except it&#8217;s not you, it&#8217;s the company&#8230; or are you just paying yourself? That gets into running a business which I won&#8217;t cover here. Obviously if they&#8217;re an idiot contractor who&#8217;s good at coding but sucks at math, you can&#8217;t pay them less than living expenses, else they&#8217;ll lose their house/apartment/flat in the middle of the project, and that&#8217;s no good. Yes, you&#8217;ll get people like this.</p>
<p>You then bill those people out at a higher rate. This is how it works with big clients. Large company hires large firm. Large firm hires smaller firm. Smaller firm hires you as a 1099 contractor. The pay goes like this: Large company pays Large firm $300/hr. Large firm pays Smaller firm $150/hr. Smaller firm pays you $80/hr. Now that you&#8217;re the Small firm, you now get the $150/hr&#8230; and you&#8217;re sub-contractors get the $80/hr. Make sense?</p>
<p>The more sub-contractors you get, the longer the project is, or both results in more money in your pocket; well over $100/hr.</p>
<p>How does one score such a Large client? One way, you can become a preferred vendor/consultant/provider of your favorite technology stack. Whether it&#8217;s the company that makes it, or those who have a vested interest in it, one things for sure: those who make technology are not consulting firms. They focus on making tech, not forcing a bunch of people to travel to some random location to build something for random business for a bunch of dough. YOU and yours are the ones who actually represent that company and do the actual work. Obviously they have small arms in the sales team that do this, but they usually don&#8217;t scale that side of the business.</p>
<p>Another way is networking with past clients. One way to utilize a network you&#8217;ve created is to contact past clients&#8217; clients directly if your non-compete is up. For example, lets say you worked for a company as a 1099 that worked on a project for Nike. You did a great job, and had a good relationship with the company, and even had the opportunity to work with some people at Nike directly. Most smart companies will ensure you never talk to them for this very reason. 1 year+ later (or whatever your non-compete states), you reach out to them and ask if they have any work. If you kicked ass, they&#8217;ll remember you. Suddenly, that cut in pay is gone since you can form a direct relationship with them either as W9 (corp to corp), and possibly become a preferred vendor for that company: 1 of many companies who gets first dibs on projects they outsource.</p>
<p>Other times, you just get lucky as a Freelancer, and you portray yourself as a &#8220;company&#8221; with 6 people (who are really part time sub-contractors). Thus, larger companies will come asking you to deliver something quite large. It&#8217;s not dishonest at all if you truly can deliver. I&#8217;m making the assumption here you&#8217;ve worked on multi-person projects and can actually do what you say you can do. It&#8217;s all about how sell yourself. Example: <a href="http://jessewarden.com">jessewarden.com</a> vs. <a href="http://webappsolution.com">webappsolution.com</a>.</p>
<p>Don&#8217;t be afraid to write contracts that are too large for you to handle. If they were, you wouldn&#8217;t have the cajones to actually move forward with it, and finding resources for a project that&#8217;s too big for you is a good problem to have. It&#8217;s already assumed at this point that you know a bunch of freelancers, and might have even put them in a spreadsheet to list their name, contact info, last known rate, and area of speciality. BUILD UP THAT NETWORK and then USE IT.</p>
<p><strong>Find A Closer</strong></p>
<p><iframe src="//www.youtube.com/embed/8kZg_ALxEz0" width="640" height="480" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p>All closers are salesman, but not all salesman are <a href="http://www.youtube.com/watch?v=8kZg_ALxEz0">closers</a>. Many companies spring out from a talented closer who scores that big client, whether from a cold call or networking. It&#8217;s like the previous &#8220;Score A Large Client&#8221;, except there&#8217;s no work on your part: you just unleash the closer and wait for her/him to catch you a big fish.</p>
<p>I&#8217;ve seen some successful firms/companies who are basically run by these closers. Many are partnerships where a talented programmer partnered with a talented closer and together they built a company.</p>
<p>Actually FINDING one is where I can&#8217;t help you. Most either formed the company on their own or the technical person had a childhood/college/previous company relationship beforehand.</p>
<p>Commissions don&#8217;t help, either. &#8220;Dude, I know 9% is the norm, but I&#8217;ll give you 20%.&#8221;</p>
<p>&#8220;Oh yeah? How much y&#8217;all pulling in a year?&#8221;</p>
<p>&#8220;Uh&#8230; I guess $1 million.&#8221;</p>
<p>&#8220;My current company gives me 9%, but they rake in 30 million. Thanks for the free beer, though!&#8221;</p>
<p><strong>Find a Network and Form a Firm</strong></p>
<p>You can form a firm in 2 ways. Basically, you do #1 where you&#8217;ve either established a name for yourself, and find like minded people who want to do the type of work you want to do with the types of clients you like to work with.</p>
<p>The other option is just like her majesty&#8217;s life advice: surround yourself with those better than you. You basically find a group of people, at least 1 but hopefully more, who think like you do. You all agree to find work, share work if you&#8217;re too busy, or help each other out on projects WITHOUT a premium; meaning you don&#8217;t take a cut of the rate from each other. This makes some freelance gigs a lot easier because you can borrow people for helping you out on some projects. Since they make you a priority, and there is no worry about rate negotiations, it&#8217;s a no brainer. THAT has some serious value to clients that you should up-sell. Most clients who know what they are doing recognize that already when dealing with companies that have more than 1 person vs. an independent contractor&#8230; sometimes.</p>
<p>More importantly, though, is the hope that they already have the preexisting network contacts described above. Even better, you can combine networks. It actually goes over quite well when you describe to the client that you&#8217;ve left the previous firm to found your own since that client wants you anyway. They&#8217;ll often assume you formed it to work with like minded individuals and you&#8217;re still in the idealistic and prove yourself/your company phase.</p>
<p>This is basically what I did when one of the firms I was working with exploded on itself. Preferred vendor, existing client base to get opportunities from, and 3 guys who all have different strengths that compensate my weaknesses, specifically 2 of them doing back-end Java (I&#8217;m 100% front end). The bigger clients want <a href="http://webappsolution.com">Web App Solution</a>, not <a href="http://jessewarden.com">Jesse Warden</a>.</p>
<p>This is the opposite if your brand is really powerful, though. For example, some strong personal brands form a company, and larger companies will hire them strictly because they want that one person&#8217;s expertise/clout/reputation.</p>
<p>$101-$119/hr is no mans land. Once you have a company that consists of individuals, not just a bunch of subs, $120 on up gets tons more likely&#8230; because the sum is greater than its individual parts. That has a lot of value to companies who need you to scale, be used to scaling quickly, and have a network of your own to acquire certain resources for certain types of projects (UX, design, business analysts, etc). That and it&#8217;s easier for the CPA and lawyers to swallow since you&#8217;re a more legit entity to do W9 work with for tax and legal purposes.</p>
<p>Keep in mind, while it&#8217;s obviously nice to have a track record that you can show to existing clients of your firm helping companies build awesome, often it&#8217;s just as accurate to use past clients as that track record. For example, all of your past freelancing clients you can include in your company&#8217;s repertoire of past clientele.</p>
<p>If your partners, or even just sub-contractors don&#8217;t have a network, you better have one&#8230; else you&#8217;re just fishing for the big client with extra lines in the water.</p>
<p><strong>Start A Business</strong></p>
<p>Everything I&#8217;ve talked about up to this point has been B2B: Business to Business. Some company hires your company. However, that&#8217;s not where the real money is for software development. The real money is in products. Now, granted, you can create products for a certain set of businesses, thus making you a B2B, vs. targeting consumers as a B2C, but the point here is you are NOT a services company: You&#8217;re a product company.</p>
<p>If a clients software project fails, your company doesn&#8217;t fail. If your a product company, and your product fails, your company fails. Huge difference.</p>
<p>Products also have the nice ability to sometimes make passive income. That means, while you sleep they make money. Some products require companies around them to build and support them, hence the current state of Silicon Valley. The amount of effort gets less every day, as does the cost of entry.</p>
<p>While there is more risk, having hundreds or even thousands of people pay $10/a month for your software is a lot more appealing then hustling multiple times a year to get a client to pay for the next few months. You can flip that around, too; a few dozen customers paying you $250 a month.</p>
<p>While there are a bunch of great <a href="http://en.wikipedia.org/wiki/Minimum_viable_product">articles</a> and <a href="http://www.amazon.com/Rework-Jason-Fried/dp/0307463745/ref=sr_1_1?ie=UTF8&amp;qid=1379010456&amp;sr=8-1&amp;keywords=37signals">books</a> on the subject, here&#8217;s the general idea:</p>
<ol>
<li>Find a problem you think you can solve with software, and if it has competition, you think you can solve it better.</li>
<li>Build a prototype in less than a week.</li>
<li>Show it a potential customer and ask them if they&#8217;d pay for it.</li>
<li>Iterate weekly/bi-weekly until they do.</li>
<li>Get more customers.</li>
</ol>
<p>Eventually you&#8217;ll reach what Paul Graham calls <a href="http://paulgraham.com/ramenprofitable.html">Ramen Profitable</a>. It&#8217;s a way longer ramp up time, but has a potentially greater reward. It&#8217;s also assumed you&#8217;ll fail multiple times getting there which is hard for some people to swallow in a culture that&#8217;s all about winning and &#8220;the thought of losing&#8230; is HATEFUL to Americans.&#8221; &#8212; Patton.</p>
<p>If you ain&#8217;t failin&#8217;, you ain&#8217;t trying hard enough, sucka!</p>
<p><strong>Dangers</strong></p>
<p>There are a few potential dangers you need to be aware of going the above route.</p>
<p>First, you need to be flexible. Are you willing to accept work at or below $120/hr? If not, can you survive on savings until you find a client? The &#8220;I deserve&#8221; or entitlement mentality is dangerous. You don&#8217;t get what you deserve, you get what you negotiate. Some companies just don&#8217;t have that kind of money.</p>
<p>Second, it&#8217;s hard to go back to salaried positions once you&#8217;ve gone the Firm or Freelance route. The startup route is a lot easier, and the freelance somewhat easier. Often, if the company doesn&#8217;t know your brand, it doesn&#8217;t matter.Â You need to be careful how you pitch your &#8220;long term consulting&#8221; or &#8220;short term freelance&#8221;.</p>
<p>If you ran a company, you suddenly know a lot about the game, and companies get nervous when you want to quit that and go back to W2. Sometimes that&#8217;s uber valuable to them, but as a front line software developer, it&#8217;s sometimes hard for them to see that value. Others get nervous if they see a lot of short term gigs on your LinkedIn and/or resume and you suddenly apply for a long term position. If you talk to a business owner, it&#8217;s an easier conversation; they get it. Other times this can backfire; &#8220;If you&#8217;re running a business, why come work for me? What about your competing interests?&#8221;. If you talk to an HR, manager, or senior developer, they might not understand at all. Remember, the truth of your history is written by you; modify your social media and resume to match the position you&#8217;re going for.</p>
<p>Also, be aware it&#8217;s a new world. Going back to the old one can be hard. You can sometimes forget what it&#8217;s like to NOT speak about business and software in the same sentence&#8230; vs. just software. This is reflected in your resume, social media, and conversations with people.</p>
<p><strong>Conclusions</strong></p>
<p>If you want to break the $100/hr barrier, getting a salaried position, being a single freelancer, or wasting your time with recruiters won&#8217;t get you there. There are a few exceptions with freelancing, especially on the back-end. Many Ruby/Python/Scala etc. guys can charge $200/hr to $300/hr in the Bay Area. The key, though, isn&#8217;t getting a project for that much money, it&#8217;s getting a career where that&#8217;s the norm.</p>
<p>Whether building a strongly recognizable personal brand, scoring a large client which is a catalyst for creation and growth, finding a closer, forming your own firm, or even creating a product that itself validates the company around are just 5 ways in which you can break that barrier. I&#8217;m sure there are more.</p>
<p>Even not being successful, you still learn a ton, and if you&#8217;re a long time software developer, constantly learning and re-learning is probably something you already do anyway. So it&#8217;s ok to try some of the things above and fail, especially the last one. I&#8217;ve had a lot of failures. I even once refused work for 6 months in an attempt to learn how to double my rate. I failed but I <a href="http://jessewarden.com/2010/08/what-i-learned-about-trying-to-double-my-rate.html">learned a ton</a>.</p>
<p>I also posted a companion video to this post, embedded below, that <a href="http://youtu.be/KfXLSj2xWUE">you can watch</a>.</p>
<p><iframe loading="lazy" src="//www.youtube.com/embed/KfXLSj2xWUE" width="640" height="480" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
]]></content:encoded>
					
					<wfw:commentRss>https://jessewarden.com/2013/09/breaking-the-100-per-hour-barrier.html/feed</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Getting Complex Designs Into Flex Slides</title>
		<link>https://jessewarden.com/2011/06/getting-complex-designs-into-flex-slides.html</link>
					<comments>https://jessewarden.com/2011/06/getting-complex-designs-into-flex-slides.html#comments</comments>
		
		<dc:creator><![CDATA[JesterXL]]></dc:creator>
		<pubDate>Sat, 11 Jun 2011 15:03:09 +0000</pubDate>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[workflow]]></category>
		<guid isPermaLink="false">http://jessewarden.com/?p=2722</guid>

					<description><![CDATA[My slides from FITC Toronto 2011. Obviously a lot of supporting code needed for context, but still some good info on their own for getting complex designs into Flex web, desktop, and (some) mobile. Getting Complex Designs into Flex &#8211; FITC 2011 View more presentations from Jesse Warden Download &#8211; Keynote &#124; Powerpoint &#124; PDF [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>My slides from <a href="http://fitc.ca">FITC</a> Toronto 2011. Obviously a lot of supporting code needed for context, but still some good info on their own for getting complex designs into Flex web, desktop, and (some) mobile.</p>
<div style="width:425px" id="__ss_8279518"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/jesterxl/getting-complex-designs-into-flex-fitc-2011" title="Getting Complex Designs into Flex - FITC 2011">Getting Complex Designs into Flex &#8211; FITC 2011</a></strong> <object id="__sse8279518" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=preso-fitc-2011-110611084314-phpapp01&#038;stripped_title=getting-complex-designs-into-flex-fitc-2011&#038;userName=jesterxl" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse8279518" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=preso-fitc-2011-110611084314-phpapp01&#038;stripped_title=getting-complex-designs-into-flex-fitc-2011&#038;userName=jesterxl" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object> </p>
<div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/jesterxl">Jesse Warden</a> </div>
</p></div>
<p>Download &#8211; <a href="http://jessewarden.com/archives/presentations/fitc/preso-fitc-2011.key.zip">Keynote</a> | <a href="http://jessewarden.com/archives/presentations/fitc/preso-fitc-2011.ppt.zip">Powerpoint</a> | <a href="http://jessewarden.com/archives/presentations/fitc/preso-fitc-2011.pdf">PDF</a> | <a href="http://jessewarden.com/archives/presentations/fitc/preso-fitc-2011-images/">Images</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://jessewarden.com/2011/06/getting-complex-designs-into-flex-slides.html/feed</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
	</channel>
</rss>
