And Speaking of JavaScript

Khan Academy has decided to make JavaScript it’s introductory language.

As I’ve said before, I think this makes a lot of sense.  JavaScript isn’t your typical language, I admit. Functions are first-class types; it’s prototypal, not object-oriented; it’s been much-maligned (and even by me).  My attitude about it has changed much in the past six years as I’ve been able to do real, interesting (and in production) things with it.

But more importantly, it reminds me of when I was 13 (thirty years ago) and our school got its first AppleII computer.  It had games (we played Oregon Trail, and Lemonade), but more importantly, built right into it at the command prompt was a BASIC interpreter. (Two of them, actually, AppleBASIC and IntegerBASIC.)  IBM PCs and their clones had GW BASIC or MS BASIC.   Commodore had it, Atari had it, I think TRS-80 had it, and my Time/Sinclair 1000 had it.  It was right there, on the chip in many cases, in the computer you were using.  There were no barriers — there were no IDEs either, but you could type

10 PRINT "Hello World"

And you were good to go.

Now of course, everyone with a modern computer — or even one not particularly modern — has a web browser, which for programming purposes is nothing but a JavaScript interpreter, sitting right there.  And if you’re running Chrome or have FireBug installed, you’ve got something I never had when I was poking around writing programs to solve quadratic equations — a full on, interactive debugger.

All those tools make working with JavaScript pretty reasonable, and the price is excellent.  There are no barriers, something we’ve missed for a while in programming education.  And I think, in the coming decades, being able to program a computer (even in limited ways) is part of computer literacy, something everyone needs to know.  So this is a great thing, and I completely get and support what Khan Academy is doing here.

What I Want : Responsibility with Trust

I’d made the transition to consultant fairly early in my career.  I worked for a company while I was in college, and then when I left, I worked as a consultant for them for a brief period, and started getting contracts on my own at the same time.  I’m not very good at the marketing thing, so after a few months of that, I found a consulting firm in Charlotte, where I wanted to move, and started doing that sort of work.

Consultancy is interesting on some level, you have a specific thing you are working on, and it’s your job to put your skills and knowledge to use to help the client make good decisions, and then implement the decisions of your client.   Consultants lack the context and investment needed to make business decisions, so one of the skills is to understand when such decisions aren’t technical ones, but business ones, and to take them to the client, discuss the benefits and risks of both sides, and let them decide.  This isn’t a bad skill to have, since often you want these things separated in your code: functional technical code on one side, business rules (which always change) on the other.  Encapsulate it well, and the business side is more flexible because IT can support them more rapidly.

Eventually I started to settle down and was looking for something more permanent.  At the advice of one of my bosses, I took a job at Bank of America. It was through a consultant firm, but was a contract to hire position, something I’d not done before, but I was getting tired of the vagaries of consulting and consulting firms, and was getting to a point where I wanted to have a longer term commitment.  I had the option to stay with the consultant firm, of course; and Bank of America had the option to not hire me.  I’ve come to like this sort of hiring, both as the potential hiree, and as someone on the inside, evaluating the fit of a fellow employee.

At any rate, I got to a point were I hit one of those “business rule” things.  It was fairly clear to me what the decision should be, but my consultancy days had taught me that I needed to be sure, so I took it to my boss.  He looked at me, “What do you think is the right thing to do?” he asked.  I told him what I thought.  “Well just to that, then,” he said.  “And don’t bring little stuff like this to me anymore, if you know what is right, just do it.”

I’m sure he didn’t want to be peppered with a million little questions, and I know now that this was what my life would be like when I was hired (as I was six months later), but it was like a revelation to me.  I had the responsibility for the code — I’d had that as a consultant all along.  Certainly the direct client had ultimate responsibility to their superiors, and I was just a contractor, but it was my reputation and responsibility that was on the line.  But I’d been handed something much more important to me: trust to do it right.

I’d moved from something where I was working on a fairly narrow charter, to something where I was given broad responsibility, and trust to get it done.  This was part of the BoA culture at the time, where employees were encouraged to notice and fix problems, even if they were normally considered outside the scope of their duties.  I wound up staying there until we moved to Columbus.

There’s something good about being trusted, and earning that trust through good work.  It’s empowering and makes me wake up in the morning ready to go to work and do great things, knowing they will be allowed and have the ability to do them both with my technical skills, and in the culture of my work.  With new management where I am now, or with a new job I may find, I’ll have to enter a phase where I earn that trust again — I know that — but any place I’m happy to work will allow me to do that, and the space to do good work for them, and for me.

As I’ve thought about this now, I realize this is how I manage my assistant now.  I’ve tried to instill him (or develop with him) goals for what we need done, and set priorities.  He seems to thrive under this as well, although I suspect I’m still learning about managing people.


I’ve been putting together a portfolio, which I understand I should have been doing all along.  There’s a link to it at the top of the site, and I’ll be updating it with projects I’ve enjoyed working on or have done something cool with.  But, kind of like an Artist’s portfolio, it’s work I’ve done that is a thing I can show you.  A lot of the work I’ve done at my current job, for instance, isn’t something tangible as what I have there.

Part of why I’m looking for work is that things here aren’t changing in the ways I need.   The other is that I’m starting to finish many of the things I started.  It feels like there’s more behind me than there is in front of me.  Maybe I’m wrong (and maybe that’s one way having a new boss will help things) but I do want to look at what I’ve accomplished here.

Some of the agencies here get all their tech support directly from the central Data Center — they are small, have very well defined needs, and don’t have the staff and size to support an IT position.  The one I work at is the second largest agency, and we have 250 or so people, all of whom need to interact with IT somehow every day that they work.  A vast majority of them don’t have their own computer, or use one for more than 15-30 minutes a day, but they all do at some point.

This mix of things means that with support from the Data Center for things like networking, email and some server support, a small IT department of 2 or 3 people (it’s 2, but we could use another in my not so humble opinion) can manage our IT needs.

I worked in my assistant’s position for a couple of months before turning down my current position due to it being a bad fit at the time.   A year later, they’d been without IT for a while, and had hired someone who was a good fit for the assistant.  That and the office environment had changed and I was willing to come in here.  The pay was still not good, so I’ve worked as a contractor/temp while that is being resolved.  {It’s lack of resolution is one of the issues here.}

So, when I got here in my current incarnation, I had some knowledge of what was going on, but they’d been without any real IT for a year, and there were problems.  It took me a few weeks, but I realized that I got calls that the server was acting badly every 8 days.  There was no development environment, no test server, no source control.  There was only an inventory because my assistant had just completed one.  The budget for the year was woefully inadequate as it was the one that had been used the year before and was just barely what we needed to complete.

The quick response was to reboot the server weekly, and put some monitoring code into place, and find out what was causing it.  That led me to find some major problems that were killing memory, and fixing them.  Fixing these issues was vital, and done surgically as they whole thing, I quickly discovered, needed to be overhauled and replaced.  And that meant building infrastructure for test and dev, and making a real environment to work in — even if I was the only one doing work, with occasional help for my assistant.

I developed tools that would let us know what our budgetary requirements for years out would be, and began looking outside our immediate needs.  We had systems on systems that had been sitting unmaintained.  I found a PC from the mid-80s which was still running, but (obviously) on its last legs.  To fix it though required ripping out the system it was a part of and replacing it entirely.  This was not expensive, nor the work of a single year.   We did the same with a security system, and those for other trades.

One trade had a suite of software tools that were old, and due to licensing had to run on a machine that was inadequate for use six years prior.  We now have yearly agreements with those vendors for upgrades, and an keep the equipment updated as a result.  This was a practice I implemented across anything that involves tech — and in the current world, everything involves tech.

I’m in the process, this year, of getting rid of the last of those server applications — one with a purchase from a vendor, the other bits of code I’ll write as they’re very tied to our business model.  They’re in modern, Open Source languages, and can run in a LAMP stack (but don’t because of external standards we have to abide by). I don’t know where we are on the Joel Code (probably not too high, as we don’t primarily develop code) but we’re stable and have good practices in what we do, across the board.  And those practices are now understood by the agency, and we’ve got support from them we didn’t have when I started, because they’d been treated poorly by IT for so very long.

I’ll probably find some new system this year that’s been running fine for 10 years and needs upgraded, and we’ll find some way to keep it working until next year when I have the money to fix it. And it’ll be one less thing out of date.  And maybe I won’t find anything, maybe after six years of this we’ve found most of it, and engendered in our users an understanding that they not only can tell us about things, they need to.

The other thing I’m proud of is that my assistant now has an A+ certification, and is working on networking and routing certifications as well.  There’s no easy path from his position to mine, so I imagine he’ll leave for something better.  I spent a lot of time convincing him to do this, and made sure there was money and support for that as well.  I hope that by working for me, he’ll have a better life, because that’s the right thing, but also because he’s made my life better in this job by just being a good employee.

When I look at this, I don’t see huge amounts of project code. I have written some cool things here, and improved things vastly with small lines of code here and there, and fixes to interfaces that were bad and punishing.  I still have more of that work to do, but it’s getting to a point where I’ve done the major things I wanted to when I got here.

So time for a new plan or a new person, but whether I’m here or not — new challenges..


What I Want : Variety And Challenge

I originally meant to post this weeks ago, but then I realized that unpacking and getting it right were both important and difficult.  I’ve spent some time looking at what positions are available, and thinking about what has traditionally  made me happy and thought about what I’m good at.  While I’ve gotten some good thoughts about that, I can’t put a job title with what feels like a match.  But I do have some idea of the shape of the thing is, so let’s talk about that, and figure the rest out later.

Today we’ll start with the first one: Variety and Challenge.

Variety And Challenge

I think pretty much all jobs are made up of routine, everyday tasks.  Things that just need doing.  Any programmer who has been working in a business has written an application that’s 90% “CRUD”.  Heck, we even call it that, but it’s much of what we do.  But I know for myself, and for many of the other IT Professionals I’ve work for is that we enjoy variety in our work, and work that is a challenge of some kind.  I’ve enjoyed work that was outside my comfort zone — I’ve worked organizing sports team, and organizing housekeeping and carpentry tasks.  I’ve also sat down and figured out how to do finite scheduling for a textile mill, and delved into systems to find answers to one-time questions that are almost — but not quite — in the data stored there.

Those jobs were I was asked to find hard answers or familiarize myself with new environments and people — that kept me learning and expanding my skills were the jobs I liked the best.  They were jobs I’d go home energized and exhausted at the same time, glad I’d done something interesting that day.  I think this is what drew me to consulting in the early part of my career — things changed every six months to a year, and I was learning new systems (bureaucracies are systems, too) and ways of doing things.  I learned a lot about things and that was good.  My current job is about as far away from the financial services things I did before I moved to Ohio, and maybe the next one will be different from both, too.

None of these jobs have been tumultuous.  There was almost always a plan for every day.  A list of things to get done from the mundane to the tedious.  That’s a simple fact of work, and the way it is.  But there was the potential for something new to work on in the best of them, and I thrive on that.