new Site();

A tough sell

If you happen to be enthusiastic about both F# and regex, I have the project for you. It's been torturing me for a year now, in bits and pieces, and if you want to contribute I'd love to have you.

Only a thousand bucks

During the homebrew scene, before the commercial PC revolution, there were kits; if you're crazy enough, you can build this same one even now.

I can't be the only one who spent hours reading gorilla.bas, hoping it would somehow teach me how to make games, but I can't imagine having to flip switches just to get your programs in. That's probably something to keep in mind the next time I'm complaining that Visual Studio takes two hours to update.

MBA for devs: creating opportunities to practice practical programming

This is part 4 of a series on why a software engineer should consider getting an MBA.

One thing you will learn in the MBA program early and have reinforced over and over again is that people in business positions solve nearly every problem using Excel. If you can resist the temptation to do the same, you will find that the MBA program offers a low-pressure opportunity to create lots and lots of software.

I took a finance concentration, which meant a lot of math. Much of this is typically done with template-style Excel sheets that you download and use, or are given by the professor. Instead, I created my own programs to calculate risks and profit, and used languages that were new to me in order to keep my interest. By doing this I got more comfortable in new languages (R, I think, and Python) and actually improved my understanding of the material by requiring myself to restate everything and get at the guts of how everything worked.

If your interest is in frontend stuff, try writing everything in JavaScript and make a nice UI for it, using a new library you’ve been meaning to try out. Or try optimizing your code and finding faster algorithms, or just take all your notes down as a Prolog knowledgebase. Whatever your thing is, you can shoehorn it into whatever boring class you can’t seem to get into and find yourself interested again, like magic.

One last thing I’ll say in favor of this approach is that it requires you to connect the material in the MBA to the practice of software development, in a way that will be very valuable to you and to the people you work for. Translating business requirements into working software requirements is apparently one of the more difficult aspects of our profession, but one which is made a lot easier through both practice and insight.

MBA for devs: developing professional, non-technical skills

This is part 3 of a series on why a software engineer should consider getting an MBA.

Writing software is a skill. So is refactoring code, debugging, using an IDE, (not using an IDE,) writing unit tests, optimizing for performance, and so on. Since these are arcane, generally untransferable skills which only we know, we in the software development world tend to take an ivory tower view of business. There’s Us, and there’s Them. They know how to talk about and present things, and we know how to do things. And, if this isn’t you, then you at least know people who take this view. Partly it comes from people outside our profession having a really reductive notion of what we do, generally boiling it down to something like "playing with computers."

One thing you will discover in an MBA program is that while business people actually are pretty dismissive of what we do when they think we aren’t listening, software people are equally so about what business people do. And among the skills that business people tend to have, presenting, writing, and collaborating are the ones you can do the most with.

The MBA program is sort of three quarters academics and one quarter vocational training, and that quarter is almost entirely business skills. You will be presenting. A lot. Writing? A lot. And collaborating…well, let’s just say way more than anyone would reasonably expect or want. It’s a pain because everyone has other responsibilities and families and some people don’t pull their weight. Just like at work.

If you hate presenting–as I, and most other reasonable people do–you will get so much practice that you won’t hate it anymore. Or, at least, you will hate it less. If you have crippling anxiety about presenting, as I always have, then you will get ample opportunities to practice different techniques for mitigating your anxiety and presenting well in spite of it.

Software engineers already tend to be good writers, I’ve noticed, but you will get practice writing for a business audience, which is a little different. All that weird prevaricating language that grates on your every nerve will be at your fingertips, plus some understanding of why people write that way.

And as for group work, generally these collaborations take the form of mini companies, with defined leadership roles that you can take on, to get practice handling a herd. Just as in high school and your undergraduate studies, you will feel like you are doing everything. This time, however, it’s really part of your training to learn how to deal with that and get everyone working. You will learn how to use collaboration tools to work better and gain a new respect for the people you work with. You will try, and fail, to just assign sections of work to people and try to glue it together before the deadline, and learn from this failure.

These are often called "soft skills,” because they are sort of indefinite, and the term handily distinguishes them from skills that are more measurable. However, having them can mean the difference between a great career doing the work you want to do, and a good career doing the work you can get. I honestly think the MBA might be worth it even if it just taught you these things.

Next up: use the MBA program to practice real-world programming.

MBA for devs: demonstrating ability, commitment, and effort

This is part 2 of a series of reasons why a software engineer should consider getting an MBA.

Deciding to pursue a graduate degree in any discipline is a big step, showing that you are capable of signing up for hard work above and beyond what is required to make a comfortable living. It shows that you take an interest in your profession, in your career, and your chosen subject. And that’s just the beginning...

To start with, it’s not easy to get into a graduate program. You need to pass tests, get reference letters, and have demonstrated academic aptitude in the past. A graduate student has been selected from a pool of candidates because they seem like they will be successful; to a person making hiring decisions, it’s like having a really strong reference from a very smart person. Of course, to be most effective, the school should have some reputation for quality nationally or at least within the community where you are applying.

Second, once in, things get much harder. You will be balancing your work and home responsibilities with those of being a graduate student. You will be faced with difficult choices about your priorities and will need to make them correctly, whatever that means for you. Being a graduate student means daily delivery on a commitment that you made when you were better rested and when you idealized the process and experience. Chugging along despite the realities of grad school demonstrates your ability to honor your commitments and work toward a distant goal.

Lastly, there’s graduation, which means someone gets a big stamp and pushes it down on some paper saying that you have put years of effort and sacrifice (not to mention thousands of dollars) into achieving something, and that you’ve done and paid enough to give it a name. You saw a difficult journey through to the absolute end, and in so doing have demonstrated that you are reliable, that you work hard, and that you care about more than a paycheck and more than getting out at 5:00 every day. You’re a starter, a doer, and a closer.

Not bad! Personally, I think those qualities would look good on anyone. Next time I’ll go into how graduate business school can give you a surprising number of opportunities to fit in programming.

Next up: how an MBA program can teach you important soft skills.

MBA for devs: a relatively painless path to domain knowledge

This is part 1 of a series on why a software engineer should consider getting an MBA.

As software developers, we generally pick up domain knowledge from places we have worked, and it tends to be specific to the problems we addressed with our software in those places. This is not a bad thing; we have very focused pockets of knowledge about given business processes, which can come in handy in similar contexts (or the same ones, in a different company). However, this state of things is reactive: we are given a problem and we work out the solution, by asking questions and getting feedback from the stakeholders. We are at the mercy of people who are trying to pre-translate their problems and requirements into a language they think we understand, which dumbs it down just enough that friction is introduced in the form of ambiguity. It’s like lossy compression, in a way, with those compression artifacts showing up in the form of arguments over acceptance criteria.

Enter the MBA–which, unlike most other graduate-level pursuits, is actually a survey across domains rather than a deep dive into a single one. To finish you generally need to have taken classes in accounting, marketing, finance, IT, business law, and management, plus or minus whatever your particular school is into. The perspective taken is that you are going to be a manager who will need to know how all these pieces fit together, and what everyone is up to in all those different departments. You can probably see that this is also valuable information for anyone whose work spans disciplines or departments, such as...oh, business software engineers, for instance.

What’s more, this knowledge will help you understand the challenges faced by people in those departments, as well as give you familiarity with the processes in them. This in turn allows you to be a better (and more empowered) partner in coming up with business software, because you understand better how it will be used and what challenges are faced by your users and customers. In taking these classes you will be required to use the tools and approaches customarily employed by people who do that work for a living, and you will see what makes the work harder and what makes it easier.

Finally, the exposure you will get to all the different business departments–and the processes and tools used in them–will provide you with ample opportunity to cultivate new product ideas. As I’ve mentioned, the current business environment still goes to Excel and PowerPoint to solve new and specific problems. Can you come up with a better way? If so, you have an idea for a product–one that you discovered on your own instead of getting it handed to you by a product owner. Enjoy your new startup–and try not to let it interfere with your schoolwork.

Next up: demonstrate some very valuable qualities, in three little letters.

A bunch of reasons why getting an MBA can make sense for a programmer

I’ve just finished the final paper of my MBA career, and will be graduating in a week. People who work with me are often surprised by my choice to take on an MBA, and I think they’re largely right to be–at first glance, it seems unlikely to be useful. However, I’ve given it a lot of thought over the years, and I think I have some reasons why getting an MBA as a software engineer makes sense, even if you have no immediate plans to be a manager.

First up: domain knowledge.

Blue State Coffee is pretty cool if you can deal with the presidents

The dev team was getting a little stir crazy, so we decided to take it on the road and go to a new coffee shop about two blocks away to work for the afternoon.

Then President Clinton walked in, and so our productivity kind of tanked. All in all, I'd say the venture rates a 2 out of 10 for getting things done, but a 10 out of 10 for meeting presidents.

Hard Partyin' Hospital

The bulletin board at Hard Partyin' Hospital:

Two weeks with TypeMatrix

My CM Storm Quick Fire Rapid with cherry browns has been acting up* and I was thinking of changing things around a bit. After a lot of soul- and internet searching, I discovered the TypeMatrix keyboard, which has low-travel scissor-switch keys laid out in a matrix format (no staggering from one row to the next) and one or two tweaks to the usual layout. It sounded like a nice change of pace and the experience has been well-reviewed by people who should know what they are talking about.

So I got the keyboard and checked it out. The keys felt great and the keyboard was nice and thin; it’s the one on the left in the photo above. My first impression when I got it plugged in, though, was that it is totally impossible to type on. Despite this, I decided to jump in with both feet and spend the next week using the TypeMatrix as my sole keyboard to give it a chance. It turns out that there are more things going on with this keyboard than just the matrix layout, and that these things are more significant than one might think.

1.) The enter, backspace, and delete keys are in the middle of the keyboard, between the G and H keys.

This has two important consequences. First, the home keys F and J are now farther apart, which means that you will know your hands are in the right position when they feel like they are in the wrong one. In other words, that at-rest position at the core of your touch-typing technique? It’s wrong now.

The next consequence of this is that when you mess up (perhaps because your hands are in the wrong position?) you will have to remember that the backspace key is not in the accustomed spot. You will not remember this until you see several equals signs in a row.

As a result, the word “laughter” might be written thus on a TypeMatrix for your first few days: “kaygghter===”.

*2.) The backslash key has been moved from above the enter key to where the left part of your shift key is now. *

This is only important because, where the backslash is now, you will find a mail button. I discovered about fifteen open Outlook windows when I went to shut down one night.

3.) The shift keys are rotated to be two keys high instead of two keys wide.

Quick test: type “The Party” and note where your fingers press the shift keys. If you press them closer to the outside of the keyboard (the left side of the left shift, and the right side of the right shift) then you will be fine. If not, on a TypeMatrix you would have typed “\the”, and then opened the print dialog.

4.) There is an extra row below the spacebar row.

Some of the modifier keys have been stashed below the bottom row, which is really only a problem if you use them fairly often. If your keyboard shortcuts have become so ingrained that they are now just rote movements, you will find that none of those movements does what you expect and this can be frustrating at first. However, I will say that this is true any time you get a keyboard with some small change to how the modifiers are laid out.

Put together, these changes are a lot to handle. It took me about two days until I could reliably type on the keyboard, and then another several days until I could type fairly fast on it. I made it! I was a TypeMatrix person!

...then I had to work from home one day using my work laptop, which is when I discovered that there isn’t room in my brain for two keyboard layouts–I can either type on a TypeMatrix, or on anything else. Typing on my normal laptop keyboard was as hard as using the TypeMatrix was the first time I unboxed it. This is scary when you consider that I’ve been using the normal kind for almost 30 years. Cool key switches, cool concept, nice appearance and all, I had to pack the thing up and send it back.

However, I will say this: there were a few days where I was humming along with the thing, and it was comfortable, as they said it would be. I don’t know which change or design choice was responsible (unless it was all of them) but the fact remains that it was so. If I could risk it, I would have kept it for sure. And, the folks at the company know that this can happen, and are OK with returns for that reason. So, it’s a safe thing to try, if you are thinking about it. If you’re already a Dvorak or Colemak person, you probably already have right wiring for this sort of thing (and would be pleased to know that you can switch to those layouts with a keypress).

*It was part of that bad batch with the awful solder job in the lower left corner. I tried to fix it, but broke the 4-pin socket off and made everything much, much worse. Once I gave up on the TypeMatrix I finished the soldering job out of desperation.

Microsoft Hartford

We learned all in one day that (1) there is a Microsoft office in Hartford; (2) it is less than a block away; and (3) it is awesome:

1 of 1