<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="http://www.skepticats.com/LnBlog/themes/default/styles/rss.css" ?>
<rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/">
<channel>
<link>http://linlog.skepticats.com/feeds/SoftwareEngineering_news.xml</link>
<title>LinLog</title>
<description>Linux, Programming, and Computing in General</description>
<generator>LnBlog 1.0.0</generator>
<item>
<title>Developer interviews          </title>
<link>http://linlog.skepticats.com/entries/2011/02/Developer_interviews.php</link>
<description>
&lt;p&gt;At my current company, we've been trying to hire a new back-end PHP developer for some time.  As the senior engineer on staff, and the &lt;em&gt;only&lt;/em&gt; back-end person, it's my job to handle the technical portion of the screening process, including resume screening and technical interview.  Unfortunately, I have lots of other work to do, so I never had time to come up with a really &lt;em&gt;good&lt;/em&gt; procedure to test candidates.  In addition, most of the interviews are over the phone with people in other cities, which makes it difficult to have them write code without some advanced preparation - which, again, I haven't had time to do.&lt;/p&gt;&lt;p&gt;So, as a compromise, I came up with a standard list of questions that I ask candidates.  I originally wrote this list with the intention of using it for junior developers (1 to 3 years of experience), thinking that anyone with 5+ years of experience would breeze through it.  However, I've found that a disturbingly large percentage of more experienced developers fumble more than one of the questions.  Unfortunately, I'm not yet sure if that's just because we're getting poor quality applicants, or if it's because my standards are too high.&lt;/p&gt;&lt;p&gt;Therefore, in the interests of helping my fellow developers - both those looking for new opportunities and those who are interviewing the first group - as well as in the hopes of getting some good feedback, I present my list of interview questions.  Note that I do &lt;strong&gt;not&lt;/strong&gt; include answers.  There are two reasons for this:&lt;br /&gt;1) There is not always a single &amp;quot;right&amp;quot; answer - it is perfectly valid for the question to turn into a conversation.&lt;br /&gt;2) If you're an interview&lt;em&gt;er&lt;/em&gt; and you don't already know the answer, you shouldn't be asking the question; if you're an interview&lt;em&gt;ee&lt;/em&gt; and you don't know the answer, you should look it up and learn something new.&lt;br /&gt;With each question I've included some notes on the question's intent.  Some of these are conceptual, some are simply tests of knowledge, and some are spring-boards to further discussion.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Solve the &lt;a href=&quot;http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html&quot;&gt;FizzBuzz problem&lt;/a&gt;.  How would you solve it in an object-oriented fashion?  Using recursion?&lt;/strong&gt;&lt;/li&gt;OK, I hardly ever ask this question; you really need to be in the same room to make it work.  However, it's still useful to see if the candidate can program and to see how they think.  For the object-oriented and recursive versions, I'm not so much looking for the right answer as I am for the approach - and I tell them as much.  In particular, I'm looking to see where the candidate goes with the open-ended requirement for object-orientation.  Do they go for procedural code that just happens to use some objects?  Or do they go straight to polymorphic classes, maybe with a factory pattern thrown in?&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Define &amp;quot;inheritance&amp;quot; and &amp;quot;polymorphism&amp;quot;.  Give an example of when you might use each.&lt;/strong&gt;&lt;/li&gt;This is your &amp;quot;OOP 101&amp;quot; question.  Any half-competent developer should be able to describe inheritance and give the stock &amp;quot;shape&amp;quot; or &amp;quot;animal&amp;quot; example.  Polymorphism is a bit more slippery - I often don't get a good answer to that part of the question.  In fact, a lot of people seem to think that polymorphism is basically the same thing as method overloading and don't really make the connection to inheritance.&lt;br /&gt;&lt;li&gt;&lt;strong&gt;What is the difference between an &amp;quot;abstract class&amp;quot; and an &amp;quot;interface&amp;quot;?&lt;/strong&gt;&lt;/li&gt;I actually ask this because one of our products is built primarily in FLEX, and interfaces abound in our ActionScript code.  With this, I'm really interested in seeing if the candidates understands the idea of explicitly specifying a contract in the code, as opposed to relying on, e.g., PHP's loose typing to make things &amp;quot;just work&amp;quot;.&lt;br /&gt;&lt;li&gt;&lt;strong&gt;What is &amp;quot;SQL injection&amp;quot; and how might you protect against it?  What about XSS/CSRF?&lt;/strong&gt;&lt;/li&gt;This is, of course, the basic security question.  On the SQL injection side, I'm specifically looking for awareness of prepared statements, e.g. in MySQLi or PDO.  More generallly, I'm looking for an awareness of filtering an validation.  On the script injection side, I like to see what candidates say they use to filter input.  An awareness of standard escaping and sanitizing function (&lt;code&gt;strip_tags(), htmlentities()&lt;/code&gt;, etc.) is always good - knowledge of the filter extension gets bonus points.&lt;br /&gt;&lt;li&gt;&lt;strong&gt;In JavaScript, what does it mean to say that functions are &amp;quot;first class&amp;quot; or &amp;quot;first order&amp;quot; objects?&lt;/strong&gt;&lt;/li&gt;This is a lead-in to determine how much, if anything, the candidate knows about the more functional aspects of JavaScript - anonymous functions, closures, etc.  Surprisingly (at least to me), hardly anyone seems to be familiar with the terminology of &amp;quot;first class&amp;quot; entities.  So far I've only had two people know what I was talking about right off the bat.&lt;br /&gt;&lt;li&gt;&lt;strong&gt;What is the difference between NULL and the empty string in SQL?&lt;/strong&gt;&lt;/li&gt;This one is more of a trivia question to test the depth of knowledge of SQL.  Bonus points if the candidate mentions SQL's three-valued logic in the follow-up question: &amp;quot;What is the result of the comparison &lt;code&gt;NULL = ''&lt;/code&gt;&amp;quot;?&lt;br /&gt;&lt;li&gt;&lt;strong&gt;What is an &amp;quot;index&amp;quot; in a database and how would you decide what columns to index?&lt;/strong&gt;&lt;/li&gt;This one is just to check that the candidate has some basic knowledge of database performance considerations.&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Given a sample HR database that contains the following tables:&lt;/li&gt;&lt;code&gt;Employees (employee_id INTEGER PRIMARY KEY, employee_name TEXT, ...)&lt;br /&gt;Departments (department_id INTEGER PRIMARY KEY, department_name TEXT, ...)&lt;/code&gt;&lt;br /&gt;What would you have to add to the schema to associate employees with departments?&lt;/strong&gt;&lt;br /&gt;This is the basic SQL competency question.  The typical answer is to add a foreign key from Employees to Departments, at which point I spring the &amp;quot;what if an employee needs to be in two departments&amp;quot; scenario and see if they come up with a join table.  Also, it gives a good opportunity to see if they understand when to use inner versus outer joins.  It's surprising how many people struggle with this question.&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Describe a project you worked on that was particularly enjoyable or interesting.  What did you like about it?&lt;/strong&gt;&lt;/li&gt;I stole this from an interview I did once where I was the applicant.  It can be enlightening to see what catches a person's interest.  If nothing else, it can help you get an idea of where their head is; are they a hard-core CS person, a touchy-feely UI person, or something else entirely?&lt;br /&gt;&lt;/ol&gt;&lt;p&gt;Personally, I consider this list to be inadequate at best.  But as I said, I haven't had time to develop an adequate test and this is at least better than asking &amp;quot;So how well do you know X?&amp;quot;, if for no other reason than it's harder to BS an acceptable answer.  Any thoughts or opinions are welcome.  &lt;/p&gt;
</description>
<author>pageer@skepticats.com (Peter Geer)</author>
<comments>http://linlog.skepticats.com/entries/2011/02/16_2239/comments/</comments>
<guid>http://linlog.skepticats.com/entries/2011/02/16_2239/</guid>
</item>
<item>
<title>FeedDemon upgrade </title>
<link>http://linlog.skepticats.com/entries/2010/12/FeedDemon_upgrade.php</link>
<description>
&lt;p&gt;Yesterday I upgraded &lt;a href=&quot;http://feeddemon.com/&quot;&gt;FeedDemon&lt;/a&gt; to version 4.  In the process, I did something new - I paid for a license.&lt;/p&gt;&lt;p&gt;For the last year or two that I've been using it, FeedDemon has been ad supported.  The full feature set was available for free, but there was a little ad in the lower left-hand corner.  If you wanted to get rid of that, you could buy a license key, but frankly, I never really cared that much.&lt;/p&gt;&lt;p&gt;Now, however, the business model has changed.  There's now a free &amp;quot;Lite&amp;quot; version with some missing features and a paid &amp;quot;Pro&amp;quot; version with all the features and no ads.  One of the annoying parts of this was that the features in the &amp;quot;pro&amp;quot; version are not all new - the for-pay features include some things that were previously free.&lt;/p&gt;&lt;p&gt;This bothered me a little for a couple of minutes.  Then I &lt;a href=&quot;http://nick.typepad.com/blog/2010/12/why-i-decided-to-charge-for-feeddemon-again.html&quot;&gt;read the FeedDemon author's article&lt;/a&gt; about why he changed the business model.  Apparently, FeedDemon is no longer run by NewsGator.  It's still branded for them, but they let the author, Nick Bradbury, go and returned control of the program to him.  Apparently he's now doing the independent developer thing and making his living selling FeedDemon.&lt;/p&gt;&lt;p&gt;Well, that pretty much sealed the deal.  I've tried a number of RSS readers - Linux, Windows, and web - and FeedDemon is the only one I've ever really &lt;em&gt;liked&lt;/em&gt;.  This is a program I use &lt;em&gt;every day&lt;/em&gt;, I want some of the &amp;quot;pro&amp;quot; features, and buying it would help out a fellow developer.  And to top it all off, he's only asking a lousy $20 for it.  That's a no-brainer.  So I bought a license and I'd encourage any other FeedDemon users to do the same.&lt;/p&gt;&lt;p&gt;Incidentally, some of the comments on Nick's article were really depressing.  With users like some of those, I don't envy him trying to make his living off FeedDemon.  Supporting a one-man project is tough enough when you release it as open-source and you don't owe anything to anyone.  It must be hard trying to do right by people who paid you money when they feel your work is lacking - even (especially?) if they're clearly being unreasonable.  Working 9 to 5 (well, officially 8 to 5 in my case, but you get the idea) might not be sexy, but at least it's stable and they pay someone else to deal with unhappy customers.&lt;/p&gt;&lt;p&gt;One thing I did notice in the new version that I found a little disappointing was the change in some of the newspaper themes.  FeedDemon basically displays feeds as an HTML document and has a number of themes that control the look of the feed list and allows you to set themes on a per-feed basis.  Changing the theme is now a &amp;quot;pro&amp;quot; feature, and I really wanted this, as I have several feeds that I have set to use the Outland theme, which is a nice, clean theme that displays full entries rather than just summaries.  However, this theme is gone in FeedDemon 4.&lt;/p&gt;&lt;p&gt;The up side is that, while the theme format may have changed in &lt;abbr title=&quot;FeedDemon 4&quot;&gt;FD4&lt;/abbr&gt;, it hasn't changed much.  The &amp;quot;styles&amp;quot; are still just that - CSS and XSLT.  In fact, I still had the Outland.fdxsl2 theme file sitting in my &amp;quot;C:\Program Files (x86)\FeedDemon\Data\Styles&amp;quot; directory, so I just tried renaming it to Outland.fdxsl4, restarting &lt;abbr title=&quot;FeedDemon&quot;&gt;FD&lt;/abbr&gt;, and guess what?  It worked!  The only real problem was that the border on the feed was a little off, so I commented out the border on the HTML element (line 24), and it was just fine.&lt;/p&gt;
</description>
<author>pageer@skepticats.com (Peter Geer)</author>
<comments>http://linlog.skepticats.com/entries/2010/12/13_2226/comments/</comments>
<guid>http://linlog.skepticats.com/entries/2010/12/13_2226/</guid>
</item>
<item>
<title>Ron Jeffries rocks </title>
<link>http://linlog.skepticats.com/entries/2010/12/Ron_Jeffries_rocks.php</link>
<description>
&lt;p&gt;Last night I spent some time browsing &lt;a href=&quot;http://en.wikipedia.org/wiki/Ron_Jeffries&quot;&gt;Ron Jeffries&lt;/a&gt; &lt;a href=&quot;http://xprogramming.com/&quot;&gt;web site&lt;/a&gt;.  While I've seen a few of the items on Ron's site before, I never really stopped to look through - and boy was that a mistake!  It turns out that Ron has a number of very interesting and entertaining articles on his site.  I particularly recommend his &lt;a href=&quot;http://xprogramming.com/category/classics&quot;&gt;classics section&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Included in the &amp;quot;classics&amp;quot; is an article entitled &lt;a href=&quot;http://xprogramming.com/articles/jatbaseball/&quot;&gt;We Tried Baseball and It Didn't Work&lt;/a&gt;.  Unless you're lucky enough to have only ever worked in high-quality organizations, which really, &lt;em&gt;really&lt;/em&gt; had their act together, this article will probably ring true on some level.  It also nicely sums up a number of Ron's other articles on the use and abuse of the term &amp;quot;Agile&amp;quot;.&lt;/p&gt;&lt;p&gt;This kind of reminded me of when my current team first started to &amp;quot;do Scrum&amp;quot;.  For the first few months, the entire team agreed that it just wasn't working.  Of course, we weren't exactly following the book in our application of Scrum: our &amp;quot;stand-up&amp;quot; meetings often lasted 30 to 60 minutes; we didn't always deliver &amp;quot;done-done&amp;quot; software at the end of a sprint; our sprints started at a month long, and when we failed to finish our tasks by then, we pushed the date.  So &amp;quot;Scrum wasn't working&amp;quot; for us, if by Scrum you mean &amp;quot;some process that involves a daily meeting.&amp;quot;  But we had to do Scrum, or come up with some other &amp;quot;Agile&amp;quot; process, because if it's not &lt;em&gt;Agile&lt;/em&gt;, then it's not &lt;em&gt;good&lt;/em&gt;.  I mean, how could all those industry pundits be wrong?&lt;/p&gt;&lt;p&gt;Fortunately, we've figured things out a bit better now.  We're much closer to a real Agile process and it's working better for us.  Of course, we're not really there yet, but we're making progress.  And, really, that's what matters.&lt;/p&gt;
</description>
<author>pageer@skepticats.com (Peter Geer)</author>
<comments>http://linlog.skepticats.com/entries/2010/12/03_0945/comments/</comments>
<guid>http://linlog.skepticats.com/entries/2010/12/03_0945/</guid>
</item>
<item>
<title>Sort of agile  </title>
<link>http://linlog.skepticats.com/entries/2010/11/Sort_of_agile.php</link>
<description>
&lt;p&gt;While catching up on &lt;a href=&quot;http://parlezuml.com/blog/&quot;&gt;Jason Gorman's blog&lt;/a&gt; today, I came across &lt;a href=&quot;http://parlezuml.com/blog/?postid=967&quot;&gt;this entry&lt;/a&gt;, which linked to the &lt;a href=&quot;http://www.halfarsedagilemanifesto.org/&quot;&gt;Half-Arsed Agile Manifesto&lt;/a&gt;.  In a word, it's awesome.&lt;/p&gt;&lt;p&gt;That manifesto made me think back to when I started my current job.  I was reading through the process documentation for our parent company (whose processes the spin-off I work for inherited).  The documents referred to themselves as describing the &amp;quot;agile&amp;quot; process the company employed.  But as I read through them, with the descriptions of requirements documents and formal hand-off procedures, I just kept thinking, &amp;quot;This sounds a lot more like waterfall than any agile process I've ever heard of.&amp;quot;  It's always nice to know you're not alone in having experiences like that.&lt;/p&gt;&lt;p&gt;Sadly, while my team's current Scrum-like process is considerably more agile, we still have some vestiges of that.  For instance, the stated expectation that our initial estimates will be 90% accurate based on what is (very) generously described as &amp;quot;80% definition&amp;quot; by product management.  So we're only &lt;em&gt;mostly&lt;/em&gt; sure what we're building, but we're almost &lt;em&gt;positive&lt;/em&gt; how long it will take.  I'm still not sure how the math is supposed to work out on that.  Fortunately, we don't take that expectation too seriously.&lt;/p&gt;
</description>
<author>pageer@skepticats.com (Peter Geer)</author>
<comments>http://linlog.skepticats.com/entries/2010/11/30_2318/comments/</comments>
<guid>http://linlog.skepticats.com/entries/2010/11/30_2318/</guid>
</item>
<item>
<title>The world's most accurate Twitter account   </title>
<link>http://linlog.skepticats.com/entries/2008/10/The_world_s_most_accurate_Twitter_account.php</link>
<description>
&lt;p&gt;Thanks to Carl and Richard from &lt;a href=&quot;http://www.dotnetrocks.com/&quot;&gt;DNR&lt;/a&gt; for pointing out the &lt;em&gt;best Twitter stream even&lt;/em&gt;.  They mentioned it on &lt;a href=&quot;http://www.dotnetrocks.com/default.aspx?showNum=379&quot;&gt;show 379&lt;/a&gt;.  You can find it at: &lt;a href=&quot;http://twitter.com/thisispointless&quot;&gt;http://twitter.com/thisispointless&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;There are 3 things I like about this stream.  First, it's actually kind of funny.  Second, I think the username pretty well sums up everything about Twitter.  And third, I just love the open mockery when there are people out there who are actually trying to &lt;em&gt;communicate&lt;/em&gt; over Twitter.  Because apparently nothing worth saying could &lt;em&gt;possibly&lt;/em&gt; take more than 140 characters.  &lt;/p&gt;&lt;p&gt;I'm sorry, that was a cheap shot.  I was misrepresenting the true purpose of Twitter - to send pointless messages that people really &lt;em&gt;shouldn't&lt;/em&gt; care about.&lt;/p&gt;
</description>
<author>pageer@skepticats.com (Peter Geer)</author>
<comments>http://linlog.skepticats.com/entries/2008/10/10_2332/comments/</comments>
<guid>http://linlog.skepticats.com/entries/2008/10/10_2332/</guid>
</item>
<item>
<title>The truth about government </title>
<link>http://linlog.skepticats.com/entries/2008/01/The_truth_about_government.php</link>
<description>
&lt;p&gt;&lt;a href=&quot;http://secretgeek.net/&quot;&gt;Leon Bambrick&lt;/a&gt; had a really great blog post today.  You know the &amp;quot;one laptop per child&amp;quot; program?  Well, he thinks it's great that the IT industry is doing this and that other industries should have similar programs, such as &lt;a href=&quot;http://secretgeek.net/ohpc.asp&quot;&gt;&amp;quot;one handgun per child.&amp;quot;&lt;/a&gt;  My favorite, though, was the program for government:&lt;br /&gt;&lt;/p&gt;&lt;blockquote cite=&quot;http://secretgeek.net/ohpc.asp&quot;&gt;&lt;p&gt;Governments could offer &amp;quot;One soul-destroying job in a miasma of bureaucratic inconsequentiality Per Child&amp;quot;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;If you're a regular reader of this blog, or a member of my family, then you probably know that my last job was as a Systems Analyst in the IT department of a local government, so that quote really spoke to me.  I know you hear people say things like that about public sector jobs all the time, but based on 6 years of experience, I can say that it's all true.  There's a general atmosphere of hopelessness, where most things don't make any sense, lots of them don't really work, and everything is more complicated than it needs to be, yet nobody seems to think this is a problem.  The only way to keep your sanity in such an environment is to simply stop caring.  After all, nobody else has.&lt;/p&gt;&lt;p&gt;Of course, the private sector is no panacea.  But at least there's always the possibility that you can improve your organization or you lot within it.  Or at least &lt;em&gt;change&lt;/em&gt; something.&lt;/p&gt;&lt;p&gt;The one thing I will say for government work is that if gives you a different angle on conspiracy theories.  After a job in public service, it's impossible to waste even a second seriously considering any of those grand, sweeping government conspiracy theories you see floating around the internet.  I mean, most government offices can just &lt;em&gt;barely&lt;/em&gt; manage the job they're &lt;em&gt;supposed&lt;/em&gt; to be doing.  How are they going to manage some sort of vast cover-up?  That would require motivation and initiative, and those aren't allowed in public service.&lt;/p&gt;
</description>
<author>pageer@skepticats.com (Peter Geer)</author>
<slash:comments>1</slash:comments>
<comments>http://linlog.skepticats.com/entries/2008/01/17_2237/comments/</comments>
<wfw:commentRss>http://linlog.skepticats.com/entries/2008/01/17_2237/comments/comments.xml</wfw:commentRss>
<guid>http://linlog.skepticats.com/entries/2008/01/17_2237/</guid>
</item>
<item>
<title>ESRI class day 2 - boredom and web access </title>
<link>http://linlog.skepticats.com/entries/2007/07/ESRI_class_day_2_-_boredom_and_web_access.php</link>
<description>
&lt;p&gt;More live-blogging today.  Unfortunately, it turns out that's the only kind I'll be doing until the class is over.  I'm staying at the Crowne Plaza hotel, and while they offer WiFi service, they charge $10/day for it!  That's actually &lt;em&gt;worse&lt;/em&gt; than the $4/2-hour block that they charge for the AT&amp;amp;T WiFi at the Barnes &amp;amp; Noble back home.  At that price, I could get 5 hours of service, and there's no way I'm going to be online that long here.  Fortunately, the PCs in the training room for the class have web access, so I can at least check my e-mail.&lt;/p&gt;&lt;p&gt;Yesterday afternoon and this morning we got more into the details of managing ArcGIS geodatabases.  Things like connection methods, authentication, data loading, management tools, &amp;quot;gotchas&amp;quot;, and so forth.  Basically, the stuff I will probably never need to know.&lt;/p&gt;&lt;p&gt;I'm actually a little ambivalent about this class so far.  On the one hand, it's absolutely mind-numbing at times.  It's not that the class is bad, it's just that it's getting into details that have absolutely no relevance for me.&lt;/p&gt;&lt;p&gt;On the other hand, it's actually very interesting in an academic sense.  After all, we're talking about a system that scales up to clustered, multi-terabyte databases.  The ArcGIS server runs under Windows, UNIX, and Linux and supports pretty much all the major &lt;acronym title=&quot;DataBase Management System&quot;&gt;DBMS&lt;/acronym&gt;s - Oracle, SQL Server, DB2, Informix, and there was even some talk of people using Postgress and Sybase.  So we're really getting a closer look at the architecture of a very complex, high-end system.  Plus our instructor has been around long enough that he can talk about how things have evolved over the years and the direction the architecture has taken.  We're not just getting the tedious technical details, but some insight into the layers of the system, the APIs involved, and how everything interacts on various levels.&lt;/p&gt;&lt;p&gt;So as a case study of a major major information system, this class is actually quite interesting.  However, it's really a class on managing geodatabases, not a case study on ArcGIS.  So while the concrete details are putting me to sleep, the high-level stuff was definitely worth hearing.  As a programmer, you tend to look at and read about things on more of a code-level.  It's good to see how the &amp;quot;big boys&amp;quot; handle complicated design issues.&lt;/p&gt;
</description>
<author>pageer@skepticats.com (Peter Geer)</author>
<comments>http://linlog.skepticats.com/entries/2007/07/17_1058/comments/</comments>
<guid>http://linlog.skepticats.com/entries/2007/07/17_1058/</guid>
</item>
<item>
<title>At the ESRI class </title>
<link>http://linlog.skepticats.com/entries/2007/07/At_the_ESRI_class.php</link>
<description>
&lt;p&gt;Well, here I am at Constitution Plaza in Hartford, Connecticut.  I'm actually here on a business trip.  My employer sent me to a training course with &lt;a href=&quot;http://www.esri.com/&quot;&gt;ESRI&lt;/a&gt; entitled &lt;em&gt;Data Management in the Multiuser Geodatabase&lt;/em&gt;.&lt;/p&gt;&lt;p&gt;There are a few things to note about the very fact that I'm here.  In the 6 years I've been with my current organization (which is far too long), this is the first time I've been on an out-of-state trip.  In fact, it's the first time I've been on a trip that lasted longer than a day.  It's also the first off-site paid training class I've been sent to.  Kind of seems like a waste, given that if things things go well, I'll be able to &lt;a href=&quot;http://linlog.skepticats.com/entries/2007/06/Advance_your_career_by_losing_hope.php&quot;&gt;get the hell out of here&lt;/a&gt; before I have a chance to put any of this to use.&lt;/p&gt;&lt;p&gt;As for the class itself, I have no real complaints so far.  It's actually hosted by the City of Hartford IT Department, which has 2 people attending.  The instructor, Jim, has been in the GIS business forever and has been working for ESRI for 14 years.  He's really nice and seems pretty knowledgeable, so I'm actually enjoying the class so far.  In particular, learning about the system architecture was kind of cool.  Of course, I'll probably never put any of the stuff he's teaching us to use, but at least this gets me out of the office for a week.&lt;/p&gt;&lt;p&gt;One cool thing I've discovered is that Python is apparently one of the favored languages for automating ESRI's system.  In fact, the lap machines we're using for the class actually have Python 2.4 interpreters installed on them.  I don't know if we'll do any scripting in the class at all, but I just found that to be really cool.  &lt;/p&gt;
</description>
<author>pageer@skepticats.com (Peter Geer)</author>
<comments>http://linlog.skepticats.com/entries/2007/07/16_1111/comments/</comments>
<guid>http://linlog.skepticats.com/entries/2007/07/16_1111/</guid>
</item>
<item>
<title>Agile, shmagile </title>
<link>http://linlog.skepticats.com/entries/2007/07/Agile_shmagile.php</link>
<description>
&lt;p&gt;There was an &lt;a href=&quot;http://typicalprogrammer.com/programming/the-agile-method-and-other-fairy-tales-qed/&quot;&gt;interesting article&lt;/a&gt; over on the Typical Programmer the other day.  It consisted of a criticism of an anti-agile development paper entitled &lt;a href=&quot;http://www.softwaremetrics.com/Agile/Agile%20Paper.pdf&quot;&gt;Agile Methods &amp;amp; Other Fairy Tales&lt;/a&gt;, by David Longstreet.  While the criticism was interesting in its own right, I found it even more-so after reading the actual paper.&lt;/p&gt;&lt;p&gt;The main criticism the Typical Programmer leveled against the paper was that it was attacking a straw man.  Specifically, he claims that many of the practices Longstreet describes are not actually agile, but simply broken.  They just &lt;em&gt;look&lt;/em&gt; agile because they don't involve much in the way of design, documentation, and so forth.  &lt;em&gt;Real&lt;/em&gt; agile methods, however, do not scorn those things when they are necessary.&lt;/p&gt;&lt;p&gt;I don't claim to be an expert on agile methods.  However, I found Longstreet's paper to be good in some places.  It certainly wasn't as intellectually bankrupt as the critique would lead us to believe.&lt;/p&gt;&lt;p&gt;Thinking about all this raised a few questions in my mind.&lt;br /&gt;1) Couldn't the same complaint be leveled at the agile people?  That is, might one not claim that they're not reacting against waterfall-style methods, but rather a caricature of them?  After all, you can dress some broken methods up as waterfall just as easily as you can dress others up as agile.  &lt;br /&gt;2) Just what are &lt;em&gt;real&lt;/em&gt; agile methods anyways?  How do you differentiate it from &amp;quot;fake&amp;quot; agile?  Viewed from the outside, it seems like agile methods could very easily be mistaken for cowboy coding.  How do you decide where the line is?&lt;br /&gt;3) Is it just my imagination, or do agile methods get less controversial every time I read about them?  For instance, I remember when everyone was talking about the pair programming advocated by eXtreme Programming.  Now, it seems like nobody cares about that anymore.  (Actually,it almost seems like people have come to a silent agreement that it was kind of a silly idea.)  These days, I read about the de-emphasis on documentation and other non-code artifacts.  But then, when pressed, the agile people say they're only against the &lt;em&gt;useless&lt;/em&gt; documentation.&lt;br /&gt;4) Isn't &amp;quot;requires producing useless documentation&amp;quot; almost the &lt;em&gt;definition&lt;/em&gt; of a broken development method?  Yeah, sometimes it's demanded by the customer, but in other situations, does anyone &lt;em&gt;ever&lt;/em&gt; think this is a good idea?  It seems to me that if you're writing design documents that you never use, then you're missing the whole point of writing them in the first place.&lt;/p&gt;&lt;p&gt;Brain dump completed.  Time to do some more reading on agile methods.&lt;/p&gt;
</description>
<author>pageer@skepticats.com (Peter Geer)</author>
<comments>http://linlog.skepticats.com/entries/2007/07/05_2325/comments/</comments>
<guid>http://linlog.skepticats.com/entries/2007/07/05_2325/</guid>
</item>
<item>
<title>Yes Virginia, there IS software engineering </title>
<link>http://linlog.skepticats.com/entries/2007/07/Yes_Virginia_there_IS_software_engineering.php</link>
<description>
&lt;p&gt;We've all heard the phrase &amp;quot;software engineering.&amp;quot;  The question is, does such a thing actually exist?  Many programmers say it doesn't.  I disagree.&lt;/p&gt;&lt;p&gt;Steve McConnell recently wrote a couple of very interesting &lt;a href=&quot;http://blogs.construx.com/blogs/stevemcc/archive/2007/06/23/quot-engineering-quot-in-software.aspx&quot;&gt;blog&lt;/a&gt; &lt;a href=&quot;http://blogs.construx.com/blogs/stevemcc/archive/2007/06/28/software-engineering-ignorance-part-ii.aspx&quot;&gt;posts&lt;/a&gt; on this very topic.  The second was in response to &lt;a href=&quot;http://codebetter.com/blogs/eric.wise/archive/2007/06/26/rejecting-software-engineering.aspx&quot;&gt;this post&lt;/a&gt;.  Eric echoes many of the typical &amp;quot;software development isn't engineering, it's a craft/art/form of black magic&amp;quot; arguments.  Steve provides what I think is a good rebuttal.&lt;/p&gt;&lt;p&gt;I have a few problems with the typical anti-software engineering arguments.  For starters, the &amp;quot;building software isn't like building bridges&amp;quot; line really misses the point.  The idea is that building bridges involves repeatable and predictable patterns that allow engineers to accurately estimate project progress, whereas in software, every project is different and hardly anyone ever knows for sure how long things are going to take.&lt;/p&gt;&lt;p&gt;There may be some truth to that, but there's no reason to assume it's due to any inherent difference between civil engineering and software development.  Part of it is simply that most programmers don't develop a lot of very similar systems because they don't have to.  When you need a new bridge, you have no choice but to build it, but with software, you can just copy and customize.&lt;/p&gt;&lt;p&gt;But really, the reason most software estimates are just wild guesses is not because of the nature of software development, but because most development organizations are miserably primitive and unorganized.  To form reasonable estimates, you need historical data.  That means you need to track how long each phase of a project takes.  Then you can run the numbers for similar projects and come up with a reasonable estimate for a new project.  It's not rocket science.  It's just that many organizations simply don't bother to do it.  &lt;/p&gt;&lt;p&gt;Of course, as Eric mentioned, there is the issue of varying user requirements to consider.  The whole reason we have custom software is that users have differing requirements, and so every application is unique in some sense.  But if we're going to be honest, that only goes so far.  Every custom business application may be different, but there are still a lot of similarities.  You have your database layer, your business rules, your user interface, your reporting, and so on.  They may never be &lt;em&gt;exactly&lt;/em&gt; the same from application to application, but they're usually not fundamentally different.  Think steel bridge over a river compared to a concrete bridge over a ravine.  They're not exactly the same, but they're still comparable on some level.&lt;/p&gt;&lt;p&gt;Bottom line, software engineering, like &amp;quot;regular&amp;quot; engineering, is about process, not product.  Just because you're building something doesn't mean you're doing engineering.  A rigorous software development process is the exception in our industry, not the norm.  So it's not that software engineering doesn't exist, it's just that the vast majority of the people writing software are not doing it.  If you want engineering, head to someplace like &lt;a href=&quot;http://www.praxis-his.com/&quot;&gt;Praxis Critical Systems&lt;/a&gt;, not your run of the mill .NET contractor.  &lt;/p&gt;
</description>
<author>pageer@skepticats.com (Peter Geer)</author>
<comments>http://linlog.skepticats.com/entries/2007/07/03_2217/comments/</comments>
<guid>http://linlog.skepticats.com/entries/2007/07/03_2217/</guid>
</item>
</channel>
</rss>
