Monthly Archives: January 2008

CodeMash 2008 – KeyNote

Neal Ford presented the keynote for CodeMash, called Software “Engineering” & Polyglot Programming.  Interesting title and speech.  Firstly, for the business folks, polyglot is someone who is able to speak, write, or read several languages.  That out of the way, Neal went on to compare the roles of traditional “engineers” with “software engineers” – which on the surface level happens alot.  He outlined some pretty distinct differences, and even joked about how software developers explain their jobs to family members around the holidays (something I have struggled with for years) – commonly referred to as the “computer guy” when rarely does one actually understand (nor typically care) about what a software developers job really consists of.

After a few bridge slides (supporting his engineer comparison/argument) he went on to talk about “platforms” referencing the java platform will outlive the language, and how language complexity actually makes a developers’ job harder.  He argued  many developers are already polyglot (using tSql, html, java/.net, ado, css, etc.) – why not add the latest dynamic language to the stack?  interesting argument.  He advocates picking the most powerful language you can tolerate (and get paid for), or otherwise put, use the most suitable design tool for the requirements – not because its java/.net – but because it can produce results, quickly. 

He wrapped up with a comment to strive for 100% TDD, start with a platform, unit testing/automated builds and bolt on the most appropriate flavor – so long as it can be tested.  overall good talk, and neat pics of bridges 🙂

How to talk technology to humans

My first session at CodeMash was the pre-conference Weds night – a panel about promoting tech to “others” (being clients, business associates, managers, etc.)  The converstation started off initially from a consultant perspective, touching on the challenges in promoting newer “edge” technologies to decision makers/execs who aren’t yet familiar and/or vested in their current offerings.  One story referenced how clients would specifically seek out java or .net applications – before even discussing the business requirements.  The panel agreed this was the wrong approach.  Understanding the requirement should come first, then align the most appropriate technology to solve the specific need.  It shouldnt be technology first, problem second. Seems to make sense. 

Next came a comment about devs not being “consultants” – however, the panel disagreed.  Devs are constantly “selling”, albeit internally, they are still speaking to, persuading or recommending improvements – and this is nothing different.  Joe went on to add, he believed Thought Works to be doing it right – hire the smartest most capable people and the technology will follow, in other words, if a company must standardize on a platform, leave it up to the dev to implement the most appropriate language.

Agile also found its way into the converstion, as agile adoption has been mixed, especially in bigger organizations, and in some cases its actually being done wrong.  Agile is about feedback. how you deliver it is as important as what you deliver.  One recommendation was to be a “virus” start small, independatly, write unit tests, techniques will get noticed in productivty, quality, etc – others (worthy) will notice, ask questions, experiment.  After unit testing, implement version control/automated builds and eventually continuous integration (CI).  Use index cards/stickies in your area to define work (“stories”) – keep tasks small, focused, you’ll get more done faster.  Evaluate pair-programming..

Techniques included selling your ideas is easier than selling yourself.  lead by example (even if quietly).  Interested, passionate devs will follow.  they took a survey and asked people with cool jobs to raise their hand – 80% went up.  They went on to add, (i believe according to a piece from Dave Thomas) – attendees were in the top 10% of their field.  which makes sense, those seeking out to better themselves do tend to advance more often. 

When promoting a new technology, never under-estimate how boring you can be.  You may have already sold them, let others absorb the info and ask questions.  Other “sales” tips included: match body language, replicate verbal buoyancy, match speech speed and get to know people and what motivates them.

Lastly, they ended with how to drive change when consistently facing deadlines.  First off, (per agile) nothing should take more than 6 months to put into produciton.  Ala SOA, de-couple, break things into smaller tasks, this also enables adopotion of multiple technologies by isolating functional units, which helped to clarify how/when you choose to change technologies (from current to latest/greatest).  There is no single answer, sometimes what you doing makes sense.  if the technology you are using is still effective, there may be no need to change?  Try to find the right technology for the task, emphasis simplicity – to do so you obviously need to stay abreast of the latest flavors.  Start with a little at a time.  Play with things in your spare time, make time if need be.  A 2 hour window can even yield productivity with newer edge technologies.  Lastly, get help from the community, read blogs, ask questions.

Not bad. So far, we’re off to a good start.

CodeMash v2.0.0.8 – on the map!

I arrived at CodeMash Wednesday eve, after a short drive from Michigan (about 2 hours!).  Kalahari is a pretty nice place for a conference.  Sure, its got tons to offer families/kids, but as an attendee, the location is a nice change as compared to hotels and more formal convention centers.  I’m here for a couple of reasons, firstly to support the local DEV community, can’t tell you how happy I am to see this take place in the MidWest.  Equally important, as the CIO I’m scouting for talent.  We’ve struggled to find good devs in Michigan, people really passionate about technology, able and willing to push the envelope forward.  Lastly, I’m hear to learn!  I do my best to keep abreast of emerging technologies, but in my daily life I rarely have the time to dive as deep as i’d like, so I hope to take this opportunity to learn from some of the guys that are making this happen (right here in our backyeard) – specifically with regard to AGILE!  

First things first, my initial impressions for CodeMash are awesome.  I under-estimated the volume of midWest developers actually involved in the latest iteration of “web 2.0” technologies (i.e. ruby, groovy, RIA, etc.)  They are expecting just over 300 developers this year, up 40% from last year!  Also cool is the mix of backgrounds here, all the major camps are represented, msft (.net) , sun (java) , ibm, adobe, plus rails, python, php, and lots more.  Its certainly a change from a few years ago where you aligned yourself with one or the other (and typically spoked negatively toward those not as cool as you).  To me, its very refreshing.  An early theme I’ve already observed is advocating for platform standardization, yet choosing your favorite flavor (language) based on the task/user requirements.  Am guessing Neal Ford will dive deeper into that tomorrow at the keynote.  pretty cool stuff.

Actually funny to me, is in the Conference Guide they acknowledge – “Why should the East and West coast have all the fun” – my thoughts exactly!  I’ve attended several “mashup” conferences over the past couple years, and yes, they’ve always been on the coasts, boston and/or the SF bay area.  A couple quick observations, firstly the format is slightly different, but more on that later.  Initially, (as expected I suppose) the coasts are represented by more “open source” folks, lots of php, mysql, ruby… almost no .net or java reps.  Also, (as expected) more participation by Google, Yahoo, AOL – here it’s slightly different, equally exciting, but a wider array of technologies (and big corproate sponsors).  Which is just fine for me, the coasts are always going to push he latest and greatest – lets face it, thats where most the innovation occurs, but not to be outdone, the midwest, with CodeMash, has provided a fantastic venue in our backyard to get exposure to edge technologies. 

well, out of time – off to the pre-conference session.  more soon.  I’ll do my best to summarize the sessions I attend for the folks back home and post some pictures over at Flickr ( when i get a chance.

Drinking the M$FT juice – using Agile!?

Like most 30-something techies, I grew up with Microsoft.  I earned my stripes in the NT 3.5 days, moving from token ring to ethernet and installing/creating drivers the old fashioned way.  Those days are gone, thank god.  Today I hang my hat in a more developer-centric capacity.  In late 2005 we moved to Visual Studio Team System (VSTS) and Team Foundation Sever (TFS).  First, let me say TFS/VSTS offers vast improvements to the old visual interdev/source safe days – namely, it works.

VSTS (Team Edition) offers distinct “roles” representing the contributors on a typical development team, project management, dev’s, testers, db folks, etc.  We got exposure to the suite using a go-live license late in beta.  We had a large project which required our team to ramp up to about 15 DEVs for about 9 months with quite a few being overseas.  We immediately put VSTS through the wringer, and I’m happy to say looking back, I believe we made a good choice.  VS has long been known for its rich IDE and its latest iteration (vs2008) can now even target multiple .net frameworks (back to 2.0) and even has javascript debugging, which is a first for me. 

Fast forward to today – we’ve now moving forward with TFS 2008 and I’m very anxious to put it’s MSF for Agile stuff to the test.  Next week I’ll be attending CodeMash (my first) which looks to be a great event covering several items on my current “to do” list, namely AGILE!  Our DEV team has loosely followed an Agile-like approach (meaning not waterfall, with short interations) however, I’m excited to now take it to the next level implementing a more formal adoption, from project management through TDD & CI. 

The challenge now becomes embracing Agile using our current VSTS/TFS investment (which hasnt been small.)  It’s all there on the surface; code-coverage, automated testing, stress/load testing, automated builds – but, part of what I’m looking to get out of CodeMash is some REAL WORLD exposure.  Now, its safe to assume, M$FT isn’t going to necessarily provide the best tools for Agile purests – but my hopes are they’ll get us a step closer to supporting (and promoting) what I have come to believe is the right direction for our development efforts .

Our team is currently small, some say thats good.  However pair-programming may become a challenge for us, and I’m still interested to evaluate if TDD becomes a 100% requirement?  Needless to say, I’ve got more questions than answers – but I’m hopeful to get some assumptions validated next week @ CodeMash.  Hopefully I’ll see you there!