Archive for the ‘Cube Life’ Category

OK, I’m Finally Really Tired of Working on the Trading Floor

Tuesday, March 16th, 2010

This morning is like all other mornings in the last year, and in that, it's horrible. While I like the idea of teamwork and togetherness as much as the next person, the space I currently work in is the absolute worst space I've ever worked in. Seriously, all kidding aside. This is the bottom of the barrel for working conditions for a developer.

I like the vast majority of the people I work with - which is a real plus. I think the work is, for the most part, interesting enough, and while not really good work, it's good enough, and I can live with that. Again... most of the time.

No, this morning I'm really just sick and tired of the environment I'm working in. It's not a sometimes thing, or an occaisional problem - it's a daily, constant, reminder that my management doesn't have the first clue what it takes to be a developer delivering the kind of results that they are constantly asking for.

It'd be one thing if they didn't ask for much, and then the lower-than-average productivity of this space would be offset by the lower-than-average expectations. But that's not the way it is. Nope... I get hit daily with more things to do, and even two days is too long for major functional enhancements.

The Conditions

To give you a glimpse of what The Shop really looks like, this is the main floor of the Chicago offices. We are in the middle of a move to newer space - just one building over, but the space there is a carbon-copy of this picture. The furniture is all custom-made and at least ten years old. It's falling apart in places, and cobbled together in other places, but it works, and it hold up the sea of monitors and keyboards.

Trading Floor

and I'm in one of those long, flat desks at the bottom of the picture. Here's a different view showing me in the center flanked by my manager on the left and a teammate on the right:

My Desk

I'm sitting on a 6' long, 3' deep desk with one to the left of me and one to the right. I have three other desks facing my "row", and then behind me the same thing repeats across the entire trading floor.

I don't have any privacy. I don't even sit out of the way in some alcove where no privacy might not be so bad, as it might be quieter, but I don't get that. I'm sitting right next to one of the loudest group of traders I've ever seen. I understand that it's their job - they need to yell and talk all day long. That's what they do. But to think that I need to be next to them for some reason - well... that's where I beg to disagree. As much as they need to have the noise and the walls of monitors, I need quiet.

But I'm out in the open.

Clean and clear view of the entire office.

Not a single piece of foam or wall to stop even one bit of the noise of the traders on the floor.

I found a reference to this Joel on Software article where he discusses the keys to writing better code:

The Joel Test

  1. Do you use source control?
  2. Can you make a build in one step?
  3. Do you make daily builds?
  4. Do you have a bug database?
  5. Do you fix bugs before writing new code?
  6. Do you have an up-to-date schedule?
  7. Do you have a spec?
  8. Do programmers have quiet working conditions?
  9. Do you use the best tools money can buy?
  10. Do you have testers?
  11. Do new candidates write code during their interview?
  12. Do you do hallway usability testing?

I might expand Question 8 to read: Do programmers have the right working conditions? Because right now, I'm wearing three layers of clothes and thinking about putting on my winter coat to stay warm. Being cold, hot, uncomfortable in any way, is going to hurt productivity. But that's what I'm thinking about lately. I'm thinking about simple peace and quiet.

Giving it the Ole College Try

When I started a year ago, I had never worked on a trading floor. I had visited plenty, did little bits on the floor, but never really worked day after day on the floor. I had no idea. And primarily because I had no idea, I thought I'd give it a try. I have always liked working with the traders and I thought it might be nice.

Well... when I found out what the reality of this situation was, I was still willing to give it the ole college try. Stick with it... maybe it'll get better in the future. Maybe I'll learn to tune it out. After all, lots of other folks work in this noisy environment, why can't I?

The answer to that question was I have no idea, but I can't. This noise level means that I have to play music to tune out the distractions on the floor, but that's not really good for concentration, it's just familiar, and a little better than the constant, random noise of the floor.

What Could Have Been

In the new space, we could have moved into nice quiet space. I say could have because we're going to be down on the floor again. My manager wants to be in the thick of things. I can understand his motivation, it's understandable. But that's also because he doesn't need to have peace and quiet when he does his emails and his best gopher impression to pop up and interrupt me to ask me to do something else.

There's no solution here. I've tried to make this point time and again. I've sent links to studies, and even this morning I sent my manager the link to the article. But it's not going to help. This is how it is. If I want something different, I'm going to have to move.

Crud.

JollysFastVNC 1.10 is Out

Monday, March 15th, 2010

I noticed this morning that JollysFastVNC 1.10 was out, and given that I might need a VNC client to get to some Windows boxes, it's the VNC client I've decided to have on hand. It's not something I've had a lot of use with, but it looks solid, and minimalistic, and that's good enough for me.

Now I’m an Embarrassed Cow – But Not Stupid

Friday, March 12th, 2010

cow.jpg

This morning a trader came up to me and pointed out that with the latest release of this ground-breaking, seminal, enterprise VB app that's the core of the business at The Shop, one of the key features was removed because Ralph, my manager, wanted to look like we were accomplishing something useful. You see, this VB app really isn't great, it's everything but that, yet it's proving to be very hard to retire primarily because (in my opinion) the strategy to retire it is horribly planned, poorly managed, and completely ineffectual.

So Ralph decided that it'd be a great idea to have as our group's plans to help retire this app. Well... this is a dodgey goal in the first place as there's no way we can do it alone, but still, doing even little things should yield impressive brownie points with the upper management. So he's all about shutting parts of this app down.

He shut one down early. Too early.

With this latest release, he had them remove an important component to this one trader. My code wasn't through Q/A yet - and probably not into production for another few days. When it does arrive, it has all the features he needs, but today, it looked like I took away the one useful component of this old VB app without giving him a replacement.

Nice.

He was kind about it, but still... I could tell... he wasn't happy. I wouldn't be. He's stuck and can't see his positions, and it's something I (seemingly) took away from him for no good reason whatsoever.

The truth of the matter is that Ralph took this away, all for the pathetic, useless, brownie points that we now have more than burned up because of this horrible miscalculation. I advised that we should have waited until everything was done and ready and then tell the VB app group to shut off this component, but Ralph wouldn't hear of it.

"Nope", he said "That'll put us back at least a month."

How incredibly short-sighted.

Thank goodness it's Friday - I'm leaving early because I just can't stand to be here. It's one thing to make me a piece of meat - I had a hand in that by being too efficient and not demanding enough. But to make these ridiculous decisions all for the sake of some lame belief that it's a Holy Mission to retire this app, and in so doing, inflicting this kind of collateral damage... well... that's just too much for me.

I'm not a stupid cow.

Possible Contender to Google’s AnnotatedTimeLine

Friday, March 12th, 2010

GoogleVisualization.jpg

This morning I was reading Daring Fireball and John pointed out an alternative to the Google Finance widget - the Google Visualization AnnotatedTimeLine. The HumbleFinance widget is a nice looking alternative to the AnnotatedTimeLine, but in it's current state it's too limited to really replace the AnnotatedTimeLine in my work.

First, it allows only two datasets. Normally, this is probably just fine as in a lot of finance you may just want to see an instrument price, or one instrument against an index - but for my graphs, well... I've had to limit the data in some pages to 64 datasets. It's just a different use-case when you're looking at risk across an entire firm.

Second, there are no annotations, and that's one of the most useful pieces of my web app. I'm able to overlay external events and trade events on the data to allow the users to see why the data is behaving as it is.

I'll certainly keep an eye on this as it gets better, it might get to the point that it can unseat the AnnotatedTimeLine. Then again, with Google dropping Gears in favor of HTML5 features, maybe it won't be too long and the AnnotatedTimeLine will be in HTML5 and we can get rid of Flash for the web app.

Whatever Happened to Programming? We Did. We are to Blame.

Wednesday, March 10th, 2010

I saw this article on Daring Fireball this morning, and decided to give it a read. Daniel J. had tweeted about it yesterday, and was in the middle of something so I didn't take the time to dig into the article. Well... this morning, I'm glad I did. The follow-up is equally interesting and as worthy of a read as the original.

There's just so much in this article to talk about. First, he's completely right about the state of typical development these days:

I want to make things, not just glue things together. When people ask me what I like about my job, I always say the same thing: that its the thrill of starting with nothing and making something. That, for me, is the essence of programming, and it hurts that there isn’t as much of it about as there used to be.

He's right on the money about the state of anything called Frameworks:

Here’s a rule of thumb (which, like all such rules, is often broken and should not be taken too seriously): beware of anything that calls itself a Framework. Anything that, instead of providing stuff that you can call, takes over the wheel and tells you what code to provide for it to call. Not always, but often, that marks the line where this stops being fun.

and:

You know the real problem with frameworks? They demo too well. Someone shows you their favourite framework and demonstrates how you can build 50% of your application in half an hour! Great! That other 50% can’t be hard, can it? But it turns out that what looked like 50% is actually 5%, and filling in the other 95% gets exponentially more difficult as you approach the 100% mark. Frameworks are great for building toys, and that fools us — again and again — into assuming they’re good for building products.

and whatever has Enterprise in it's name:

Especially, I have learned that anything that has “Enterprise” in its name is so incredibly boring that the people who use it had to shove the name of the Star Trek ship into its title just to keep themselves awake. (I am convinced that this is the case.)

Pulling it Back Home

I'm sitting here thinking these same things, and realize that there's an element that's missing here - it's the user community, or business users. They are the drivers of this change, not developers. It's not something the author touches on in his writing, but it's something I've come to realize in the past few weeks, and it's bothersome.

No good developer says I want to glue crap together! or Please let me use this Enterprise Java System! Nope. Bad programmers say that, and that's because they probably shouldn't have the job in the first place, and gluing things is at the limit of their skill set.

No, real programmers want to create things. Then why don't they? The answer is in those Framework Demos, and the press releases on the libraries and toolkits that the business users read and think that the act of creation takes exactly 3 hours, 15 minutes, and then there's no need for that documentation because they can use the frameworks to add in the features like so many Excel Macros.

It is we, the developers, that are to blame.

Why We are to Blame

Like Prometheus, or even Pandora, we brought this on ourselves by doing too good a job for those that had no understanding of the complexity and difficulty in the creative process. These people would never have thought to walk up to Picasso and say Hey, Pablo - Babe! Draw me a tree, will ya? And get it on my desk today, or tomorrow morning if you need more time. Yet in my experience, they think two days is too much for a complete new feature set.

When we create something out of nothing, and do it faster and batter than they expected, they'll simply shift their expectations for the next time. No problem there... in fact, that's an exercise they like having to do. Next time, they'll expect more, and more, and then when you have to do something a little more difficult, they'll try to compare this to something done six months ago, and how you did it fast then, so why can't you do this fast now?

This makes an individual tired.

Then some CTO who may never have even been a good programmer, decides that the entire organization is going to use some Framework, or Enterprise Widgets, and then you're a Glue Monkey.

At each turn we do something that those requesting it have no understanding of so they can't possibly understand the cost of requesting it. Many of the bad programmers see this as nothing more than a digital assembly line, and for them, it takes no more thought than assembling a toaster or DVD player. But for the good developer, the act of creation is mentally, emotionally, even physically draining. That's why it's so rewarding.

But to the non-programmer, it seems like you sat down in front of a glorified TV set, and a few hours, or days later you came up with exactly what they asked for - no matter how crazy, difficult, or near impossible it was. To these people, there is no cost of that request. Nothing could be further from the truth.

Where Can We Go From Here?

I've been thinking of solutions to this problem, and realizing that anything involving the changing of other people is arrogant in the extreme, so I have to focus on myself and what I can do to change this for me. I've come up with a few ideas. None is trivial, but I believe one of these is the solution for me.

Getting a Better Job

This seems obvious, and it is, but it's not trivial, and it's not a direct solution. You may land in a better place, or you may land in a worse place - it's impossible to tell, and in this day and age, I've run into employers that are not above decorating the truths about their organization in order to attract the top talent. Certainly in the financial sector which I'm most familiar with.

Yet, if you can find a place that matches your ideals and goals in software development, you're in business. Maybe there aren't that many places in the world like that, but I believe there are some. Maybe they're no more real than Santa and the Easter Bunny, but I really believe they are there, and as long as I believe they are there, I'll try to find one. Just one is all I need.

But lately, I've been thinking maybe the better approach is to settle a little on the job, and just change the environment.

Keep the So-So Job but Work at Home

I worked at home for 2.5 years while at First Chicago. I got more done there than I have ever gotten done in any office environment I've ever worked in. Why? Lack of distractions. It's simple, really. I have an office at home, with good internet connectivity. Just move the necessary machines to my office, start working there. For me the benefits are obvious:

  • No more 1.5 hr (one-way) commute - I spend 3 hours a day commuting. I can turn that into more downtime, and therefore increase the quality of my life an enormous amount.
  • No more distractions - this is a huge boost in productivity.
  • Comfortable, familiar surroundings are calming - and when you're calm, you're more likely to be happy, and that will make any job seem better.
  • Seeing my kids more - I'm more connected to my family, and therefore able to give more to the effort.

All these reasons make a so-so job a "good" job because you approach it every day with a sense of happiness. You don't mind going to work, because it's a comfortable, warm environment that you don't have to travel 90 mins to get to. It makes all the difference in the world.

Indie Mac Developer - a.k.a. Midlife Crisis or Complete Change of Lifestyle

This is the most interesting to me, but it's also the path most fraught with danger and uncertainty. I've done the small consulting shop thing but what I'm thinking of is just taking some of my ideas for simulation tools and putting them on the Mac. I know it's not a career path that a lot of people would see as going in the right direction, but it's the extreme case of my second point of working at home. In this case, I work at home, but I also have to generate my own revenue.

But the path to this goal is clear: get some apps, start to generate some revenue, and then replace the day job. Not easy, and not guaranteed, but it's something I could do, and something that I want to do.

My First Anniversary

Tuesday, March 9th, 2010

Cake.jpg

Well... today is one year at The Shop, and it's been an eventful year. I expected to be behind the curve on the existing systems for a while, and I was, and then I expected to get some traction and make some really good progress, and that happened too. I'm a little surprised that after just a year I'm entertaining the idea of leaving. It's not that people here are bad, it's that they seem to very reliably make the tactical decision - always favoring the give it to me now! answer as opposed to thinking that putting in an extra 10% would yield a vastly superior product.

I understand the logic - and given that they have been operating in this mode for years, it's logical that they don't see the need or value in doing it another way. But I'm not used to this. I find it really quite short-sighted and while I understand that sometimes you have to do the immediate fix, it's not what you should always go to, and here, it's more the rule to do that than the exception.

So it's been a year. Yippee!

But it's been a heck of a year.

Just Slugging it Out

Monday, March 8th, 2010

Today has been a good day and a bad day - just depends on how you look at it. I've realized a few things today - the ideas have been crystalizing for a while, but today they can into laser focus. The Shop is consistently focused on the gimme now! answer no matter the cost of the better, long term solution. This isn't some of the time, or even most of the time. No, it's all of the time.

I'm used to a little more of a balance, and not spending all my time fighting fires. I get to do little things - but they can't take more than a day or two before they are considered "back burner" projects and I'm asked to re-focus on things that will make my manager look good to the other partners in the Shop. It's not a bad motivation, and he's not the only one doing this, so I can't really say he's the problem. No... it's the entire place that's like this.

I've just gotten tired.

I want a rest.

So I asked to start working at home.

It went over about as well as I had guessed - which is to say that it didn't go over well at all. But I didn't expect it to.

Sad.

Oh well... I've had a nice run here.

CoRD 0.5.3 is Out

Monday, March 8th, 2010

CoRD.jpg

Because I'm not a big Windows fan any longer, I really appreciate the work the CoRD Team is doing to bring a nice Remote Desktop client to Mac OS X Snow Leopard. This morning I got a tweet that CoRD 0.5.3 is out that fixes some of the cursor problems and adds a hostname feature to the connection prefs.

Sweet. The less I have to run Windows the happier I'll be.

Added an XML Output to the JiGV DataTable

Friday, March 5th, 2010

GoogleVisualization.jpg

Today I had the time and decided that it was about time for the DataTable to have a toXML() method so that if I have a servlet that's responding to something other than a JavaScript-driven web page, they can take this XML and parse it for whatever they want. Since I already had the HTML output method, this wasn't all that hard, I just needed to decide what the structure needed to be, and then replace the HTML tags with the appropriate XML tags.

Not bad at all.

OK... it's not rocket science, but it's something that needed to be done as I'm getting into a little larger audience for these servlets in the web app, and it needed the 30 mins I put into it to get the code and the unit test working.

So there.

Google Chrome 5.0.342.1 (dev) is Out

Friday, March 5th, 2010

This morning I noticed that Google had updated Chrome (dev) to 5.0.342.1, which is a welcome improvement. I've been using it as my secondary browser for several days, and I have to say that I think I'm still leaning to Firefox as a better experience. I'm not going to debate the speed of the V8 JavaScript Engine, I know it's better. But what I need in a secondary browser is something that feels right, and the fact that it's not WebKit is not bad either.

I'll keep Google Chrome around, and I'll give it a shot in a little bit, but it's just not as smooth as Firefox is for me. Nice, and close... but not a winner - yet.