Creating New Stencils in Visio 2013

I love Visio. It’s a great way to make great-looking diagrams and illustrations very quickly. If you have a number of common shapes that you use from various stencils or some custom shapes that you’ve created yourself, you may want to save them in custom stencil. Visio did a good job of making this not-so-obvious to do in 2013, and so here we are.

Create your new stencil

The real “secret” here is that the stencil creation and editing tools are tucked away on the Developer tab in the ribbon, which is not visible by default. So step one is to make it visible. Go to File > Options > Customize Ribbon, and check the box next to Developer. Once the Developer tab is visible, creating the new stencil is as easy as clicking the New Stencil button.

Visio_Developer_NewStencil

Add shapes to your stencil

The stencil is obviously not going to do you much good without any shapes. The best way I’ve found to add shapes is to simply drag and drop them from the designer. Want a shape from another stencil? Drag it to the designer and then drag it back to your stencil. How about a frequently used image? Add it to the designer via Insert > Pictures, and then drag it into your stencil.

Visio_Stencil_AddShape

When you’re done adding shapes, just click the save button by the stencil header. That’s it!

Accessing your new stencil

When you need to access your stencil, you should find it under More Shapes > My Shapes. (Note that My Shapes looks to the default stencil location, C:\Users\you\Documents\My Shapes.) You can also browse to it using More Shapes > Open Stencil.

That’s it! Now you’re a stencil pro. Create different stencils for the different tasks you need different sets of shapes for. You’ll make diagrams faster and with greater consistency. Everyone will want to be you. Okay, that last part was a lie. People might still like you a little more and appreciate your amazing diagrams, though.

Learning Cukes

Cucumber

I’ve written [several] [posts] [in] [the] [past] about my team’s adoption of SpecFlow and BDD, and I’m still loving it several months later. The large project that we started with has nearly 10,000 lines of code and 93% code coverage. We’ve gone through several large refactors, and each time we walk away with a high level of confidence that no functionality was lost or affected negatively. It’s been a really great experience.

One of the challenges of adoption was just learning the Cucumber step definition syntax, or rather, how to write cukes. For getting started, I recommend taking a look at this page for a good list of descriptions, scenarios, and examples. If you’re using SpecFlow, you may also want to check out their step definition documentation on GitHub.

Once you’ve got the basic syntax down, the hard part begins. My team hasn’t had much formal discussion about Cucumber best practices, and we’re still learning what works and what doesn’t. If you look around online, you can find a few good articles with helpful suggestions, though.

Here’s a great post that I recommend reading. This article offers advice on just about every aspect of creating and managing your cukes, from feature files to tags to running and refactoring.

I also found this post from EggsOnBread to be very helpful. All of the recommended practices are good. This was one of the first articles I read when I was getting started, and it’s served me well. I’ll be honest, though–many of the points didn’t stick during my initial read. It became much more valuable after spending several months working with Cucumber and then re-reading.

Lean Development Teams

BusFactor

I’ve long been a believer of the idea that having only a single developer on a project is a recipe for disaster. First and foremost, you’ve got a code-red, emergency-level, bus factor of 1. (Very bad.) The next problem is that you have no buffer for the individual’s personal strengths and weaknesses. For example, if the assigned developer happens to test only base cases and doesn’t check any edge cases for abnormal behavior, the application quality is likely to reflect that.

I was the lone developer earlier in my career, and I didn’t like it. I wanted to be part of a team. I went from one extreme to the other, though, by joining one of the largest development teams in the company.

I soon grew to learn that very large teams have pretty much the same problems as teams-of-one. In my case, we had a team that was so large, nobody could keep track of what anybody else was doing. Or rather, nobody cared. It was too much. Sprint planning was–and continues to be–a challenge because team members can’t stay focused and engaged as we discuss 10 projects that aren’t related to them. Stand-ups are the same: give my update and zone-out for the rest. We were a big team, but we were a team of individuals. And with that came all the same lone-wolf issues. Specialized knowledge was retained by certain people. As new team members joined, they would be given their own projects. Everybody else would be too busy with their own projects and not available to give the amount of attention and detail required and warranted by a new teammate. And, perhaps most concerning of all, the quality of a customer’s project was largely dependent on which developer was assigned to work on it.

So how can this be fixed?

We’re in the process of restructuring the team into smaller, virtual teams. At the same time, we’re working on building and maintaining a true, prioritized backlog.

As we begin the transition, developers will bring their individual projects with them as they join the virtual team. Our prioritization effort included all of the currently active projects, so the teams are essentially pre-loaded with their own mini-backlogs. The teams will be responsible for reviewing these backlogs, re-estimating the amount of effort required to achieve project closure, and executing. Teams will be able to plan and hold themselves accountable. When the team backlog is clear, it’s time to get the next item from the greater-team’s backlog.

That’s the plan, at least. Making our big team more agile is something that I’ve been trying to focus on for the past year and a half. We’ve had some successes and some less-than-successes, but we’re committed to improving. I think this will be a welcomed change, and I’m optimistic that it will energize the team. Developers will be able to work closely with each other in a much more collaborative environment. At the same time, knowledge sharing will occur naturally, and individuals’ strengths and weaknesses will offset each other a bit.

To quote a former co-worker, “I’m feeling pretty jacked right now.” This is a change that I’m passionate about, and I really believe it’s going to help take my team to the next level. I’m sure I’ll post again with an update on our progress, but in the meantime, have you been through a similar experience? I’d love to hear lessons-learned, tips, or advice. Do share!

Sync Android Photos to SkyDrive

One of the features I really liked (and miss) on my Windows Phone 7 was the pictures live tile. Any pictures I took on my phone would rotate on my home screen. It was a great way to see and view my pictures without actually opening and browsing through my gallery—something that I’m unlikely to do just because I’m bored.

Windows8_StartScreen_Pictures

So, I was happy to see that this same pictures-live-tile functionality included in Windows 8. By default, the Windows 8 tile goes out to SkyDrive—where all my Windows Phone pictures were synced to—and uses those pictures in its rotation. One problem, though: I’m no longer using Windows Phone. So my Windows 8 live tile only rotates through 300 or so pictures that I took a year ago and doesn’t include anything recent. Bummer.

No problem, I figured, I’ll just sync my Android photos to SkyDrive and problem solved. I headed to the Play Store and found an app called FolderSync—which comes in both free and paid versions. FolderSync lets me do exactly what I want: pick a folder on my phone (my camera/pictures directory) and sync it to cloud storage (SkyDrive camera roll). Setup is easy, too. You just configure the application with your account, create a folder pairing, and you’re done.

FolderSync_Settings

Now, any pictures I take will upload to SkyDrive. And then, in Windows 8, they’ll be in rotation in the pictures live tile. The only thing that’s less than ideal about this is that the application won’t upload pictures on a scheduled interval. I’m not sure why. It allows automatic syncing to a local folder but not to a remote one. No big deal; I just have to remember to open the app and sync manually from time to time. Other than that, it’s perfect!

%d bloggers like this: