Opposite Ends of the Spectrum

June 4th, 2011 § 0 comments § permalink

I recently came from a small startup company in Houston where process was non-existent to a significantly large bank where process is king. After speaking with an ex-coworker, I came to an interesting reflection of the two ends of the spectrum. On one end, getting things done was an open field where you could choose etch your own path and very easily gets lost in all the choices. On the other end, getting things done was a pre-paved road with traffic lights, construction sites, and stop signs that get in the way of a predetermined destination. No matter what, my goal was to get to each of the checkpoints and hopefully have a successful deliverable. There has to be a happy medium, but I haven’t found that yet and would love to experience it.

My First “Third”

After four months in my new role, I’m finally working toward a release I understand and have a handle of the architecture and design of the application. I really can’t say much about the details of my job, but I create software for a part of the business of a fund of funds, in particular hedge funds. The business of a hedge fund has caught my attention, but unfortunately I’m not challenged on the technical side as I would like. The challenges touch many aspects of Michael Feathers’ book, Working Effectively with Legacy Code and I have been slowly trying to introduce unit tests to the team. Being a team lead here is definitely a challenging experience when the software and processes are already in place and the people are uncomfortably settled with them.

Wait, so what is a hedge fund? I’ll let the Khan Academy tell you the basics, it’s great!

There are other types of fund strategies that blow my mind. I’m not going to (I actually am not allowed to) get into any stories or details of what some fund managers do, but they really know how to find loopholes opportunities to make a dollar or two or billions, yes with a “B,” for themselves and their investors.

Teaching and guiding the team about best practices keeps me going and even pushed me purchase my first Android app, Read It Later, since there is absolutely ZERO service in the subways! Below are some things I have shared with the team and maybe they’ll interest you. If you’re not a software developer or have no interest in making your code awesome, you have permission to leave.

Derek Greer’s ongoing series on Effective Tests

This is perfect for Unit Test newbs and helps answer, a lot of the “whys.” Often times I get feedback about how long it takes to implement unit tests, but the return is ridonkulous. Unit tests do way more than just exercise your code – by making your code testable, it helps make it way more flexible, contain less dependency, and most of all: awesome.

Want more? Just subscribe to the Los Techie’s blog

Some GoogleTechTalks Videos on Unit Testing

If you hate reading, check out some videos from GoogleTechTalks.
The Clean Code Talks — Unit Testing
The Clean Code Talks — Inheritance, Polymorphism, & Testing

My Goal for This Month

After speaking with my colleague, about improving myself at work, I’m going to try out Pomodoro here at the bank. I’ll use KeepFocused and hopefully I’ll be able to determine where my inefficiencies are from week to week.

Setting the Right Expectations

January 1st, 2011 § 0 comments § permalink

I had a conversation a while back with a good old friend, Sonal, about how awesome Modern Family is and catching up with each other’s lives. It sparked a reason for me to share something that has been on my mind for quite some time, but could not figure out how to organize my thoughts. With a little discussion with her and some time to sound type out my thoughts, here is the breakdown:

  1. Learning when to say, “no”
  2. Learning how to say, “no”
  3. Learning how to get them to say, “no,” even before you do

Over the past six months, I’ve been learning a lot about setting the right expectations within the development team, with coworkers, and how it affects our customers.

The Dark Past

As discussed in my previous post, we weren’t (until recently) in a position to make decisions to have a positive impact in our daily development lives. We knew about the “fire-of-the-day” that we had to take care of while interrupting our current work and just had to buffer enough time to make sure we got things done in time and sacrificing quality. Readjusting the project plan, timelines, priorities, and resources wasn’t a part of our process.

Something had to change.

Saying, “NO”

1. Learning when to say, “no”

I can’t remember the exact moment I started saying no, but can remember an incident that kind of shocked a coworker who wanted something done. It wasn’t because I didn’t want to work on it, I just had way too many other things on my plate and over-promising would end up burning me out or under-delivering. I just kept it simple and said, “no.”

2. Learning how to say, “no”

Saying “no” is kind of rough and a little pessimistic, so I’ve learned to defer work. There was a request to fix the Partner listing because one of the descriptions is wrong. The application based the list on an Excel sheet I was provided, so the only way it could be wrong is if someone gave me wrong information to display. It wouldn’t take long, but it would interrupt my current stream of thought if I worked on it immediately. I put the request in a list for me to do later.

I really didn’t say no directly, but I did learn that I could say no for the moment and defer the work to do later. Rather than dropping everything to put out the fire, I just made sure we were all aware of the other issues at hand and I would get to it later.

3. Learning how to get them to say, “no,” even before you do

There are two ways I’ve been able to do this. First, is to get you to prove to upper management that your task is more important that what I have to work on. The second way is for me to just point to my Kanban board and ask where the trade off can most effectively ensure no interruption to a previously promised delivery.

Usually the fire-of-the-day task isn’t important enough to bother upper management with the question, so they’re happy with just creating a ticket, assigning to me, and holding the responsibility of bringing up the task at the next iteration meeting.

Now, most of the time, I’m approached not whether to decided if a task can be done, but instead if the ticket someone created makes enough sense for me to look at later on. That is ultimately amazing!

A Brighter Today

There has been a complete 180 from what we were earlier this year and today. Significant enough that people open to change and progressive ideas like Jason Fried‘s no-talk-Thursdays (our are Tuesday and Thursday 8am-11am) which makes our development team very productive which and in the end it helps keeps the Sales/Marketing team honest.

The best part about making sure everyone is on the same page is the positive impact on customers. It gives potential/current customers a good time frame for features/bugs to be delivered and our close partners a good time frame for future products not yet on the market.

Patching Virtual Machines Tip

June 29th, 2010 § 0 comments § permalink

To manage our virtual machines we use Virtual Machine Manager 2008 R2.

I have trouble logging into my VM after doing just a couple reverts to checkpoints. The machine drops trusts to the domain, so it won’t let me log in with my domain account, boo.

Here’s how to avoid it. Thanks, Kevin.

For these steps, log in with a local administrator account:

Step 1

Set the registry key below:
HKEY_LOCAL_MACHINES\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters DisablePasswordChange REG_DWORD 1
(Reboot and add new Checkpoint A)

Step 2

Rejoin the domain
(Reboot and add new Checkpoint B)

Step 3

Run all the important Windows Updates
(Reboot and add Checkpoint C)

Step 4: Remove Checkpoints A and B

(I hate patching virtual machines…)

Visual Studio 2008 – What More Can You Ask For?

February 12th, 2008 § 1 comment § permalink

So I was talking to James a little bit about Visual Studio’s features and things I’d like it to have. Here’s my list of things I might just not know about or things that would make life easier in Visual Studio 2008.

-Right click a base class you created and click “Extend Class”
-Right-click an interface and click “Implement Interface”
-Save/Configure windows layout (dual screen vs. single)
-FULL LIST of the current keyboard mapping scheme that is readable

Oh yeah, Visual Studio + ReSharper is the only IDE I’d suggest. Without it, you’re missing a TON of stuff.

Learning NHibernate by Example (Small).

January 18th, 2008 § 3 comments § permalink

So I started a new project a couple weeks back and I’m going to put off separating the common features into a “CommonProject” until later. I’ve run into a few tedious steps over and over again, that I already knew NHibernate would help me resolve quickly and easily. Once this is complete, I’ll take a look to see what needs to be done.

I like what I see already in NHibernate; I’m just not too happy about support for NHibernate.org and their community, or lack thereof. I downloaded a sample, but it’s not using the most up-to-date version, which is currently 1.2.1GA. I have a working version of it. If you want it, let me know.

(By the way, does anyone know what the “GA” in 1.2.1GA means?)

My environment:
Microsoft SQL 2005
Microsoft Visual Studio 2005 (ReSharper 3.0.2)
NHibernate 1.2.1GA

Where Am I?

You are currently browsing entries tagged with work at thomas nguyen.