Posts

Managing to Lead

Image
Since I entered the workforce a decade and a half ago, I've had many different managers with distinct approaches to leading. I've learned a great deal from them about what techniques have been helpful and which ones less so. My company recently entrusted me with the responsibility of a people management role. In preparation for the change, I thought back over the years to decide what kind of manager I would like to be. Here are my thoughts on the four responsibilities a manager should fulfill. Going for a Drive Let's imagine that managing is like going on a road trip together with the people who report to you. What steps can you take to make the journey a successful one together? How do you deal with obstacles that arise, and learn from the trip so far? Grease the Wheels One of the most straightforward aspects to managing is to make sure that the people reporting to you can get their work done day to day. Ensure that they have the right tools and equipment, and

Process Consensus

Image
Managing a product is hard work. Managing a product with a large codebase is harder. Managing a product with a large codebase and dozens of developers across a half dozen teams is madness unless you have a common process. However, too much process gets in the way of what many think of as the real work of programming. How do you strike a balance? What process is helpful, and what becomes just a burden? To start answering this question, we must ask a few more targeted questions. Why do we want a common process? What does the process provide? How can we let the process deviate over time or between teams to fit different needs? By asking and answering these questions, we can start to find a place for common work strategies without slowing down the act of coding too much. Before we go on, though I should say that reducing the speed of coding isn't always a net negative. In fact, as with any scientific endeavor, deliberate action is usually preferable to slapdash chaos. While

Developing Responsibility

Image
This past weekend, all of the product development teams as SciQuest came in on Saturday morning for one of the three release days each year. This ritual helps those building the site feel greater ownership of it and responsibility for their work over the past several months. There are many ways to help foster this personal connection to the end product, but I have found this to be one of the more effective ones out there. On that day, at that time, we all must be present to verify our latest changes are correctly applied to the live, production system. When we sign off, we are putting our names on the line both as a source of pride at what we've accomplished and a sense of ownership of the results. Today, across the country and beyond SciQuest customers will be using new code and functionality that has been carefully developed and validated by us. The details of the release can be found in the Release Library . One other new means of instilling responsibility in the develo

Cert-ifiably IISane

Time for an annual web site certificate renewal. No problem, we've done this dozens of times before. Only one small difference this year - it's on IIS7 in a Windows Server 2008 machine instead of IIS6 on Windows Server 2003. That shouldn't matter right? Sadly, yes, it does. I opened the IIS manager, navigated to the root node for the machine and selected "Server Certificates." There, I right-clicked and selected "Renew..." No special options to choose from so how complicated could it be? Well, it turns out that there is a difference. When I opened the request file it was quite a bit larger than I was used to seeing. Not being able to read hex I decided that was probably just due to it being a 64-bit machine instead of our previous 32-bit OSes. I uploaded the request, logged on to the certificate authority, and approved my own request. That's just how we roll around here. Then, back on the server, I downloaded the new certificate and completed t

Please properly dispose old knowledge

Greetings!  I have a confession to make.  When I learn something, I tend to expect that knowledge to remain inviolate and don't continually check to be sure that it hasn't changed.  This is a Very Bad Thing®© TM in the programming world.  Coding conventions and guidance change all the time.  Still, as humans, we are loath to replace old, time worn techniques with new ones. Disposing done wrong For example, I learned from the .NET Framework 2.0's documentation that the IDisposable pattern consists of a "public void Dispose()" method, a "protected void Dispose(bool disposing)" method, and a finalizer.  The first method calls the second with true and then removes the object from the finalization queue.  The last method calls the second with false.  All actual disposing happens in the protected method. using System; public class ResourceUser : IDisposable {     bool m_disposed;     ~ResourceUser()     {         Dispose( false );     }     pu

Happy Holidays!

So - you want a happy holidays messages for everyone you know but don't have the time to personalize it for each recipient?  Try this newfangled song writer class!  It's C# but should be easy to port to Java, C++, C, and pretty much any other object oriented language.  Enjoy, and have a wonderful holiday season! Holiday Song Writer

Please COM down

As part of our VB to C# conversion, we created an assembly compiling with the .NET 4.0 Framework.  One method in the converted class had a signature like: void MethodName(ref object p1, ref object p2, ref object p3, ref object p4) The first two paramenters are input parameters and the latter two are output.  p1 and p3 are really arrays of strings, and p2 and p4 are two dimensional arrays of strings, 16 and 32 bit ints, date/time, and potentially null values.  The ASP code worked fine on top of this. Then, we realized we want to use this component from an ASP.NET site currently compiling with the .NET 3.5 Framework.  We weren't using any 4.0 specific code so simply changed the compile type, deployed and regasm'ed the new assembly.  Strangely, when the ASP code tries to call the method above, it occasionally chokes, claiming that the "Variable uses an Automation type not supported in VBScript" followed by the method name.  What's odd is that it doesn't alwa