<?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>Anna Filina</title>
	<atom:link href="http://annafilina.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://annafilina.com/blog</link>
	<description>Project rescue expert</description>
	<lastBuildDate>Sat, 18 May 2013 01:51:34 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Goals, Strategies and Tactics</title>
		<link>http://annafilina.com/blog/goals-strategies-and-tactics/</link>
		<comments>http://annafilina.com/blog/goals-strategies-and-tactics/#comments</comments>
		<pubDate>Mon, 29 Apr 2013 13:06:23 +0000</pubDate>
		<dc:creator>Anna</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[FooLab]]></category>

		<guid isPermaLink="false">http://annafilina.com/blog/?p=1012</guid>
		<description><![CDATA[Many people confuse the three concepts. For a business to grow or for a project to succeed, these need to be well understood. I will use a driving navigation system to explain them.
Before you set out, you need a destination, a goal. A goal needs to be measurable, that is, you need a way to<div><a href="http://annafilina.com/blog/goals-strategies-and-tactics/">Read the rest...</a></div><br />]]></description>
			<content:encoded><![CDATA[<p>Many people confuse the three concepts. For a business to grow or for a project to succeed, these need to be well understood. I will use a driving navigation system to explain them.</p>
<p>Before you set out, you need a destination, a goal. A goal needs to be measurable, that is, you need a way to confirm that you have achieved it. When driving, that usually means arriving at the specified coordinates. Additionally, you may want to get there within no more than 40 minutes.</p>
<p><strong><span id="more-1012"></span></strong></p>
<p><img class="alignright size-full wp-image-1028" title="GPS on a dasboard" src="http://annafilina.com/blog/wp-content/uploads/gps.jpg" alt="" width="300" height="201" />Once you know where you are going, you need a general route. In business, it is called a strategy. You don&#8217;t need to know every turn in advance. Conditions may change: traffic, construction or other unforseen circumstances that may slow you down or prevent you from getting to your destination. That is why your strategy usually goes like this: go west, then south, and use highways to save time and gas. In business, those in control of the resources pick the strategy. A strategy is long-term and should not change much. That is why it needs to be very general, without specifics.</p>
<p>Once you set out, you will be making tactical decisions. Which street is best to get to the highway? Which streets to avoid? Field experts are the best people for that. They know traffic patterns based on time of the day or time of the year. They are aware of sporting events and which streets are affected. They know where the construction sites are. They know traffic lights, speed limits and other road signs that may have an impact. Tactics are specific actions. They are short-term decisions that follow the strategy in order to best accomplish a goal.</p>
<p>Now go, drive safely and efficiently to your destination.</p>
]]></content:encoded>
			<wfw:commentRss>http://annafilina.com/blog/goals-strategies-and-tactics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How Much Does An App Cost?</title>
		<link>http://annafilina.com/blog/app-cost/</link>
		<comments>http://annafilina.com/blog/app-cost/#comments</comments>
		<pubDate>Mon, 22 Apr 2013 13:36:31 +0000</pubDate>
		<dc:creator>Anna</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[FooLab]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://annafilina.com/blog/?p=1007</guid>
		<description><![CDATA[A montreal-based newspaper recently released a new mobile product to read news. It&#8217;s very nice, but it cost them 40 million and took 3 years to ship, with some 100 people on the team. My company has enough experience with news corporations and other industries to know that there was a lot of waste. My<div><a href="http://annafilina.com/blog/app-cost/">Read the rest...</a></div><br />]]></description>
			<content:encoded><![CDATA[<p>A montreal-based newspaper recently released a new mobile product to read news. It&#8217;s very nice, but it cost them <strong>40 million</strong> and took 3 years to ship, with some 100 people on the team. My company has enough experience with news corporations and other industries to know that there was a lot of waste. My associate stated on social media that he could save them millions on their next project. It&#8217;s what we specialize in: generating millions in ROI for our clients.</p>
<p><strong><span id="more-1007"></span></strong></p>
<p>Without hesitation, developers of that product reacted. They were outraged, saying that the <strong>budget was entirely justified</strong> due to the complexity of the project. The fact that they felt targeted at all is a bad sign, because we certainly didn&#8217;t set out to lay blame. To <strong>deny that anything at all could have been done better</strong> is a lie to oneself and to the client. Have you ever finished a project thinking how things could have gone better? Hopefully you always do. I have been in the field since 1997 and I still improve.</p>
<p>So why would a developer fervently defend a ridiculous budget and what does it mean to the company?</p>
<p>Such a reaction is mostly due to an inflated ego. Everyone likes to think that their project is ultra-complex, the hardest thing ever built. But complexity is relative to one&#8217;s experience. An information system built on PHP with a mobile app on top is hardly worth 40 million unless a lot of the money was spent unwisely, in one way or another.</p>
<p>Regardless of what caused the project to blow out of proportion, the fact that people would defend such a big budget should alarm the company. What it means is that these developers would <strong>gladly use up all of the company&#8217;s resources</strong> if they could justify it. It means that they&#8217;re too good to have done anything better. It means that they would turn down expert advice even if it meant saving a lot of money for their client.</p>
<p>Why not save money? After a quick research into the names of the developers who replied, it turns out that they are all contractors, not employees. Indeed, longer projects gives them job security. Should an expert come in and find ways to cut production time in half, they would be looking for a new &#8220;job&#8221; sooner. Not all contractors act this way, but these clearly don&#8217;t have their client&#8217;s best interests at heart.</p>
<p>That does not mean that companies should not hire contractors. It means that it&#8217;s always better to have an <strong>expert on board</strong> who can see problems before they happen and who can save the company some 20 million or more. Don&#8217;t ignore your ROI. Don&#8217;t be the <a href="http://usatoday30.usatoday.com/money/media/story/2012-04-20/rich-ross-disney-studio-boss-quits/54436422/1">John Carter</a> of IT.</p>
]]></content:encoded>
			<wfw:commentRss>http://annafilina.com/blog/app-cost/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>IT Is About Technology, Not About Gender</title>
		<link>http://annafilina.com/blog/it-is-not-about-gender/</link>
		<comments>http://annafilina.com/blog/it-is-not-about-gender/#comments</comments>
		<pubDate>Wed, 10 Apr 2013 01:36:30 +0000</pubDate>
		<dc:creator>Anna</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Gender]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://annafilina.com/blog/?p=981</guid>
		<description><![CDATA[Most see this as a good thing, but I find the whole &#8220;we need more women speakers&#8221; speech very irritating. Too many PHP conferences are doing it. I don&#8217;t like that. I have your attention, but you may have already come up with some questions for me. Are you against diversity? Are you sexist? Do<div><a href="http://annafilina.com/blog/it-is-not-about-gender/">Read the rest...</a></div><br />]]></description>
			<content:encoded><![CDATA[<p>Most see this as a good thing, but I find the whole &#8220;we need more women speakers&#8221; speech very irritating. Too many PHP conferences are doing it. I don&#8217;t like that. I have your attention, but you may have already come up with some questions for me. Are you against diversity? Are you sexist? Do you think that women should stay at home and cook? The simple fact of my disagreeing on the topic almost inevitably lead to such assumptions. I will explain my position through personal stories.</p>
<p><strong><span id="more-981"></span>How did I become a speaker?</strong> Credit goes partially to Chris Shiflett. He didn&#8217;t realize what he has done when he casually asked me why I didn&#8217;t submit to a conference yet. That was in 2006 or 2007, I can&#8217;t recall. I gave the typical response, that I didn&#8217;t feel that I was good enough. He told me not to worry and that I&#8217;ll do just fine. And you know what? I went and submitted to a few conferences, got rejected, swallowed my pride and tried again. I eventually spoke in France, Canada, USA and Germany. What I have learned from this experience is that speaking never came to my mind until someone suggested it. So go ahead, suggest it. Tell them that it&#8217;s not so hard. Tell them to try at a user group or even at lunch in their company. Some people may not like public speaking and you shouldn&#8217;t pressure them or make them feel guilty for not speaking.</p>
<p><strong>The second story is about my growing up.</strong> I have always loved technology and science. My parents never agreed with me on anything. Not on my choice of toys (lego and remote controlled cars), not on my choice of friends (boys who climb trees and roofs), not on my activities (video games and sci-fi series) and not on my choice of career (programming). I didn&#8217;t care what they wanted for me. I decided on my career all by myself at the age of 11. The fact that it was an unconventional career for a woman didn&#8217;t even cross my mind. I was passionate. That&#8217;s all that should ever matter. Passion. Not gender.</p>
<p><strong>At work, I was a token. </strong>This is the main reason why the &#8220;we need more women speakers&#8221; speech triggers such a response. Every time that a client visited the company or a new employee was hired, management would stop at my desk and point out that I was a woman. It sometimes felt like being a freak in a circus. It was unpleasant to be seen as something other than a skilled programmer. I once turned down a job offer because they really wanted to have a woman among their 40 male developers. I immediately thought of other candidates who will be turned down merely because they were male. The decision process seemed unfair. My sense of justice could not allow that, so I removed myself from the equation and gave all these men a fair chance.</p>
<p>And so every time that a conference asks for more women to submit, I am reminded of that job interview. Since having more women is a clear objective, then all decisions have to be weighed against it. Sure, we all want to think that we are not biased, but we are. As soon as we make something our mission, it inevitably affects our decisions. For me, conferences have nothing to do with gender. Gender is irrelevant. We&#8217;re here to talk about technology. When presented with two proposals on the same topic, I hope that a woman would not automatically win because someone wants to see a pie chart with equal slices. That is not what equal opportunity means. I am a woman, and I don&#8217;t want unfair advantages.</p>
<p>Do we really need to turn gender distribution into a problem? How exactly will the world be a better place with more women speakers? It&#8217;s just a number in a spreadsheet that some choose to find annoying. I&#8217;ll tell you what&#8217;s really annoying: people not automating tests, people withholding information about threats to projects, people not indexing their database tables or over-indexing them, people not using any cache, people skipping software analysis and design, etc. These are the beast that we need to slay. The rest is just a distraction, ready to suck all our time and deviate us from the path to knowledge and collaboration. When you review my application, please consider my skills, my character and the relevance of the topic for your audience. Don&#8217;t worry about my gender.</p>
]]></content:encoded>
			<wfw:commentRss>http://annafilina.com/blog/it-is-not-about-gender/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Define: Functional, Unit and Integration Tests</title>
		<link>http://annafilina.com/blog/functional-unit-and-integration-tests/</link>
		<comments>http://annafilina.com/blog/functional-unit-and-integration-tests/#comments</comments>
		<pubDate>Fri, 05 Apr 2013 14:59:01 +0000</pubDate>
		<dc:creator>Anna</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[FooLab]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://annafilina.com/blog/?p=955</guid>
		<description><![CDATA[I have recently read a blog post claiming that functional tests are not &#8220;true&#8221; tests. The author also claims that unit testing shows you where the problem is occurring, while functional testing simply identifies that a problem exists. This argument is deceptive and the conclusion dangerous. Different kinds of tests are not mutually exclusive. One<div><a href="http://annafilina.com/blog/functional-unit-and-integration-tests/">Read the rest...</a></div><br />]]></description>
			<content:encoded><![CDATA[<p>I have recently read a blog post claiming that functional tests are not &#8220;true&#8221; tests. The author also claims that unit testing shows you where the problem is occurring, while functional testing simply identifies that a problem exists. This argument is deceptive and the conclusion dangerous. Different kinds of tests are not mutually exclusive. One is not superior to the other. They have different goals and can happily coexist. Let me explain the kinds of tests so that you could make enlightened decisions.</p>
<h3><span id="more-955"></span>Functional Tests</h3>
<p>Think of it as testing your application in the browser, but in an automated fashion. There are many ways to automate. Some tools can go as far as launch a specific browser and programmatically simulate user input, other tools can take a step back and send appropriate HTTP requests while inspecting the HTTP response.</p>
<p>In order to perform these, you do not need to know how the software is implemented. They are very high level tests. All you need to know is what the software is expected to do. For example, when you enter an invalid phone number and submit the form, the form should reload with an error message on top of the page. If the form saves at this point, you know that you have a problem, possibly in your validation or the validation may have been skipped. You know the general location of the problem, now you just have to dive into the code.</p>
<p>Functional tests will always prove useful and can do things that others cannot. For example, I use functional testing to simulate a sequence of user actions. Here is a simple scenario, written in natural language for your benefit:</p>
<ol>
<li>Authenticate a user that has only reading permissions.</li>
<li>Navigate to an article&#8217;s draft.</li>
<li>Assert that the status code is 404.</li>
<li>Assert that the page contains a link to the most recently published article.</li>
<li>Click the link and wait for the page to load.</li>
<li>Assert that the status code is 200.</li>
<li>Assert that the title of the article is correct.</li>
</ol>
<p>There is almost no limit to what you can verify with functional tests. The more assertions you write, the easier it will be to pinpoint the location of a potential bug.</p>
<h3>Unit Tests</h3>
<p>Unit tests are low level tests. They are meant to test your code rather than the high-level features. You need to have an understanding of how the code works and how the functions are linked. For example, you could have a method called <span style="font-family: monospace;">canOpenArticle</span> which will take a <code>user</code> and an <code>article</code> argument. Based on the permissions of the user and the status of the article, the function would return true or false. You expect specific output based on the input. Examples:</p>
<ol>
<li>Call <span style="font-family: monospace;">canOpenArticle</span> with a <strong>reader</strong> and a draft article.</li>
<li>The output should be false.</li>
</ol>
<ol>
<li>Call <code>canOpenArticle</code> with an <strong>author</strong> and a draft article.</li>
<li>The output should be true.</li>
</ol>
<p>User tests should operate on a single function or a small group of functions to be most effective. This will allow you to pinpoint the exact location of the issue. If you mix too many of your application functions in one test case, it will be much harder to tell which one of them is at fault when that test case fails. More on this in my next article: &#8220;The Missing Intro to Unit Tests&#8221;.</p>
<h3>Integration Tests</h3>
<p>There are many definitions to this floating around. To avoid overlap with other tests, I define this as the testing of self-contained modules that you expect to be working on their own. All you want to do is make sure that you use them correctly. For example, if you&#8217;re using the Google Maps API, you don&#8217;t expect it to have bugs. Yes, it&#8217;s possible that they have bugs, but for the sake of sanity and good practices, your responsibility should stop here. You want to make sure that you are using the API correctly, that&#8217;s all. When I write integration tests, I send parameters to the API and expect the output to be exactly as documented. If it doesn&#8217;t match, I first assume that I&#8217;m using it wrong. Did I forget a parameter? Did I send a date in the wrong format? Did I misspel something? Once all my integration tests pass, I expect the API to keep behaving. If the API changes without telling me, I&#8217;ll know pretty quickly with my tests and will fix my API calls accordingly.</p>
<p>Here are some more examples of integration tests: framework, plugins, libraries, payment gateway, etc. For some of them you may have access to the code, for others you can&#8217;t see the code. In any case, always treat these as black boxes and focus your integration tests on the communication between your software and these external components. Bonus: you can do something similar between your own modules for better decoupling, so that each module could be swapped as long as it uses the same communication protocol.</p>
<p>Now go and try all of these. Don&#8217;t favor one over the other, as they are all meant to work together like a seat belt and an airbag. You wouldn&#8217;t trust your safety to only one of these, right?</p>
]]></content:encoded>
			<wfw:commentRss>http://annafilina.com/blog/functional-unit-and-integration-tests/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>You Don&#8217;t Become a TDD Expert Overnight</title>
		<link>http://annafilina.com/blog/tdd-expert/</link>
		<comments>http://annafilina.com/blog/tdd-expert/#comments</comments>
		<pubDate>Wed, 27 Mar 2013 15:06:53 +0000</pubDate>
		<dc:creator>Anna</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[FooLab]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://annafilina.com/blog/?p=947</guid>
		<description><![CDATA[Do you want to write unit tests but don&#8217;t know where to begin? Don&#8217;t panic and follow these steps to ease into the testing business. Practice testing often to achieve best results.
Tip: try to test the smallest unit possible, usually a function, rather than a combination of functions. Testing combinations is called integration testing, which<div><a href="http://annafilina.com/blog/tdd-expert/">Read the rest...</a></div><br />]]></description>
			<content:encoded><![CDATA[<p>Do you want to write unit tests but don&#8217;t know where to begin? Don&#8217;t panic and follow these steps to ease into the testing business. Practice testing often to achieve best results.</p>
<p>Tip: try to test the smallest unit possible, usually a function, rather than a combination of functions. Testing combinations is called integration testing, which I will cover in subsequent posts.</p>
<p>Here are a few easy to spot opportunities for writing unit tests.</p>
<p><strong><span id="more-947"></span>When you encounter bugs.</strong></p>
<ul>
<li>Find the exact location of the bug.</li>
<li>Write a test that will not pass while the bug is present, but should pass once the bug is fixed.</li>
<li>Run the test and confirm that it fails.</li>
<li>Apply the bug fix.</li>
<li>Run the test and confirm that it now passes.</li>
</ul>
<p>The test ensures that this bug doesn&#8217;t resurface later, when you make unrelated changes to your code.</p>
<p><strong>When you improve existing code.</strong></p>
<ul>
<li>Write tests for the function that you are about to change.</li>
<li>Make changes.</li>
<li>Run the tests again.</li>
</ul>
<p>The test ensures that your functions still work as expected and that you have not introduced new bugs.</p>
<p><strong>When you first write the code.</strong></p>
<ul>
<li>Every time you output something to make sure that your code behaves as expected, write a quick test instead.</li>
<li>As you write more of them, run all the tests, not just the last one you added.</li>
</ul>
<p><strong>Before you write the code.</strong></p>
<ul>
<li>Once you decide to write a function, think about its input and output.</li>
<li>Write tests for the input and expected output.</li>
<li>All your tests should fail at this time, because the function doesn&#8217;t exist yet or is blank.</li>
<li>Start implementing the function.</li>
<li>Run tests frequently until all of them pass.</li>
</ul>
<p>The better tests you write, the less chance that you event introduce a bug. More than that, your function will probably be shorter and clearer, because you only wrote minimal code to satisfy expectations (tests). These tests may also uncover design flaws before you&#8217;re too advanced into the code.</p>
<p>As you increase the number of tests, you will increase your confidence in the code and will be able to make more daring changes.</p>
<p>See how we gradually went from crisis management to TDD? It&#8217;s easy once you have a clear path to follow. Learn more by signing up for my next workshop <a href="http://foolabtest1.eventbrite.com/">&#8220;Testing by Example&#8221;</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://annafilina.com/blog/tdd-expert/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Effective Presentation Writing and Delivering</title>
		<link>http://annafilina.com/blog/effective-presentation-writing-and-delivering/</link>
		<comments>http://annafilina.com/blog/effective-presentation-writing-and-delivering/#comments</comments>
		<pubDate>Mon, 25 Mar 2013 17:48:06 +0000</pubDate>
		<dc:creator>Anna</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[FooLab]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://annafilina.com/blog/?p=938</guid>
		<description><![CDATA[I have been speaking at, attending and organizing conferences for the last 7 years. I have enough to say about this topic to write a book, so I&#8217;ll stick with an overview and let you fill in the details with your creativity. This post focuses on presentations in the IT world.
Planning is often overlooked, whether<div><a href="http://annafilina.com/blog/effective-presentation-writing-and-delivering/">Read the rest...</a></div><br />]]></description>
			<content:encoded><![CDATA[<p>I have been speaking at, attending and organizing conferences for the last 7 years. I have enough to say about this topic to write a book, so I&#8217;ll stick with an overview and let you fill in the details with your creativity. This post focuses on presentations in the IT world.</p>
<p><strong><span id="more-938"></span></strong>Planning is often overlooked, whether you write software, blog posts, books or presentations. I started this post by making a list of things to say, rearranging the items and removing less important ones to make the whole thing short. For presentations, I cut my production time from 40 hours to only 20 hours by planning with <a href="http://annafilina.com/blog/wp-content/uploads/JQM-800x661.jpg">mind maps</a>. That&#8217;s because you spend time on content rather than form. By all means, do plan before you open your presentation software.</p>
<p>I once attended an incredible workshop where the speaker only used 6 slides in 6 hours. Don&#8217;t assume that your audience has a dog&#8217;s attention span or that they can&#8217;t understand what you say without visual support. People are smart, so treat them as such. Five words per slide is great, but when you end up flicking every 20 seconds to compensate, the audience gets distracted. A little faster and they may get seizures. If you&#8217;re going to say it anyway, why write it on your slides? Slides are for showing things that cannot be communicated effectively in words.</p>
<p>Avoid writing code on slides when you can, use short snippets otherwise. I recommend using images and diagrams rather than text whenever possible. Just don&#8217;t pick overly abstract pictures as that is also distracting. Here&#8217;s an <a href="http://annafilina.com/blog/wp-content/uploads/Screen-shot-2013-03-25-at-1.43.18-PM-800x334.png">example</a> to show device compatibility that is both more effective and more appealing than a bullet-point. Create a separate deck of slides for publishing online as a reference, if you must.</p>
<p>When you begin speaking, introduce yourself and why people should listen to your advice. Position yourself as an expert on the topic. Don&#8217;t spend more than a minute on that. Then, instead of a table of contents, tell your audience what to expect, and what not to expect. Example:</p>
<p>&#8220;I will give you a general understanding of how to profile queries, how to pick good indexes, how to write better queries and give you a checklist to try against your current projects.&#8221;</p>
<p>I strongly recommend splitting your talks into self-contained chapters. Each break allows for questions from the audience, making your talks a lot more interactive. Chapters also make your talks easier to follow, as opposed to talks where every concept is built on top of a previous concept, and everything could collapse should an attendee misunderstand an element along the journey.</p>
<p>If find that stories and metaphors are very effective communication tools. Use them as much as possible. People come to you for your experience, not to hear something that they can read in a manual.</p>
<p>This concludes my brief list of ideas to improve your presentations. Try out a few of them that you find interesting. Don&#8217;t use the ones that you don&#8217;t like.</p>
]]></content:encoded>
			<wfw:commentRss>http://annafilina.com/blog/effective-presentation-writing-and-delivering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Like Athletes, Developers Need Practice Before Performing</title>
		<link>http://annafilina.com/blog/practice-vs-performance/</link>
		<comments>http://annafilina.com/blog/practice-vs-performance/#comments</comments>
		<pubDate>Fri, 22 Mar 2013 12:13:35 +0000</pubDate>
		<dc:creator>Anna</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[FooLab]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://annafilina.com/blog/?p=930</guid>
		<description><![CDATA[Developers always learn new things. They read books and blogs. They attend conferences and workshops. They are expected to apply this newfound knowledge in their projects to increase software performance, security and quality. But projects are all about delivery. Where and when can a developer practice theory? This is an often overlooked element.
Think of  a<div><a href="http://annafilina.com/blog/practice-vs-performance/">Read the rest...</a></div><br />]]></description>
			<content:encoded><![CDATA[<p>Developers always learn new things. They read books and blogs. They attend conferences and workshops. They are expected to apply this newfound knowledge in their projects to increase software performance, security and quality. But projects are all about delivery. Where and when can a developer practice theory? This is an often overlooked element.</p>
<p><strong><span id="more-930"></span></strong>Think of  a developer as an athlete. He or she is aiming for a medal in a competition. A figure skater can&#8217;t just perform a triple axel in the Olympics after seeing it done on television. This requires a lot of practice, so that when the time comes, the performance is flawless.</p>
<p>Of course, programming doesn&#8217;t have to be flawless. One must remain pragmatic, yet it still requires practice before a concept can be safely implemented without breaking the project or missing deadlines. Who will pay for that practice?</p>
<p>Let&#8217;s go back to our athletes. In case of a team, it&#8217;s the manager&#8217;s job to secure funding. So a team is basically an employer, that allocates much time for practice between the matches. There&#8217;s no point in sending a team with a play if they only saw it once on paper.</p>
<p>Now let&#8217;s translate that into IT. Work is divided into projects and then further into iterations, depending on your methodology. Say you have a two-week iteration at the end of which you must deliver a fixed number of features. How many days can a developer afford to try various solutions before settling on the one? Two or three days don&#8217;t sound like much. Let developers poke around, see if the newly acquired concepts are applicable and then focus on delivering the features for the remaining duration. If a concept works, great. If not, better luck next time.</p>
<p>I also recommend to use any idle time between projects to practice some more. Perhaps try out new languages, frameworks or even implement a prototype for something that has nothing to do with any project. This is also known as R&amp;D and many countries have credits for that. The thing about R&amp;D is that failure should always be an option. You can&#8217;t afford to fail during a project. Therefore, you must allocate time for it in a way that won&#8217;t hurt the project.</p>
<p>Developers need a sandbox. If you don&#8217;t give it to them, you can end up with one of the following issues. Your entire project could become a sandbox, making it unstable. Developers will be forced to practice at home, making them unhappy at work and eventually quit. Worse, innovation in your company could stall once developers become tired of fighting the management.</p>
<p>If you want your developers to get better, allow time for practice, not just learning. It&#8217;s necessary, easy to do when planned and provides countless benefits to your company. Let me know how that advice worked out for you.</p>
]]></content:encoded>
			<wfw:commentRss>http://annafilina.com/blog/practice-vs-performance/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>ConFoo 2013 in Montreal</title>
		<link>http://annafilina.com/blog/confoo-2013-in-montreal/</link>
		<comments>http://annafilina.com/blog/confoo-2013-in-montreal/#comments</comments>
		<pubDate>Wed, 23 Jan 2013 20:09:16 +0000</pubDate>
		<dc:creator>Anna</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Conference]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://annafilina.com/blog/?p=918</guid>
		<description><![CDATA[If you have never heard of ConFoo, it is one of the most important developer-oriented conferences. The team brings 100 speakers from around the globe to share their hands-on experience with various web technologies. The best news is: it’s driven by the community and is non profit!

1h presentations cover: PHP, JavaScript, Ruby, Python, .NET, Java,<div><a href="http://annafilina.com/blog/confoo-2013-in-montreal/">Read the rest...</a></div><br />]]></description>
			<content:encoded><![CDATA[<p>If you have never heard of ConFoo, it is one of the most important developer-oriented conferences. The team brings 100 speakers from around the globe to share their hands-on experience with various web technologies. The best news is: it’s driven by the community and is non profit!<br />
<strong><span id="more-918"></span></strong><br />
1h presentations cover: PHP, JavaScript, Ruby, Python, .NET, Java, e-Commerce, Security, Mobile, UX and other topics. The <a href="http://confoo.ca/en/2013/schedule">schedule</a> is quite impressive. We also have hands-on training and a hackaton in the two days before the main event.</p>
<p>The event is at the Hilton Bonaventure Montreal, from February 25th to March 1st. Tickets are sold <a href="http://confoo.ca/en">online</a>.</p>
<p>We are also looking for students who wish to <a href="http://confoo.ca/en/news/2013-volunteers">volunteer</a> for the event.</p>
]]></content:encoded>
			<wfw:commentRss>http://annafilina.com/blog/confoo-2013-in-montreal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Unisex Geek Uniform</title>
		<link>http://annafilina.com/blog/the-unisex-geek-uniform/</link>
		<comments>http://annafilina.com/blog/the-unisex-geek-uniform/#comments</comments>
		<pubDate>Tue, 22 Jan 2013 19:02:57 +0000</pubDate>
		<dc:creator>Anna</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Gender]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://annafilina.com/blog/?p=892</guid>
		<description><![CDATA[I read an interesting point of view from Melinda Seckington. One thing that caught my eye was her mention of how she wears geeky t-shirts so that people believe that she&#8217;s actually a geek. Like her, I prefer to wear womanly clothes in public. But the assumption doesn&#8217;t bother me. Here&#8217;s why.

Assumptions vs Prejudice
We always make<div><a href="http://annafilina.com/blog/the-unisex-geek-uniform/">Read the rest...</a></div><br />]]></description>
			<content:encoded><![CDATA[<p>I read an interesting <a title="Preconceptions and Prejudice: Being A Geeky Girl" href="http://missgeeky.com/2013/01/21/preconceptions-and-prejudice-being-a-geeky-girl/">point of view</a> from Melinda Seckington. One thing that caught my eye was her mention of how she wears geeky t-shirts so that people believe that she&#8217;s actually a geek. Like her, I prefer to wear womanly clothes in public. But the assumption doesn&#8217;t bother me. Here&#8217;s why.</p>
<p><strong><span id="more-892"></span></strong><br />
<h3>Assumptions vs Prejudice</h3>
<p>We always make assumptions based on our past experience. Examples include: an elementary teacher is a woman, a mechanic is a man, a person with an expensive camera is a photographer. This is different from prejudice where you make an opinion not based on experience or evidence. Examples include: girls suck at math, girls can&#8217;t be gamers and blondes are dumb. There is absolutely no evidence to support these claims.</p>
<p>Now back to the clothing.</p>
<p><img class="alignright size-full wp-image-902" title="no-color" src="http://annafilina.com/blog/wp-content/uploads/no-color.jpg" alt="Grey t-shirt: Do you speaker HTML5?" width="251" height="292" /></p>
<h3>Geek Uniform</h3>
<p>Why do women feel compelled to wear geeky t-shirts over womanly clothes?</p>
<p>Many geeks, whether male or female, wear the geek uniform. That usually consists of jeans and a black or grey t-shirt with a reference to programming, video games, science or a sci-fi show. It&#8217;s like a competition of geekness. Another popular attire is a black or grey sweater. The audience of a conference often looks like a computer terminal: a dark background with a few colors in the foreground. You won&#8217;t be any less geek if you wear an orange shirt. Colors are soooooo much more fun.</p>
<h3>The Male Stereotype</h3>
<p>What happens to the man who decides to wear a nice shirt? Think about his job&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.. You might have thought about management or sales. Geeks are expected to wear more casual clothes. Geeks don&#8217;t dress up. But do geeks wear a Tesla t-shirt when they go to a high school reunion? I would assume not.</p>
<h3>The Female Stereotype</h3>
<p>What happens to the woman who decides to wear a dress? Think about her job&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.. You might have thought about PR or marketing. She may even be a booth babe if she&#8217;s really pretty. And so, to avoid being mislabelled, some women put on a dull t-shirt and lose their identity.</p>
<p>It&#8217;s not so hard to say &#8220;actually, I&#8217;m a programmer&#8221;. BOOM! It feels great, try it. Tell them what you do for a living. Until then, all they can do is guess based on past experience. In their experience, they may have never met a woman who can program. Cut them some slack.</p>
<h3>I am a Geek</h3>
<p>Or at least that&#8217;s what my friends say. &#8220;You&#8217;re such a geek, it&#8217;s unbelievable&#8221;.</p>
<p>Assumptions used to annoy me, but now I&#8217;m actually enjoying seeing men&#8217;s faces when they discover that I&#8217;m a skilled programmer, that I like sci-fi, action movies and video games. I impress people with my big photo lens when I bring it along. But then they sometimes mistake me for a photographer <img src='http://annafilina.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>When I wear a dress at a conference, other women tell me that they wish they had put their dress. It&#8217;s contagious, so spread it! Here is some inspiration. Sorry I couldn&#8217;t find a photo of me with the dress. Men are hesitant to take my pic because they&#8217;re afraid to look like stalkers.</p>
<p><img class="size-full wp-image-896 alignnone" title="colors" src="http://annafilina.com/blog/wp-content/uploads/colors1.jpg" alt="Multiple pictures of Anna wearing clothes of various colors." width="600" height="400" /></p>
]]></content:encoded>
			<wfw:commentRss>http://annafilina.com/blog/the-unisex-geek-uniform/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Conference Organizer Tip #1: Advisors</title>
		<link>http://annafilina.com/blog/conference-organizer-ti-1/</link>
		<comments>http://annafilina.com/blog/conference-organizer-ti-1/#comments</comments>
		<pubDate>Fri, 21 Dec 2012 21:42:40 +0000</pubDate>
		<dc:creator>Anna</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Conference]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://annafilina.com/blog/?p=806</guid>
		<description><![CDATA[More and more conference organizers reach out to me for advice. My advice is not applicable to all types of events, but hopefully it will help to make the task easier and achieve better results. In the following series, I will explain how we manage to organize an internationally recognized conference (ConFoo) run by a<div><a href="http://annafilina.com/blog/conference-organizer-ti-1/">Read the rest...</a></div><br />]]></description>
			<content:encoded><![CDATA[<p>More and more conference organizers reach out to me for advice. My advice is not applicable to all types of events, but hopefully it will help to make the task easier and achieve better results. In the following series, I will explain how we manage to organize an internationally recognized conference (<a href="http://confoo.ca/en">ConFoo</a>) run by a tiny group of volunteers. Two part-time organizers and a few advisors, to be exact.</p>
<p>Tip #1: Advisors<br />
<strong><span id="more-806"></span></strong><br />
<h3>Purpose</h3>
<p>The purpose of advisors is to select <strong>better content</strong> for the conference. No matter how skilled we are, we are limited by our experience and points of view. Other people will bring a touch of variety and new expertise to the table. We have been operating in a bubble for many years, and received feedback that our content was getting repetitive, for example.</p>
<p><img class="alignright size-full wp-image-881" style="border: 1px solid black;" title="_MG_1909" src="http://annafilina.com/blog/wp-content/uploads/MG_1909.jpg" alt="" width="400" height="213" /></p>
<p>We also wanted the process to be as <strong>transparent</strong> and <strong>fair</strong> as possible. Having community members question our process helps refine it and make it more just. This is encouraging for speakers since they know that people with different backgrounds and opinions looked at their proposals. More about this in an upcoming post about the selection process.</p>
<p>Finally, having an increasing <strong>number of proposals</strong> made it increasingly difficult to take the time to evaluate each one. We didn&#8217;t want to take 6 months to choose the talks or skim through the titles for buzzwords. We wanted to give every proposal the attention it deserves. Just for perspective, we went from over 500 proposals last year to nearly 800 this year. With 16 advisors to help us, we picked 160 amazing talks.</p>
<h3>Choosing Advisors</h3>
<p>Our advisors included <strong>speakers</strong>, due to their experience with the subjects but also because they attend a lot of conferences. This makes them knowledgeable about what presentations work best and possibly familiar with many proposals.</p>
<p>We also invited <strong>community leaders</strong> and <strong>active community members</strong>. They follow the trends, meet a lot of people and are generally involved in various projects. If they host presentations, they are likely also have seen many speakers and their skills. The two advisor types complement each other very well.</p>
<p>We selected <strong>multiple advisors</strong> for each theme: JavaScript, Ruby, PHP, etc. This allows for them to challenge each other to get the best results. It also helps motivation because people don&#8217;t sit in their own silo: they can discuss the proposals and share their top-n lists.</p>
<h3>Setting Expectations</h3>
<p>To incorrectly set expectations may result in disappointment. Before you list tasks, make sure you describe the conference, its <strong>goals</strong> and its <strong>values</strong>. A good preparation is important before you reach out to advisors.</p>
<p>A clear list of <strong>tasks</strong> enables everybody to know exactly what they are signing up for. More on this further down.</p>
<p>Be honest about the <strong>expected time</strong> that advisors may have to put in. In our case, we estimated 5 hours per week, which was more or less an accurate prediction. It&#8217;s better to have somebody say &#8220;no&#8221; than setting false expectations and ruin a relationship.</p>
<p>Advisors must be <strong>qualified</strong> in their domain to pick useful topics and be <strong>pleasant</strong> to work with. Choose advisors according to the level of the content that you want to provide and to the atmosphere that you want to create. When somebody is not a team player, it quickly generates frustration. Although a good communicator can mend bridges.</p>
<p>List the <strong>mutual advantages</strong> that each party gets. Our advantages for advisors include: the power to build a track, visibility for the technology, reinforcing a personal brand and a free ticket for ConFoo. Notice that there is no money involved, as we believe that it will suck the fun out of the process.</p>
<p>Finally, <strong>responsibilities</strong> and <strong>accountability</strong> must be very clear. What will happen if there aren&#8217;t enough proposals to make a viable track? What happens if somebody decides to withdraw late in the process? These problems came up numerous times and were unpleasant to deal with. Signing a paper to <strong>express commitment</strong> will be our solution for next year, because people don&#8217;t always mean what they say. Not a contract with liabilities and such, but an agreement. That means that the rules must be very clear before we begin the race, so that people don&#8217;t feel forced to do something unexpected.</p>
<h3>Tasks</h3>
<p>Our task list consisted of three items. First advisors need to <strong>search for speakers</strong> to get enough proposals for a viable track. Give a hand and share advice. Also, have a contingency plan. In our case, we would rather not have a track than make it too small or of low quality, as it would have the effect of disappointing the audience and make things harder next year. We started posting about the upcoming call for papers 3 weeks before the opening, to give the news a chance to propagate in the networks, so that people stay alert or even begin preparing proposals.</p>
<p>Next, they need to <strong>perform the selection</strong> to create a balanced track that fits with the overall conference content. That involves reading the proposals, discussing with other advisors and come up with a selection. Next year, we hope to devise a system for writing official selection reasons rather than mixed user comments. It was a titanesque task before advisors, but now that we no longer need to spend time on writing processes and collaboration tools, it looks promising. This will be great news to speakers.</p>
<p>Finally, advisors need to <strong>promote the conference</strong>. Ticket sales pay for the speakers&#8217; expenses, such as a flight, a stay at the hotel, breakfast, hot lunch, coffee (2600 cups last year), etc. We consider it to be part of the mutual advantages with advisors. They have extensive networks and a few words here and there require little effort. We don&#8217;t expect any number of sales, just a hand in promotion.</p>
<p>The <strong>timeline</strong> for the tasks must be set in advance. Advisors are already busy and need to schedule for this extra work. Also, this avoids unexpected deadlines that are impossible to meet.</p>
<h3>Communication</h3>
<p>We used <a href="http://www.doodle.com">doodle.com</a> to pick the best day of the week for <strong>work sessions</strong>. These were scheduled through the call for papers and selection, for a total of 7 meetings. At my office, each week, we started with pizza, drinks and a few off-topic conversations to get in the mood. Then, we would read the proposals that were submitted so far, write comments and discuss with the team. It was a mix of quiet work and conversations. Some advisors were not in Montreal and so joined us on <strong>IRC</strong>. We used Skype too, but next year we will centralize everything on IRC.</p>
<p>At any time, an advisor could send questions and top-n lists on the advisor <strong>mailing list</strong> for discussion. Since some of these discussions were not relevant to all advisors because they were unfamiliar with the technology, we are considering a sub-list for some tracks so that people feel more at ease with multiple exchanges. I was personally responsible for sending weekly reminders, advice, raising warning flags and celebrating successes.</p>
<p>I was always available to <strong>answer the phone</strong> with advice, to answer questions or even just to chat. It is important to have an open channel of communication at all times. The inclusion of advisors was a priority for me. I hope that they can say that they felt welcome, respected and empowered. Any mistakes that we made in the process, we will correct.</p>
<p>That&#8217;s it for now!</p>
<p>Enjoy this advice and add more in the comments. If you provide any examples of what not to do, please don&#8217;t mention events and names to avoid making organizers feel bad, even if it&#8217;s a commercial event. You can just e-mail them privately.</p>
<p>Some of the following posts will cover the public call for papers and the selection process.</p>
]]></content:encoded>
			<wfw:commentRss>http://annafilina.com/blog/conference-organizer-ti-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
