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.

Saturday, March 14, 2015

A very important read for software professionals

Alan Stevens has a blog post that I think is a very important read for anyone who is a software professional. I think that this is an especially useful read for developers just entering the field. Do yourself a favor and take the time to read this.

Friday, February 6, 2015

Creating Visual Studio Templates

I spent most of yesterday creating a solution template for Visual Studio 2013 so our developers can begin a project with about an hour's worth of plumbing already done for them. It was an interesting task and one that gave me a lot of satisfaction having completed.  I like knowing that I've reduced developers' time for a 1 hour task to 5 minutes (more on why it's not less than that shortly).

First, there were a few links that proved invaluable:
The process I followed consisted of creating a solution that I was going to use as a reference point. It had all the projects, folders, classes, dependencies, etc. set up. Then I exported each project as a template and went through each one making sure my parameter substitutions were in place. I then tested each individual project template to ensure they behaved as expected. Finally, I hand-rolled a multi-project template that tied them together.  That part was simple enough.

Where I started to hit a snag was that the multi-project template behavior creates a sub-folder for the first project and within that a sub-folder for each project (rather than having the project folders all created as peers of the *.sln file). There doesn't appear to be a way to change that behavior, which is unfortunate, because it prevents NuGet dependencies from working properly.  So while the template creates everything in a matter of seconds, the developer then has to close Visual Studio, relocate five folders to the correct location and edit the *.sln file.  That's why the template only saves 91.5% of a developers time rather than 99.8%.

Still pretty good, though.

Wednesday, January 14, 2015

Getting to a command prompt from Windows Explorer

Many years ago there was a utility I had installed on my Windows95 or Windows NT box that added an item to the context menu of Windows Explorer allowing me to open a command window with the folder I had in focus as the working directory. Somewhere along the line between Windows Vista and Windows 7 (my current OS) that utility stopped working. I never followed up to find it again and got along without it - though I would miss it from time to time.

Last week a co-worker made me aware that functionality is available in Windows 7, but it's slightly hidden. I have no idea how long it's been an option but am very happy to know about it - and I like to share what makes me happy.

Normally, if you right-click on a folder in Windows Explorer you get the context menu. Here's a shot of what mine looks like:
Context menu
Context Menu

Yours probably looks similar. But what my co-worker pointed out was that if you hold down the shift key when you do the right-click the menu includes an extra item:
context menu after shift key is held down
Context Menu, now with shift key

I have no idea why this isn't just part of the regular context menu, but I'm happy to know it's there now.

Wednesday, December 10, 2014

On the heels of our recent WTF.JS session

Our most recent meeting at the VT .NET user group was a series of lightening talks covering different JavaScript frameworks. Today I was directed to TodoMvc which is a site where the same application has been implemented multiple times using different MV* JavaScript frameworks. It allows developers who are considering the various (and numerous) options to "kick the tires" and see which approach might work best for them.


Monday, November 17, 2014

Nice writeup on bulk renaming of files in Windows

Recently I had to rename a bunch of files in a Windows folder to have the same prefix.  I found a page on the Windows Command Line blog that provided a nice write up on a number of techniques around bulk renaming.

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.

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.

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.

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.