What is your life worth?

Let’s assume you sleep 8 hours a day, leaving 16 hours for you to enjoy life, hang out with your spouse, walk your dog and take your kids to the park.

I want to purchase half of that time.

clock1I’m willing to give you some holidays and weekends, but at least 5 days a week and 8 hours per day, your time is spent on stuff I want you to do.  Subtract out 3 weeks of vacation and I want to buy about 52% of your time.

How much will you charge me?

I’m not the first person to ask this question. I bring it up because a tech recruiter recently asked me to explain my salary requirements.  What she was really asking was: “You are still in development and you are still in eCommerce, why are you asking for so much more than you did 17 years ago?”

Let me explain.

KeyboardDevil - circa 2005

In 1999, while still in college, I accepted my first full-time developer position with JP Morgan Chase.  We were a team of six, working on the website CreditCardsAtChase.com.  It was a pretty simple JSP site who’s purpose was to educate banking customers on the differences between credit cards and market them.  The technology was entry level (DHTML, baby!), the pace of work and rate of change were very reasonable (as you’d expect at a bank), and there was no need for on-call or late hours. As first jobs go, this one was pretty much perfect.  I got to work with a small team and hone my code skills without overtime or unexpected timeline stresses.

Over the years, I moved up through the levels of developer inevitably graduating to the architect/manager split and choosing the latter.  Each time I changed jobs a little more focus was required, and each position demanded a little more responsibility and accountability.  But most importantly, the required time increased. More responsibilities means more deliverables, I had to fit more into a work week.  This meant longer hours, and sometimes, the occasional Saturday.

When I started at WDPRO in 2005 we had no on-call expectations.  At that time the importance of 24/7 eCommerce hadn’t gripped the Walt Disney company like it had with others.  But that changed in 2009, I was on-call one week out of every 8. As our online application count increased, so did our on-call expectations.  When I started at Chico’s as tech manager in 2012, I was on-call 24/7 and pulled into live-site issues 3+ times a week (for the first year or so).  Due to late night batch jobs, the website most frequently broke at 3 o’clock in the morning.

My iPhone receives my work email and text messages from co-workers.  It comes with me on vacation, it’s with me at the movie theater, when I’m having dinner with my family, it’s in the bathroom, and in the dentist’s office. Realistically, the only time I really unplug is when I’m out of cell phone service coverage, or in the shower.

At this point in my career, I’m rarely every “not at work”.

So, what would you charge for 99.9% of your time?

Why I didn’t hire you

Rejected!This blog post is the result of a combination of the original post here (February 2016), a very similar post on Linked-In, and the comments and conversation resulting from them.

For those of you who don’t know me personally, I’m a development manager.  The most important part of my job is to interview and hire software developers.  With mediocre software developers, you get mediocre software.  No one wants mediocre software.

I like to believe I’ve become pretty good at identifying talent and weeding out less-than-desirable candidates.  During my career I’ve interviewed many candidates, possibly in the hundreds, and built successful development teams from scratch more than a few times.

Last week I received an email from our HR recruiting manager about a young, fresh out-of-college candidate that we really didn’t have a position available for, but had an internal referral and really wanted the opportunity to talk to us.

Our resulting conversation, or rather, the fact that I’ve had this conversation at least 3 times in the past year, is why I decided to write this post.

Here was my feedback to the recruiting manager:

This was a nice conversation, he’s a pretty smart kid. As I expected, his answers were wordy and rehearsed, pretty standard for someone fresh out of school with only scholastic experience.

That being said, after a few softball tech questions I drilled into his knowledge a little bit and really uncovered how junior he is. When I asked him about Agile, he recited a Wikipedia definition that most likely would get him a “B” on a test, but he couldn’t give me any specific examples of how he and his team used it or why it was “better than waterfall for modern projects” (his words).

We spoke only briefly about his PHP experience (it was on his resume), but after he couldn’t tell me how to concatenate a string or name any of the methods for dealing with databases I assumed he’d fall short on design patterns and implementation standards outside of what was written in a book.

Education is important, but more important than what you know is how you’ve taken what you learned and used it in your career/life.

When I talk to programmers, especially young ones, I’m looking for eager curiosity and self-taught experience. You can’t get this in a college classroom, it’s a personality. You either have it or you don’t.

As I interview more and more of our millennial generation I am finding that interviews like this are becoming more common.  And that concerns me greatly.  Somewhere along the line, our formal educational system evolved into a series of rewards for memorization and regurgitation of facts and definitions. Practical application and self-paced (self-motivated) curiosity have been replaced with the promise of “good grades = good career”.

To add complexity to the issue, the interview process itself is flawed. I could write a book (probably not a very good one) on interview questions and techniques and still not scratch the surface of every candidate’s true potential or knowledge. The sad fact is, I have 60 minutes (at best) to try and extract the complex answer to a simple question: “Should I hire this person?” On top of that, I’m judging talent and aptitude, while trying to avoid knowledge. To do so, I find that more important than the base question is the follow up: When I ask “Are you familiar with design patterns”, which in this line of work should always result in a “yes”, I follow up with “what was the last pattern that you used? What did that application do? Why did you choose that pattern over the others?”

Everyone knows what a stone is. We can describe a stone and draw one, but only the great minds saw it as a building material and constructed great castles and cities. This is the skill I’m looking for, and it often hides itself well.

What I really wanted to say during the interview was “An interview and an exam do not share the same purpose, therefore they do not have the same answer. I’m not asking you about agile SDLC because I want to know if you know the definition.  Frankly, I don’t care if you know the definition.”  But I did not.  Maybe I should have.

Many of the best programmers I’ve worked with have no formal college education, and many of them have no certifications of any kind, but they are still brilliant developers. Getting a degree in Computer Science does not make you a programmer any more than wearing feathers makes you a chicken.

Walk into your kitchen, unplug the toaster, take it apart and find out what makes it work.  If this activity doesn’t interest you, maybe you should pick a field outside of engineering.

The importance of being thorough

Every once in a while, I get a nice cease and desist email from one of the companies I write about on my blog.  This, however is not one of those.  Hilariously, it is quite the opposite.

First, go read this blog post about Montel Williams and MoneyMutual.com

Then, read this email I received earlier today:

I’m Jay with MoneyMutual.com, and I wanted to thank you for linking to our site from these urls:Money Mutual
www.keyboarddevil.com/blog/2012/05/a-shark-named-montel/
www.keyboarddevil.com/blog/category/general-life/page/2
www.keyboarddevil.com/blog/category/general-life/page/2/
www.keyboarddevil.com/blog/category/logichypothesis/page/2
www.keyboarddevil.com/blog/category/logichypothesis/page/2/
www.keyboarddevil.com/blog/page/3
www.keyboarddevil.com/blog/page/3/
However, it has come to our attention that these links may have been acquired against Google’s Webmaster Guidelines. It is important for us to bring our site into compliance. Would you please add a rel=”nofollow” attribute or remove our link from these pages and any other page on your site?
Thanks,
Jay McMillan

Thanks for the email Jay!

But, you didn’t even read my blog.  Not a single word.  At first, Money Mutual looked like an evil corporate predatory lending monster.  And now…  Well you guys still look that way and you’ve managed to add fucking stupid.

So, what the hell.  As a former software developer I can see the importance of valid links for SEO purposes.  Here’s my response to Jay:

moneyMutReply

Beyond the Mouse

It wasn’t an easy decision, I’ll give you that.  But now enough time has passed to where I feel like I can speak (or blog) candidly about… That place I worked that one time.

OK, so almost candidly.  But you’ll get what you get, and you’ll like it.

Way back in 2005, I started an exciting career at (REDACTED), when the entire department had less than 8 developers.  When I finally hung up my giant white gloves and moved on, there were over 150 of us on-site, and somewhere in the neighborhood of 225+ when you included off-shore contractors.

fishAt every job before this one, I was the prodigy.  At first, it was amazing.  I was the youngest developer ever hired by my first company.  And it was awesome.  But after a while, it felt like an intense weight on my shoulders.  When I moved on to other companies, the weight continued to amass until it was unbearable.  I was a big fish flopping around, and my pond felt like a spilled glass of milk.

Then, by some weird stroke of luck, I was downsized right out of a job.  I spent a month hanging around the house, and then another month doing contract development work and living the easy life, but I was bored.  Finally, an unexpected call led me to an interview with one of the most famous companies on the planet.

Truth be told:  I didn’t feel like I belonged at this place.  The other developers were really smart, and I was a small fish in a HUGE pond just trying to get noticed.  I remember a conversation with my mom when I told her that this job wouldn’t last.  We were contractors, all of us, and we were told we’d be competing for full time positions.  I told her I was in way over my head, and the other developers were eventually going to outshine me, right out of a permanent spot.

Everyday I walked into that office it felt like a gift.  Never, in my career, had I worked with so many amazingly talented people.  I know people use the word all of the time, but it was, truly, awesome.  The department had no idea what they had their hands on.  Everyday, project managers would fight over which developers they got for their projects, and we were kings.  There was a magic about that “kingdom” that I thought was irreplaceable.  Thinking back…  Maybe it was.

The last day of my 6 month contract, I was extended to 9 months, and then a year.  Then finally, late one evening, while chatting with another developer outside the kitchen, I was approached by my manager and pulled into a conference room where he told me they wanted to offer me the full-time job.  It was an 11% pay cut, and honestly, I would have accepted if it had been 20.  To date, it was the greatest accomplishment of my life.

unknown technologyOver the next 6 years, using a language no one had ever heard of on a server no one knew existed (and, no one would ever miss) we created websites that upped revenue (in just one case) from 500 million to over 1.8 billion dollars, and another that redefined the way restaurants were booked for a massive family of locations.  Before agile and JQuery, we created process where there was none, we wrote a syndicated code base used across thousands of travel websites, and fostered the environment for a development family like none other I’ve ever witnessed.

After a few years, I knew every site like the back of my hand.  I had built big chunks of it, after all!  But, at the height of my career, the tide started to shift.  We were bringing in more and more contractors, and taking on more and more work.  It was an exciting time to be a part of the senior staff but, at the same time, the writing began to appear on the wall.  One by one the original development team began to disappear.  We lost one talented developer to Oakley, one to YouTube, a few to start-ups across the country, and another to a credit union just starting their web business.

childLabor

I moved from project team to project team, and finally settled in on the operations team as a senior level mentor and trainer.  By this time the technologies had begun to change.  We were moving in the direction of a new language, a new web server, a new JavaScript library, and a new direction for the sites all together.  Had it been just languages that changed, I could have survived.  But the greatness of the team had disbanded and the personality of the department had shriveled up and became that of a giant, code pumping machine.  The Nerf guns were banned, the holiday parties were long gone, and the annual indoor golf game was lost to memory.  Long forgotten were the days of “Dev Chat” meetings, and off-site gatherings you could fit at a few small tables in a local restaurant.

We had become a world-class development shop who had completely forgotten that we weren’t a development shop.

I wasn’t even looking for a job when I got the first call.  In fact, I dodged the hiring manager, the HR rep, and the vice president of eCommerce for two weeks while they pursued me in the evenings and weekends.  But, finally I agreed to drive down to south Florida to meet the team, and get a feel for the company.

Reluctantly, as there was no longer room for me to grow, I decided to pull the plug on my relationship with the mouse and begin anew.

Know your user

As a software developer, one of the most interesting sources of “how will a person USE my product” has been watching my parents use a computer.  A while back, I blogged about a cameraman approaching random people on the street and asking them “which browser do you use?” and getting “Google.com” as an answer about 90% of the time. (For the non-techies reading this:  A browser is the program you open to GET ON THE WEB (like Internet Explorer or Firefox), Google.com is a website that you use to SEARCH THE WEB.)

A coworker of mine sent me another eye-opening video where a somewhat elderly father tries to use the Metro interface on Windows 8 for the first time while his son films the struggle.

I really hope Microsoft takes notice (they won’t).  This is indicative of when anyone uses a new system for the first time, specifically the older generation.  Just because a “feature” looks obvious to you (the developer), doesn’t mean others will find it intuitive.

30 Useful web apps

The web is USEFUL (sometimes).  Here’s 30 really useful web apps that you should check out and potentially bookmark.

Some examples:
ScreenToaster: screen recorder
FillAnyPDF: pretty self-explanatory
Vuvox: Create your own collage
Aviary: Super simple PhotoShop like image editor
Evernote: Keep notes
Zoho: Online office-like suite of software

http://www.maximumpc.com/article/features/30_incredible_web_apps_you_need_try

See?  The KeyboardDevil isn’t all doom-and-gloom satire. LOL

What is a browser?

First, watch this video:

The reason this video is shocking (to those of you who know what a browser is) is because we assume that the proliferation of internet use has, in some way, educated people about the fundamental workings of the web and software. This is, clearly, completely untrue.

Don’t forget developers/site designers/UI folks, just because your mom can use Facebook to send you messages, doesn’t mean she has any idea of how the tubes really work…

Privacy < web 2.0

Yet another new wave of applications is hitting the “interzweb”.  Online finance tools like Rudder are quickly gaining popularity, and by all rights (save privacy), they should be.

Firstly, let me say that I’m upset I didn’t create this myself.  I keep track of my monthly finances and bills using a password protected Microsoft Excel spreadsheet, and an application that does the kind of stuff Rudder does is pretty kick-ass.

That being said, let’s get into the meat of the matter.

Over on Rudder’s security page you’ll find:

“We only have ‘read’ access to your transactions and balances…”

Which, honestly scares the shit out of me.  I, like most people, am constantly looking over my shoulder (or in the little mirror) at the ATM.  I don’t think I want to be purposly entering my private banking data into a system where this statement is made.  Maybe I’m crazy, maybe not.  But the popularity of these sites speakes volumes of people’s trust in the internet, and its developers.

Just “food for thought”.

Chrome shines… Duh!

Not to add another blog in the long line of blog posts about Google’s new Chrome browser, but…

I downloaded the browser and set it up on all of my machines this past week and have been playing with the settings.  So far, I’m (of course) really impressed with the product.  The user interface makes PERFECT sense for a seasoned web user.  Chrome’s memory management is truly ideal for a web browser, tabbing is easy, fast, and makes logical sense.  I think I can safely say that the browser is solid, fast, reliable, and easy to use.

All of that being said, let me follow up with… FINALLY.  People have been posting articles all week that Google is some kind of innovator, and visionary.  But, in reality, this kind of product really isn’t all that “new”.  True desktop software developement has been around for a LONG time, and Google was just brave (read: rich) enough to apply it to web browsers.

Mozilla Firefox, really just replicated what Internet Explorer and Netscape Navigator did wrong, but did it better.

Not that I’m bagging Firefox… It’s truly a developer’s best friend, and I will continue to use the Fox when developing sites.  The “Add-on” capability is simply second to none.  For the life of me, I can’t remember what we did before Firebug!

Of course, none of this changes the way I feel about Chrome.  It’s a fantastic product.  In fact, I’m posting this in my Chrome browser right now.

So, good job Google; you identified an obvious problem, and offered a non cookie cutter solution.