Ridin’ the Bike Again

This morning I had a technical phone interview.  It was my second with this particular company, and was a follow-up to a project the company assigned me as a sort of test.

The project was a blast.  At almost every step, I was doing things I’d never done, for instance developing on a Mac.  I used jqGrid for the first time, and it was much easier than the cfGrid fiasco of 2013.

Most of all, it felt really good to be coding.  I’ve always got things to do, even when I’m unemployed, so I’ve hardly done any coding at all, certainly nothing meant to impress an employer.

I feel that I did a good job on it.  I may have left one or two cf variables un-scoped, but everything worked perfectly and errors were handled and the help content looked good and made sense.  While it’s not likely to wow an experienced developer, it was enough to show competency and consistency.

During this morning’s interview, I was asked whether I had experience in a number of technologies, and I was absolutely honest in telling them if I had or had not.  Unfortunately those questions are still rewinding and replaying in my mind while I wait for the offer/rejection (once several more candidates have been interviewed).  The rational part of me knows that there was simply NO alternative to telling the truth, but the irrational part says I screwed up.

In the eleven months I’ve been unemployed, this particular job has resonated more than any other.  I’ve had interviews and second interviews, but this one just feels different.  I believe that explains the anxiety I’m feeling right now.

A rejection is not going to crush me.  I’ve kept stomping forward after every rejection, and chalked up the interviews as practice.  I don’t have room for drama in my life any more, especially the kind I author for myself.  If I don’t get this job, I will look for more like it.  I have connections who have connections.

In a way, just completing the interviews and the project with this company is a victory.  If I were obviously a bad risk, these very intelligent people wouldn’t have even answered my application.

brock12

Advertisements
Posted in ColdFusion, General Software | Leave a comment

Put it on Paper First

Card

When I first wrote software, I didn’t get to use an editor.

You didn’t write software on a screen with a keyboard, you wrote it with pencil on graph paper.

This meant that you had to “play computer” to check your code.  In order to do this, you really had to understand how things worked.  Every time you submitted your stack of punch cards and it bombed, you wasted a day, so the most economical form of debugging was playing computer.

I sometimes miss those days, mostly because they were the days when I was still excited about software and the fact that I was telling a very expensive machine what to do for me.

oldman

Posted in Old Man Stories | Leave a comment

The Real Programmer

cropped-me_luv_software.jpg

 

There are two ways to become a programmer, through formal education or through self training.

I once worked at a company that considered itself “top-heavy”, meaning a large percentage of the company held masters or PhD’s.  This isn’t a real surprise, since the company’s value was in its intellectual property.

Working at this company, I remember feeling I wasn’t a “real” programmer because I wasn’t writing the production software, I was “only” in the operations group who ran it.  I sat in on the stand-up meetings with the designers who used words like “singleton” and “factory”.

I began college as an engineering student.  In that time and place, there wasn’t a computer science curriculum.  By the time I knew I was an incurable software nut, it made more sense to finish my engineering degree than back-fill with software classes and get a degree in Computer Science.

In the 80’s and 90’s, it was very common to have software workers who had trained themselves.  I was one of them.  The others I knew were top-notch, often brilliant programmers.  They loved software so much they paved their own way into a career in it, and they excelled.

There still seems to be debate whether a computer science graduate is automatically a good programmer.  But one should ask whether a self-taught programmer automatically has a solid grasp on theory and the big picture.

You see, somewhere along the line I decided that to be a “real” programmer you had to have been formally trained.  That’s where you learn what a singleton is.  It’s where you are forced by an instructor to sit and discuss the big boring block diagram and then later focus in for the fun stuff.

It can be easy, in any pursuit, to imagine that everyone around you is more advanced than you are.  Most of the time, they don’t volunteer the stories of all their stupid mistakes, and you are well too aware of your own.  They’re controlling their “brand”, their image.  Also, with the speed of change in this business, even seasoned software gurus are admitting they sometimes feel stupid.

I have to wonder.  Are there CS graduates out there who feel they aren’t “real” programmers because they didn’t teach themselves C++ from a book on the weekends?

brock9

 

Posted in General Software | Leave a comment

Crashing by the Seat of Your Pants

crashing

In several situations in my development career, I’ve been faced with creating something huge from nothing with only a basic understanding of the given programming language.

When I look back now, half the problem was my agreeing I could do them in the first place.  My management would tell me to do what I could, and I was very eager to both dive into the language and accomplish something substantial.  I never refused a project.  I always grossly underestimated the time to complete.

The problem was this.  How do you build something bigger than your personal experience?  Sure, you learn as you go.  But think about that.  To learn something well, I mean well enough to use as a good solid building block in a complex system, you have to gain experience with it.

There’s no time for that.  To take the time for solid understanding of each technology used in that huge complex thing you’re building is to bring the ire of management.  “You’re not even typing, you’re always just sitting there reading.”

What choices did I have?  I did what I could.  To get things to work at all, I used Stack Overflow in precisely the manner that infuriates seasoned programmers, namely copying and pasting code examples into my production project without completely understanding its fundamentals.

Any guilt over this kind of behavior can quickly be dispelled at the time by telling myself that I’ll come back and understand it later.  At one point, in order to make an I/O interface work I resorted to adding a half-second sleep to the data read call, having absolutely NO IDEA why a delay made it work.  Duct tape.

With the last huge thing I built, the barely-understood technologies were stacked three or four layers deep.  It’s no wonder that the finished product was less than reliable.

I no longer believe in rumination and regret if it isn’t accompanied by hard-knock lessons learned, so to turn this experience into something less traumatic I need to outline just how I should have done things differently, as I’ve mentioned earlier on this blog.

Lessons Learned

Don’t skip the crawling and walking and try to run out of the delivery room.  Learn the basics, as painful and tedious as that is.  Reverse engineering and example code might give you a general idea how something works, but it can’t show WHY they are done the way they are (unless they are commented in extraordinary detail).  If management balks at the time you’re taking to learn, you have a management problem.  No one with little experience can be expected to pull off a big project in the same time it takes an experienced developer.

Have enough confidence in yourself as a developer to look your manager in the eyes and tell them that it’s gotten complicated and it’s going to take time.  When you fail to do this, you’re painting a false picture of how hard you are working.  Your management might either assume you’re not a productive developer or you’re not very bright.  Or both.  So much of software work now involves brand new technology that learning and applying things from scratch is really an unavoidable part of it.  Whenever I’ve told my management that I’m trying to get a handle on something complicated, their response is to try to do something about it, like call in outside help (yeah, right, they need to read Mythical Man-Month).  In the end, though, I’ve still had to grasp it for myself by my own means.

Don’t overplay the “underdog” drama.  If it were a movie script, little old me would build a spectacular piece of software on time without help and it would save the company.  Seriously, my management has made the worst movie audience ev-ar.

Don’t be afraid to tell your boss you’re having trouble.  A good manager is there to REMOVE the obstacles in your path, to allow you to do your best work.  When the obstacle can’t be removed, at least they will have a realistic picture of how your schedule will be affected.  You have to try harder to MAKE your management understand what is taking the time.  (That’s where sales experience would come in handy.)  If you’re resisting this conversation, it’s possible that you’re avoiding one or more solutions to the issue that make you uncomfortable.  For instance, one solution might be to give your project to a more experienced developer, and have you write the docs for it.

There is a LOT of psychology going on with me in software development, and I suppose it’s a similar psychology to what artists and other creative workers deal with.  I’d like to explore the subject, not only for myself but for other developers who constantly beat themselves up without understanding why.

Posted in General Software, Learning, Lessons Learned | Leave a comment

CFHour is Dead. Long Live CFHour! (April Fools)

Scott and Dave

(Ok, I fell for their April Fool’s joke hook, line and sinker.  Was going to delete this post, but what the heck.)

Noooo!

Episode #213 of the CFHour podcast was a doosie.  Out of nowhere, we listeners were hit with a big surprise- it was the last episode.

Not even an “our next episode will be the last” warning shot.  I imagined listeners around the world were turning to each other with puzzled grimaces, asking “Huh? Can they DO that?”

I now appreciate the fact that Dave and Scott just grabbed the band-aid and ripped it right off, arm hair and all.  Less painful over all.  Of the ten or so podcasts I subscribe to,  CFHour was my favorite.  Just the thought of Scott’s voice saying “occupy me” still cracks me up.

Even before Scott joined it (after 100 episodes), Dave’s creation was a success.  The pod ether is jammed with podcasts that lived for ten or five or even a single episode.  At its mid-life, the pairing of Dave and Scott was perfect, and in a Laurel and Hardie kind of chemistry (NOT an Abbott and Costello way- all the ribbing aside, you can tell these guys really are good friends.)

It had to be a little hard to power down for the last time.  The show was good because THEY enjoyed making it.  They’ll probably miss doing it, and we’ll certainly miss having new episodes, but-

I’m not going to let this stop me from listening to the show.  Like Adam Cameron says, “do a Gavin” and listen to the back episodes.  That Gavin is a pretty smart guy.

cfhour

Posted in ColdFusion | Leave a comment

And Here We Have Idaho

Idaho

It’s official.  Idaho has the lowest wages in the United States.

Just yesterday, I used Indeed.com to see how Idaho ranked in salary paid to software developers.

What I found was this.  We’re not the worst.  Hawaii is worse by $1000 a year.  And… that’s all.  No other state is lower than Idaho and Hawaii.

How depressing.  Not only that, it’s embarrassing and shameful.  So the Idaho governor asks his top education man, and the answer is that the Idaho schools aren’t producing the skilled workers that high-tech companies need.  Is it merely a coincidence that Idaho has been starving its schools more every year as a matter of principle?

I’m wasting my time trying to find work in Idaho, remote or not.  Software developers in Washington average almost DOUBLE that of developers in Idaho.

“Well,” you might say, “Idaho has a really low cost of living.”  Forbes.com has a ranking of states based on cost of living, taxes, salaries etc.  Idaho comes up to a ranking of 20.  That should make me happy, right?  It doesn’t.  Idaho’s wages are only decent if you’re going to live and spend them in Idaho.  What if my son wants to go to college outside of Idaho?  Think schools in other states give scholarships for kids coming from third-world states like Idaho?  They don’t.

The only answer is either to leave the state I’ve called my home my entire life, or to take a remote job based in some other state.

If it’s really true that Idaho is having trouble finding software developers, it may be because a lot of the ones that live here work in California.

Posted in Grumbles | Leave a comment

Need Ruby Egotist to Demoralize Small Team of Developers

Who gets to decide whether or not I’m a “rockstar” developer? Well, who decides whether a musician is a rockstar? Being a rock star implies massive public recognition and record sales.

So a rockstar developer writes code that downloads in the millions, and their name is a household word. Uh, sorry to tell you, but there are no developers whose names are household words, except maybe that guy who started FaceBook. What’s he coded lately?

Can a programmer’s rockstardom be proclaimed? Nope. Look up Pia Zadora on Wikipedia.

Now, on to ninjas. They can sneak around and kill lots of people. A software ninja can sneak around all the obstacles and kill off lots of design problems and/or bugs. Ok.

Can I call myself a ninja? You bet! Every Halloween. Can I proclaim my own ninja-ness? Sure I can, as long as I THINK I’m really swift and nimble and I kill lots of something.

Do recruiters who ask for rockstars and ninjas realize they’re inviting the egocentric, the team busters, the Lone Rangers, the loose cannons? Perhaps calling for a rockstar is to stroke my ego and convince me to apply. By applying, I BECOME a rockstar.

Pullease!

What kind of person describes themselves as a superhero? If someone volunteers to you, “I’m a programming rockstar”, why don’t the egotistic jerk alarm bells go off in your head?

Just use your English. Use words like “expert”, “advanced” and “battle-hardened”. Even the words “really really good” are better than ninja.

Posted in General Software, Grumbles | Leave a comment