Showing posts with label Career. Show all posts
Showing posts with label Career. Show all posts

Thursday, March 31, 2016

Seven year navel gazing...

The first post of this blog documented that I was preparing to start a new job. That was December of 2008. Seven years seems like a long ago.

On Monday I start another new job.

So I feel like this is a good opportunity to reflect on what these past seven years has meant to me and my career. A chance to thank the universe for what I've experienced, to thank the folks I've met, and to recognize where I think I'm going.

The month after that initial post I started working at MyWebGrocer. I had been hired to work on the eCommerce product and introduce some improvements to the development processes. I had played a similar role at my prior employer by implementing an automated build system and a few other bits of tooling. At MyWebGrocer, however, I was able to expand on that prior work. I led the introduction of a continuous integration server, static code analysis, automated unit testing, some scrum practices, and more. The team I was on kicked ass; our product was pretty stable, we were delivering new functionality, refactoring to reduce complexity and lines of code, and enjoying each others' company. After a few years I took a management position. While I eventually resumed my technical career - for those two years I had the privilege of managing the best team with whom I've had the pleasure of working. When I decided to leave management the MWG executive team was supportive; allowing me to resume my technical career without leaving the company. Not every employer would have done that; I'm appreciative.

My tenure at MWG coincides with my increased participation in the development community around Burlington, VT. I increased my involved with the VT .NET user group which led to co-founding the VT Code Camp. When MyWebGrocer founded the HackVT event they invited me to be on the planning team. I've continued to serve on the organizing team for HackVT. I've met amazing members of our technical community, too. Organizers of other local user groups, students, presenters, sponsors, employers, journalists, writers, etc. My participation in this community will continue regardless of where I work, and I'm confident that MWG's support of the local development community will continue, too. They've been reliable sponsors for VT Code Camp, HackVT, and other local development events.

As I transition into my next role MWG is six times larger than on my first day. I look at how the development team works and I see my fingerprints on a lot of it. It's not been a perfect experience. I've made mistakes and there are elements of what I would have like to have contributed to the MWG experience which are unfulfilled. This is the real world, after all. But these past seven years have (so far) been the highlight of my professional career.

Come Monday, when I start at Renewable NRG Systems I will be a significantly better, and more well rounded, developer than I was seven years ago. I'm eager to dive into a different industry for an organization which has a different corporate culture. New people, new knowledge - it's going to be great!

So thank you to the MWG team for helping me grow professionally. And for your friendships. Thank you to RNRG for the opportunity to challenge myself in an industry I feel is important.

Thanks universe.

Wednesday, July 8, 2015

End to End testing takedown

Google's Testing Blog has a post, Just Say No to More End-to-End Tests, which does a nice job of articulating my experience with automated testing. Specifically I've found unit testing to be more beneficial than integration testing and integration testing more beneficial than end to end testing (E2E).

The immediate feedback provided by unit tests, which run significantly faster than the other two, helps me as a developer. Using a TDD approach, and frequently invoking my unit tests, the design is refined and failing code is identified quickly. At my current employer we've tied the unit tests into the continuous integration process so that if code coverage drops by 1% or more the build fails. That's a nice defense against having the code atrophy. I also like the closing statement from Martin Fowler's post, Test Pyramid:
In particular I always argue that high-level tests are there as a second line of test defense. If you get a failure in a high level test, not just do you have a bug in your functional code, you also have a missing unit test. Thus whenever you fix a failing end-to-end test, you should be adding unit tests too.

Integration and E2E tests have value, and I'm not arguing they be skipped, but I've found the greatest ROI comes with unit tests.

Tuesday, March 24, 2015

"Coding like a Girl" - great read!

Last night I had the pleasure of attending the second anniversary party for the Girl Develop It! Burlington, VT chapter. It was a chance to see some friends I've made through the local developer community, meet some people in our industry who were new to me, and reconnect with a few of the people who I met the handful of times I was a TA for a GDI event. At one point a conversation I was involved in turned to the challenges of being a technical professional who chooses to dress in a more feminine manner. It was amazing to listen to these accomplished professionals discuss how their choice of outfit would, in many cases, predict how they would be received. At that point Kathleen Dollard recommended a blog post entitled "Coding Like a Girl".

I read it this morning and believe it is worth sharing. The anecdote shared in the post about the experience Tracy Chou, an engineer at Pinterest, had at a technical conference was facinating:
A couple years ago she attended a technical conference and on the first day, she wore a dress. When she walked around the conference, no one came up to talk to her. When she asked people very technical questions about their stack, questions she assumed would indicate that she was a programmer, she was brushed aside and told, “You wouldn’t understand.” She went back home that night really frustrated and flustered. She almost didn’t feel like going to the conference the next day. But she did and wore a nerdy tshirt and jeans instead, and she had a better experience that day. People assumed she was technical and didn’t dilute their explanations to her.
That an industry peer had to change her appearance in order to be taken seriously is disappointing to me as a guy - as a woman it must be infuriating.

I like to think I do a decent job when dealing with folks, I'm reasonably self aware. Yet I know there have been a few times where I've judged other guys who come to a tech event dressed in a suit and assume they're sales people and not "real" technical folks. If I've done that to another guy - with whom I have more in common - what biases do I have around a woman's appearance? Have they colored my interactions with anyone?

We can only do our best, I suppose. I'm going to try and be more aware of my own biases when it comes to appearance and adopt the advice offered in the post, "Assume people are as or more qualified than you" regardless of their appearance. I hope that you take a few minutes to read the blog post, too.

Wednesday, July 16, 2014

Running Our Internal Hackathon

For over a year now one of the best responsibilities I've had at work is to organize internal hackathons for our development team. Recently I told some peers how gratifying it has been to run these events. Some of them asked for more information as they consider introducing a similar event at their own shop.

Format
Ours is a two day event where staff are encouraged to be creative, explore new technologies, work with different folks than they would normally, and have fun. We try to have it be a 100% participation event, but that can be tough with vacations and the like.  We encourage team members who are concerned about a deadline or other conflicting priority to talk to their manager.  We really want to make space for everyone to participate and the managers will attempt to move mountains to encourage participation.  Our event is an exhibition format, not a competition.  The opportunity to stretch, explore and showcase their talents has (so far) been enough of a reward that we've not felt the need to have prizes, judging, etc.

First thing on Day 1 there is an event kick-off meeting.  The point of the kick-off is to build excitement and hit a few points about logistics like food, how we will respond to any production issue that may come up during the event, etc. We also take that opportunity to remind folks about some of the ground rules, and any last minute announcements.  It's worth mentioning that teams can start as early as they like on Day 1, including midnight if they choose, but the kick-off is the official start.

After the kick-off the teams disperse to work on their projects and don't have to come together again until the afternoon of Day 2 for the presentations.  We only expect people to work business hours but they are welcome to stay late or even stay over if that suits them.  We set up a couple of cots in our game room for anyone who decides to stay, or just needs a nap.  We bring in food for the participants, too.  Lunch and snacks on Day 1.  Breakfast, lunch and snacks on Day 2.

We start the presentations around 2:30 on Day 2. Because the event is an exhibition we ask the teams to touch on three questions during their presentations:
  • What were you trying to do?
  • How did you approach the problem?
  • What did you learn?
We've tried two formats for the presentations; "lightning talks" and "science fair."  The first three events we did as "lightning talks" with each team coming up to the projector and PA to showcase their project.  This had the benefit of everyone getting the chance to see each project.  Additionally, we have some remote staff who wanted to see the presentations so we used GoToMeeting to enable that (which had the added benefit of making it something I could easily record).  The down side to this format is it feels long. Additionally, each team could only get 5 minutes to present.  We had to fit all the presentations within a two hour window. Many teams found that to be a challenge. 

With our most recent event we switched to a "science fair" format where everyone would go visit each team's space and hear the presentation.  The advantage to this approach turned out to be the presentations were much more interactive and folks could spend as much, or as little, time as they wanted with each project.  There were a few down sides. A team's members would have to take shifts to visit other projects; someone had to stay behind to demo the team project. This lead to not everyone seeing every project. Remote staff couldn't participate in real time and will have to rely on videos of each team presentation I made using my phone.

The other thing the new format lacked was a clear end of the event.  I think we all missed that and will introduce a way to punctuate the event next time.  Based on the initial feedback, though, the "science fair" format was clearly preferred by everyone involved.

Project Ideas
Even though the event is not a competition we do have some ground rules about the projects.  People pitching a project idea need to have a reasonable answer for at least one of the following:
  • How does this benefit the company?
  • How does this benefit your Team?
  • How does this benefit your dev life/career in our shop?
The interpretation of "reasonable answer" is pretty flexible, but the staff has really respected the spirit of these guidelines.

Once someone has a project they would like to propose they enter it in a shared spreadsheet.  We ask people who are adding a project proposal to list themselves as the "Team Leader/Idea Person." That way other people can talk to them about joining the team. Plus, if they have a good idea but don't want to be the "leader" they can work out roles with folks who want to join the team. Teams can be as small as or as big as their idea requires. We discourage people from working solo because part of this is to encourage people to build relationships across the departments who are participating.

Logistics
The project sign up spreadsheet serves a few other uses. I use it to identify which teams are large enough to assign a conference room. We book all the conference rooms on our floor for the duration of the event so teams have a dedicated space to work on their project. Bigger teams get the bigger conference rooms.  The spreadsheet also allows me to reach out to staff who haven't picked a project so I can facilitate a match or identify folks who are opting out of the event for whatever reason.

Before our most recent event I also set up a survey in Google Drive so people could be included in the head count for the food order.  Our wonderful admin, Meg, needs to order the meals at least a week before the event. Locking in how many people are eating each meal prevents us from ordering too much (we had a fair amount go to waste the prior event when few people stayed for dinner).  The survey also allowed us to solicit information about food allergies or other dietary restrictions that would inform the food order.

Communications during the event, though, are intentionally low tech. Any announcements or group communications are done by sneaker-net.  I go room to room to let each team know when food is available, when the presentation deadline is approaching and anything else that needs sharing. One of the points I make in the event kick-off is that participants should refrain from checking email so they don't get pulled into the normal, daily activity of the business.  Management, from the CEO down, has made the investment in these two days by green-lighting the event - we don't want to squander that opportunity.

Finally, another survey is sent out a few days after the event to ask what went well, what could have gone better and what, if anything, should change.  This is important to inform how we plan the next event.  For example, the change to the presentation format came from a post-event survey.

So...
After running four of these events I believe we've more or less got the process of organizing the event worked out.  The participants, too, seem to be getting the rhythm and sizing their projects to something that can be accomplished in the time frame of the event.  The first few events had teams that were over ambitious and had incomplete projects - which we were OK with as long as they had a good answer to "What did you learn?" :-)

If you're considering organizing an internal hackathon they can be a wonderful opportunity for your team to do a deep dive on some technology, build relationships, and maybe even incubate a new business opportunity.

Monday, May 12, 2014

Free Programming Books

Early in my career I benefited greatly from reading a few books on programming. There were two books in particular that I believe raised the level of what I was doing professionally. First was Steven Feuerstein's Oracle PL/SQL Programming (I think I had the second edition). The other came years later and was Head First Design Patterns by Freeman, Robson, Bates and Sierra.

So I know the benefit of reading programming books - especially when looking for a deep dive on a technology. Which is why I was happy a colleague sent me this link to an index of free programming books on GitHub. It covers a variety of languages and did I mention is free? The link is https://github.com/vhf/free-programming-books/blob/master/free-programming-books.md

No idea if the next book to help me level up as a professional is there, but I'm going to hope so.

Wednesday, September 18, 2013

A realization in advance of VT Code Camp 5

This coming Saturday is our fifth Vermont Code Camp!

Those of us involved in the planning are running around engaged in our last minute preparations to ensure this event will be as successful (or more) than our prior 4 camps.  One of the things we do differently from other code camps is engage the whole tech community in our area.  Most code camps are centered on .NET and other Microsoft platforms - while there are BAR Camps and other events for different technology stacks. But Vermont having such a small population we've found that working with as many of the user groups as we can gets a much more robust set of speakers, exposure to different technologies and a wider sense of community.

So we usually provide a hand out listing the various technology user groups in the area.  Today as I was compiling the list I was struck by how vibrant the Vermont technology scene really is.  Here's the list (sorry for the spoiler VTCC5 campers).  It's a page and a half of groups and events that demonstrate Vermont has it going on!

I'm moving onto the next task to prepare for this weekend - but I'm very happy to be part of such a wonderful community.

Oh, by the way, have you registered for VT Code Camp yet?

Thursday, July 11, 2013

Career advice from someone who got lucky

I've got a secret.

It's not a bad secret, I didn't kill a hobo or anything.  

And it's not a particularly well kept secret - lots of folks who know me have heard about it.  

Although I've been a software development professional for nearly 20 years - my degree was in History.

Why am I going public with this confession?  Because one of the things which has happened in the course of my software development career is I'm occasionally hit up for career advice - often from people who have a stronger foundation than I did starting off.  I'm always happy to oblige with whatever meager insights I can offer; but I sometimes feel I need to qualify it with the fact I fell into this career by happenstance.  I'm very glad I did, too, because I've enjoyed myself and had a bit of success in the process.

So when I got an email recently from a member of our local user group asking what skills have helped me my career I thought it would be a good topic to cover as I rediscover my blog.

It's a pretty open ended question when you think about it.  One I would probably better be able to address in a conversation rather than an blog post.  But there are a few things that I can put down which might help him out.
The first thing that I thought of was a post I did several years ago that covers a related topic, staying current.  The post is http://bigpigvt.blogspot.com/2009/01/keeping-current.html.  It's a little dated, obviously, but staying current from a technology standpoint is very important.  One update from the original post, too, is my participation in the user group directly lead to my current job.  The few presentations I did combined with actively asking questions during others' presentations raised my visibility in the local development community.  My current employer knew about me before I knew about them and that gave me an edge in the job hunt.  Local user groups are also a key opportunity to build and maintain your professional network.

Another thing I believe is nothing beats experience.  Getting a programming position if you are not already doing it professionally - after college or during a career change - can be challenging.  You're up against a lot of candidates.  One way to differentiate yourself is to have a history of actually coding.  There's a bit of a chicken and egg issue there, though; how do you get meaningful programming experience if you're not already in a position?  During my tenure as a hiring manager I would advise inexperienced candidates that one approach to that dilemma would be to begin contributing to an open source project.  It will expose you to programming skills and techniques that you won't get from books or many tutorials.  Once your contributions are actually folded into the project you'll be able to cite those contributions to a potential employer.  So go to http://www.codeplex.com/site/search/openings, http://sourceforge.net/people/ or other open source option and get coding!

Finally, what worked for me, and this is definitely because of the non-traditional trajectory my career took, was to be patient and not expect to be programming straight away.  The reason I said I have nearly 20 years as a "software development professional" and not as a "programmer" is because I started out doing customer support for a software company, transitioned to being a software analyst, transitioned to a developer analyst and then finally into a full-fledged programmer.  For me, the process took about 3 years but it was worth it.  My understanding of the software development life cycle is thorough and based on experience.


So now you know my secret.  It's just between us, though, because my other secret is nobody really reads this blog. :-)

I'm back in the technical saddle

After a 2 year stint as a software development manager I've decided to focus my career on a technical path again.  While I had a fair amount of success in the management role I never got the same level of job satisfaction that I do from working on code and having it run.  A podcast I listen to occasionally, Manager Tools, described the difference between being an individual contributor and a manager as being like the difference between volcanic eruptions and tectonic plate movements.

So I'm back as a senior engineer on the team I managed.  ASP.NET MVC4, SQL Server 2008R2, jQuery, unit testing... Lots of fodder for blog posts and getting back into doing presentations at user group meetings.

I'm definitely more of a volcano kind of guy.

Friday, April 9, 2010

Getting ready for Visual Studio 2010 and .NET 4

Monday is the launch of Visual Studio 2010 and .NET 4! Are you as excited as I am? Yeah, I thought so.

One of the things I've been doing to get ready for this (in addition to playing with the RC) has been preparing for the April VT.NET user group meeting. Our meeting coincides with the release date so we're dedicating the meeting to have people share their favorite new feature. I'll be talking about:
  • snippets for web developers (e.g. HTML, ASP.NET and MVC)
  • web.config transformations
  • JavaScript intellisense
  • and the revised Add Resources dialog
Information about the VT.NET user group is available at http://www.vtdotnet.org/ and registration for the event is at http://vtdotnet.eventbrite.com/. One of the new things we're going to do at this meeting, by the way, is to conduct the raffle for people who have registered for the meeting. So go sign up before the meeting!

Tuesday, January 19, 2010

Book Review: "slide:ology"

When I attended PDC in November one of the booths I visited in the exposition hall was O'Reilly Media. They have been, and continue to be, supporters of the VT .NET user group and the VT Code Camp - so I wanted to drop by and thank them for that. It turns out Marsee Henon was there. Marsee's job is to reach out to user group leaders on behalf of O'Reilly - so she was the perfect person to run into. Knowing that I have done presentations for the VT .NET user group she was kind enough to give me a copy of "slide:ology" by Nancy Duarte.

Nancy Duarte is CEO of Duarte Design, one of the largest design firms in Silicon Valley, which focuses exclusively on presentations. She has poured her expertise into "slide:ology" (subtitled "The Art and Science of Creating Great Presentations"). The book sets out to liberate presenters, and their audiences, from the tedium of presentations which are little more than documents shown through a projector. We've all attended such presentations, of course. Slide after slide loaded with bullet points with the speaker reading each one in turn.

The early parts of "slide:ology" takes the reader by the hand and reviews with him/her how bullet points can be distilled down to ideas to be communicated. Additionally, by considering the audience those ideas can be delivered in the most appropriate manner. Those practices alone can help presenters be more effective.

Much of the remainder of the book is focused on moving your presentation from merely effective to compelling. Examples of effectively visualizing data (using graphs, images, diagrams, etc.). Guidance on the impact of color and font choices to communicate and to best represent yourself and/or organization are offered. Incorporating movement and animations was a topic I had not considered before, but was a section I found particularly useful. Finally, there is a section on how templates can be defined to provide a uniformity for an organization with several presentations.

I've prepared two presentations since reading "slide:ology" and both were better as a result.

The book itself is a fairly quick read and presented in a clear, concise manner. The size of the book is reminicent of a slide show, too, with the layout of each page following many of the same guidelines for design and communication. I found some of the early sections a little pretentious - but that might be due to the fact I'm not preparing presentations designed to save the world or provide clean drinking water to the third world. If you read "slide:ology" and start to feel that way just power through... there is more than enough content to justify reading the whole book.

This book belongs on the shelf of anyone who prepares presentations - especially if they lack a design background.

Tuesday, January 12, 2010

Links from my VT.NET User Group talk

I had a lot of fun presenting at last night's VT.NET user group meeting. The topic was a wrap up of my trip to Microsoft's PDC conference in Nov. 2009. There were a few links I mentioned during the talk I wanted to share.

Obviously folks will want to check out the PDC web site at http://microsoftpdc.com/ for access to all the videos and slide decks. There are additional materials for some of the official announcements at the PDC press site, http://www.microsoft.com/presspass/events/pdc/default.aspx.

The data developer center can be found at http://msdn.com/data

As I mentioned during the talk, one of the sessions I attended was "Building Location Aware Applications with the SQL Spacial Library." I described a demonstration from that session where location information in an Excel spreadsheet was used to highlight portions of a map. There's a fairly comprehensive blog post outlining that demo from the presenter available at http://blogs.msdn.com/oliviermeyer/archive/2009/11/17/introducing-the-excel-spatial-spreadsheet-building-an-excel-add-in-for-doing-spatial-analysis-and-spatial-operations-in-net.aspx with a follow up blog post at http://blogs.msdn.com/oliviermeyer/archive/2009/12/29/the-excel-spatial-spreadsheet-part-deux.aspx.

Finally, during the session I mentioned a few speakers who stood out. Here are links to their blogs:
I hope everyone that attended the session got a little something out of it.

Wednesday, September 16, 2009

VT Code Camp 1: Summary

It's been nice to read some of the posts people have made about the VT code camp. The ones I've seen are by Bradley Holt, Chris Bowen, Dave Burke and Jim O'Neil. But I thought I would post my own summary of the first VT code camp.

First, I want to reiterate my appreciation to the many donors, speakers and volunteers who made the event the wild success that it was. You folks rock!

Code camp setup began around 7:30AM. This was only my second time at Kalkin Hall and was just as impressed with this location as I was when I had seen it the day before. It is just a wonderful space that suited our event to a "T." Again, many thanks to the UVM School of Business Administration for opening their doors to us. The setup team included Margot Schips, Julie Lerman, Laura Blood, Carl Lorenston, Bradley Holt and Dan Russell. (If I'm forgetting someone I apologize. Things were moved so fast and furious during the day I neglected to stop and take notes to do this properly.)

We got our only crisis out of the way early on Saturday when at around 7:35AM when we found out one of the rooms we were told we would be using turned out to be hosting a different all day event. After some frantic calls made by Margot we got it straightened out and were able to use an alternate room which worked just as well.

After that it was smooth sailing. We had a marvelous breakfast spread provided by Green Mountain Coffee Roasters. Lots of coffee, lots of pastries, lots of bagels and even lots of fruit. It was all yummy (and I speak from experience... lots of experience).

In typical VT style we began the welcoming remarks a few minutes behind schedule (what? you got someplace to be?). After thanking the donors, orienting everyone to the space and reviewing the day's schedule we turned our attendees loose. Plenty of positive energy and familiar faces.

The first two time slots went off without any projectors exploding (although it took a little bit to figure one of them out). Laura Blood was super-generous with her time and watched the registration desk. After that we broke for a lunch provided by MyWebGrocer. Lots of pizza and soda. Filled me right up. By this point my schedule started to even out. We had the swag organized, the registrations had started to die down and Julie and I had done the pizza run (complete with expert parking job). So I made the most of it and enjoyed the lunch break. It was great to spend a few minutes chatting with folks I knew and meeting folks I hadn't - plus the surreal experience of meeting in person folks I only knew from online.

After lunch we dove back into session. We moved the registration desk downstairs where it was manned by Dave Burke. Dave's one of the first people I met when I started to attend the .NET user groups and I always enjoy talking with him. Plus, when he adjusted my name tag for me it was the most action I had had all day.

Soon it was time for another snack break - this time courtesy of Microsoft. Sodas, brownies, and other tasty treats. Noshing and networking... good times.

We held the raffle during the last break. We gathered in one of the session rooms and used a random number generator to identify the winners. Julie also took a moment to extend a special thank you to Steve Andrews and Alison Gianotto who were the two speakers who travelled the farthest. After all the support our donors provided we ended up with nearly 30 prizes to give away - so we ran a little longer than expected. The final sessions started a little late, but everyone was still going strong. We volunteers set about cleaning up during the last session so we could get an early exit to a social gathering at the Windjammer. Special thanks to Chris Bowen and Microsoft for treating the speakers and volunteers so kindly.

I could keep writing about all the people I met and reconnected with. I might even do a post about the lessons learned that I hope to apply to the next code camp (yes, we intend to do this again). The whole experience was exciting, maddening and gratifying. I'll keep searching for posts, tweets and pictures tagged with VTCODECAMP to see what people thought. I hope you do, too. And join us at the next VT Code Camp!

Friday, September 11, 2009

Twas the night before code camp...

No more messing around - tomorrow is the first VT code camp. We've got everything as done as we can at this point. Excellent speakers/sessions lined up, a kickin' venue, a good team of volunteers and lots-o-swag. We've got over 100 people who have registered to attend, which far exceeds my expectations. I think I'm probably on the record somewhere stating that for our first code camp 50-70 would be a great turn out but talk of 100 was fantasy.

Looks like I was wrong. Happily, happily wrong.

Seriously, for this event to have that many people register is a huge testament to the development community in VT and the northeast in general (we've got participation from as far away as PA and NYC).

I'm super pleased with the support we've received from our donors, too. The UVM School of Business Administration has opened their doors to us for the venue. Green Mountain Coffee Roasters is covering breakfast, MyWebGrocer (my employer) is buying pizza and soda for lunch and Microsoft is providing an afternoon snack.

Chris Pels and the http://www.thedevcommunity.org/ site helped us by managing our registration and speaker abstract submissions which was HUGE.

We've a pile of swag to raffle and give away, too. Donors are:
It takes a lot of people to get an event like this off the ground and we have a great team. Super big thanks go to Bradley Holt, Carl Lorentson, Julie Lerman, Laura Blood, Margot Schips, Martin Stevanof, Matthew Weier O’Phinney and Rob Rohr who did a lot of heavy lifting to get us poised for a successful event tomorrow.

I also got some wonderful advice about organizing a code camp from Chris Bowen and Jim O'Neil our regional Microsoft development evangelists and also from Dennis Perlot and Supriyo "SB" Chatterje from the CT code camp. These four guys provided some good input and are all class acts.

Finally, I wouldn't even be able to be involved in this kind of community development if it weren't for my wife, Sue, who will be taking care of the kids while I'm at the code camp. So she gets a thank you, too.

So that's it. Everything is printed, the alarm is set and I'm really very, very excited to see how we do.

Thursday, July 9, 2009

VT Code Camp - Call for Speakers and Registration: Now Open!

The first VT code camp is going to be Sept. 12 at the UVM school of Business Administration. We've just opened up the web site for registration and call for speakers. Get started at http://www.vtdotnet.org/codecamp/

You can follow the VT code camp on Twitter using #vtcodecamp

Wednesday, June 24, 2009

CT Code Camp Recap

I attended the second CT code camp on June 13th at the New Horizon's center in Hartfort, CT. Ostensibly it was a research trip for the code camp we're organizing for VT this fall, Sept. 12. However, I love going to code camps because of the educational value and networking opportunities they present. As I've previously posted, I've been to a few of the code camps held in Waltham, MA - so I was excited to have a slightly different experience.

The venue for this code camp was a well appointed learning center with plenty of rooms of varying capacity. Each room had projectors, lots of tables and chairs. At the Waltham camp most of the seating lacks a table, so it was nice to have a place to put my notebook (rather than balancing it on my knee). One thing I noticed by its absence was the wide hallway at the Waltham location. The hallways at the New Horizon center seemed more narrow. Maybe it was just the 150 or so people moving through them, though.

I encountered the registration area as soon as I entered the building. It was nice to see Dennis Perlot's smiling face at the desk. I met Dennis at the New England User Group Leadership Summit in May. He and S.B. Chatterje run the CT .NET user group and this code camp. The registration packet included the session schedule, list of donors and a copy of Windows 7 Release Candidate.

The entire event was extremely well run. My only quibble was the lunchtime activities, focused on job fair like sessions such as resume writing and networking skills, went on longer than I would have liked. I'm sure this is a result of my being comfortable with those topics - I just would have preferred to have at least one technical session going on concurrently. But as I say, that's a quibble. The entire experience was well worth the trip and I hope to make additional CT code camps.

I've created separate posts for 3 of the 4 sessions I attended. I'm not bothering to post about the 4th session because I had to leave early and my notes aren't complete. My session specific posts are:

.NET Troubleshooting in a Production Environment - Polina Cherkasova

jQuery – Why You Want It & How to Use it in ASP.NET - Dave Bush

Scrum 3 Roles, 3 Ceremonies, 3 Artifacts, 3 Best Practices - Dan Mezick

CT Code Camp Recap: Part 3

Scrum 3 Roles, 3 Ceremonies, 3 Artifacts, 3 Best Practices - Dan Mezick

I'm not sure how to write this session up. This was by far the most compelling session I attended. Dan is a dynamic speaker, his points are sound and I found the approach to development he described very appealing. There was so much content presented during the session I'm not sure any blog post I can write could do it justice.

The session was an overview of Agile and Scrum. I've never worked in a development group that embraced
the agile approach. Many of the teams I've been on have conducted what they called "Scrum" meetings, but those meetings didn't match what Dan was describing - let alone the process that was supposed to accompany it!

What was fascinating about Dan's presentation was it was more about team dynamics and interpersonal relationships than it was about the development process exactly. The same techniques being described could apply to any team trying to complete a number of tasks in support of an end goal. The whole process being described was very empirical in how the project's progress is being tracked. One example of this is to hold off making a decision until the "last responsible moment." I LOVE this concept. The idea is that as more information comes in we can make a more informed decision. If a decision is made early on it is human nature to not reverse that decision - even in the face of additional evidence. By delaying the decision to the last responsible moment we're increasing the odds that the decision being made is as fully informed as possible. I'm hoping to adopt this in my daily work as application designs are considered.

Another example of having a project managed by evidence had to do with project schedules. The idea of backing into a release date, for example, appears to be completely abhorrent in this system. By identifying the release date early the team exposes itself to "inattentional blindness" which is a phenomenon where people don't see something that's there because they are paying a lot more attention to something else. In the case of the release date, the team becomes so focused on the scheduled release date they are unable to perceive changes or events that had they been perceived would lead to a change in the release (either schedule or scope).

The 3 Roles

Dan described an appropriately organized team as consisting of 3 roles: the product owner, the Scrum master and the team.
  • The product owner is the individual responsible for collecting and elaborating the project requirements and putting them into the product backlog (see the 3 artifacts). This individual is the interface with all the stakeholders who are interested in the resulting product (e.g. management, sales, marketing, users, etc.).
  • The Scrum master is the individual (and it is an individual - one person, singular) responsible for product backlog - they own and prioritize it. The Scrum master is not a traditional project manager. Their job is to "patrol" the product boundery to ensure no requests are coming into the product backlog that are not appropriate for that product. By having this be an individual the product backlog prioritization is not subject to the conflicting whims of multiple individuals
  • The team is self-organized. The team participates in the product design. They decide on a subset of the product backlog that will be addressed in a particular sprint. A good rule of thumb is to have +/- 5 to 7 people on a team. No one who is allocated less than 50% to the project is considered a team member. "Committed people" are >= 50% allocated, everyone else is merely involved.

The 3 Ceremonies

The process Dan described is punctuated by a few types of meetings (there are always meetings, right?); Sprint planning meetings, daily Scrum meetings and project retrospective meetings.
  • Once the Product Owner has put all the requirements, requests, bugs into the product backlog and after the Scrum master has prioritized the backlog it's time for the team to meet. The purpose of the meeting is to decide what can be accomplished in the next development period. These development periods are 2 - 6 weeks long and are called "Sprints". In the sprint planning meeting the team identifies which sub-set of the product backlog can be accomplished in the sprint. The team must pick off the top of the product backlog (ensuring priority work is being done) but they decide how many of the items realistically can be completed. Other stakeholders can attend the sprint planning, but it's the team's meeting. Also, remember before I mentioned the team is self-organized? This is part of what that means. It's worth noting that by making the decision about what to work on this way, the team is delaying decision until the last responsible moment. The product backlog is as mature as it can be, so the team is committing to the truest priorities possible.
  • Once the sprint is underway it's important for the team to meet daily to provide an update on progress. This is the daily Scrum meeting. Each team member reports what they accomplished the prior day, what they intend to accomplish that day and what (if any) obstacles are in the way. The reason the meeting is daily is to prevent "cognative dissipation." The idea is if I say I'm going to do feature 1 today, and nothing is in my way, the team is going to notice if feature 1 isn't finished (or at least had progress) tomorrow. If the scrum were held weekly, well, who remembers what they worked on a week ago let alone what commitments a peer made? Having the ongoing, consistent knowledge might prompt one of my teammates to find out what problems I might be having. Again, this is the team's meeting. Other stakeholders can attend - but they better stay out of the way...
  • Once the project is complete it's time to reflect on what worked well, and what needed improvement. That's the project retrospective meeting. These meetings might expose some hurt feelings and raw emotions. On a mature team these can be worked out. The goal is to improve the process for everyone so the team, product owner and scrum master can do better the next time around.

The 3 Artifacts

There are three documents
  • By now you probably have a good idea of what the product backlog is; it's a prioritized list of each feature, enhancement request and bug that is to be incorporated into the product. Normally the list is dynamic. Requests are made, bugs reported and the product owner adds all that to the product backlog. The Scum master prioritizes the product backlog and the team provides estimates on level of effort for each item on the product backlog. However, once the sprint is underway the product backlog is static (at least as far as priority goes). If requests/bugs come in they can be added to the bottom of the stack, but nothing gets prioritized to the top. That's because while the sprint is underway the team is working off the sprint backlog.
  • The sprint backlog is the result of the sprint planning meeting. It's a mini-product backlog of what the team will be delivering in the sprint. Because this is what the team has committed to deliver, and that commitment was made at the last responsible moment, it is unacceptable to change the priorities of the sprint once it has begun. That's why the product backlog is static during a sprint.
  • A burn-down chart is a graph that shows work to be done on one axis and time remaining on the other. Dan showed some examples. Google can help you find examples, too.

The 3 Best Practices

Unfortunately, by the time we got to talking about the best practices, Dan was out of time. He threw up a few slides and pictures to communicate the ideas, but I'm just going to provide some links which will cover the topic more completely.
  • User Stories are a way to capture user requirements.
  • Planning Poker is a technique teams can use to provide estimated levels of effort for items on the product backlog.
  • Scrum Board (a.k.a. task board) is a tool used to reinforce the work being done. This is the only thing I've been able to implement in the immediate aftermath of the code camp. My whiteboard has been converted to track the tasks on which I'm currently working. One of of my teammates likes it, too, and has started using one. I expect we'll use one for our team in short order.

Final Thoughts...

Dan's blog is at http://www.newtechusa.com/agile/blog/

Tuesday, June 9, 2009

I'm So Excited (and I just can't hide it)

I'm one of a handful of people trying to launch a code camp in the Burlington, VT area. We just received confirmation on the venue and can now start asking people to hold the date. It's going to be on Saturday, Sept. 12, at the UVM Business School.

There's still a lot of work to make it happen but I can't tell you how thrilled I am that we have a venue and date.

Wednesday, May 6, 2009

Notes from the New England User Group Leadership Summit

This past Saturday I had the opportunity to attend the 2009 New England User Group Leadership Summit. Hosted by Microsoft and O'Reilly Media it was an event dedicated to helping user group leaders connect, share ideas and experiences. It had nothing to do with the technologies these folks are usually discussing. Rather, we spent time talking about how to build community, publicize events, manage event logistics and things of that nature. Attendees came from all over the northeast - primarily New England but there were also folks from Pennsylvania and New York (which is not part of New England for you folks who don't know better).

The summit was held at the Microsoft New England Research and Development Center (a.k.a. the N.E.R.D. center) in Cambridge, MA. This was a really groovy facility with excellent meeting spaces.

A wiki was set up for all the session notes, available at http://neugsummit2009.pbworks.com/FrontPage/ Take a look. Even if you're not involved in a technical user group many of the topics relate to any community group. I was commenting to Chris Bowen that one reason I was really happy to have attended was in addition to what I learned which I will be able to apply to my involvement in the VT.NET user group much of what we discussed applies to my other community involvement, the Burlington Irish Heritage Festival.

One of the attendees, Rachel Ford James, took lots of photos and has made them available on Flickr. She really took some stunning photos that captured the spirit of the day. As you view the photos you may wonder why there are a number of shots with mixers that appear to be smoking. There was a break between sessions which was conducted as a team building exercise where groups of attendees selected ingredients for an impromtu ice cream flavor. The ice cream was made using mixers and liquid nitrogen. It was great entertainment with lots of noise, visuals and (of course) taste. Being from the land of Ben & Jerry's, though, I was terribly jaded about the results.

Many thanks to O'Reilly and Microsoft for hosting this event.

Friday, February 20, 2009

Yes, I'm still here

I haven't posted anything in a little while because I've been caught up trying to settle into the new gig and establish myself here. So no great revelation of technology to write up. I did want to share this link of 10 things that bother developers. Funny and accurate.

As for the new gig - I've come to the conclusion that there must be many successful companies which have code bases which could benefit from a bit of cleanup. Luckily, I'm at one of those companies that recognizes that fact and is getting us positioned to do it.

I'm expecting to publish a couple of posts in the future which I originally wrote an internal blog at my previous employer. I just need to scrub some of the identifiable information from it so as to protect the innocent.