Have you ever had the pleasure of watching a competent professional work? For example:
- You go to the dentist, he/she rolls right up to you, pulls down the light (which was already at arms length), pulls in the table of neatly arranged tools.
- You go to the eye doctor, he/she flips the lights off, rolls over with that eye device, and they effortlessly figure out your new prescription.
- You go to the drug store to pick up a prescription, they go right to bin, get your bag, scan it, beep-bop-boop! You’re on your way out!
- You go to a concert, the lighting is perfectly synced with the music, the music is perfectly mixed, and the playing is top-notch!
- You go to a house closing (when buying or selling a house), your attorney is there with a neat stack of papers with “sign here” stickers everywhere where you need to sign. It’s a painless experience!
- You go to a Japanese steak house, and the chef cooks a meal in an entertaining way – cleaning as he goes – and delivers a top-notch meal, effortlessly!
These are the definition of: professionalism, and competence.
Now think about how you are with your job! 🙂 What I mean is, is this how you approach your work? Do others watch you work and think it looks effortless? I have the great privilege of working with a lot of developers. In that time, I get to see many, many different styles and habits. Many developers seem to spend most of their time mildly frustrated, and somewhat awkward with their tooling.
I’ve come to realize that just about no one “invests” in their profession the way the professionals above do. It’s not that developers can’t – it’s that they choose not to. But why not?
10,000 hours to master a skill:
Malcolm Gladwell famously said it takes around 10,000 hours to master a skill. Working a 40-hour week, that is a little under 5 years of work.
That means that if you’ve been doing your job for 5 years, you have pretty much mastered that job.
If you are a master at your job, why don’t come off that way – like the examples above? I believe it’s because no one puts effort into the “finishing touches” of their profession. If your job is a developer, where things change constantly – then it gets a little more complicated. However, you still should have mastered your coding style, how to self-organize, how to pay attention to detail, and how to adapt to change – right?
Why is it then, that I see people who have been in the industry 10-20+ years that simply don’t care about this? It’s simply not a priority. I think it’s because we haven’t had much leadership in this department for a few decades – up until when Bob Martin started speaking out about this.
What is a professional developer:
If someone says they are a professional developer simply because that’s what they do for 39.5 hours per week, I strongly disagree with that. In fact, Bob Martin does too! There is a big difference between someone who cranks out an app, and someone who creates software. In fact, I say this all the time:
“There is a huge difference between whipping up an app, and releasing a product.” –Robert Seder
So what does it mean to be a professional software developer? Some things, including some things that Bob Martin teaches us in The Clean Coder:
- Don’t ship shit.
- QA should find nothing.
- Don’t have commented code.
- Follow the SOLID principles and OOP (if an OO language)
- Leave the code in better shape than you found it.
However, I’d defer to Bob Martin on this as he has covered this extensively.
Start with this video (Demanding Professionalism in Software Development) if you are not familiar, then read The Clean Coder – it very well could change your entire outlook on your career!
Let’s say you are onboard with this idea. You don’t just want to be a coder, you want to be a software professional, where do you start?
Where DO you start?
One of the main indicators to me of how invested a developer is in their career, is how good they are with their tools. What do you think when you see a mechanic reach for the wrong tool, or can’t find the right tool – and is scavenging through this toolbox? What do you think when you see a police officer who fumbles with the lights and sirens because he doesn’t remember which knob is for which?
Likewise, what would you think if you saw a developer not take advantage of hardly any features of Visual Studio and awkwardly work around the Visual Studio defaults? I see this a LOT. The main thing that comes to mind for me, and many times I do say it aloud: “Stop. Let’s figure out a way to do that efficiently”
Two examples come to mind that are very common: 1) snippets, and 2) Intellisense.
When you use a “snippet” in Visual Studio, you are in a “mode” where you can <tab> between all the replaceable tokens. As soon as you hit <enter> or if you click anywhere, that takes you out of snippet-mode, and now it’s just a bunch of text. Yet time and time again, I see people bring up a snippet, type in the first token and then click on the 2nd token. That puts you out of snippet-mode AND you lose the selection of the token you were trying to replace, AND when you type in that token, it won’t update the other token placeholders. It’s a complete anti-pattern which almost completely undermines the point of snippets – yet most developers do this exact thing. If you go to use a snippet, just take your hand off the mouse!
When you use Intellisense in Visual Studio, it comes up after you hit the “.” However, if you selected the wrong thing, MOST developers will backspace back to AFTER the period, not get Intellisense, and then try to just type in what the member name is, hoping it’s right. All you need to do is also delete the period and you’ll get your Intellisense back. Failing that, you can always do CTRL+J to bring up the list too – yet almost no one does this.
Take an afternoon and “move in” to Visual Studio. Make it your own. Learn (or set up) shortcut keys for everything you need. Lay out the windows in a way that gives you the most screen real estate. Become efficient with your tool!
My advice – and what I constantly try to do, is master the tools that I have. If something is frustrating to you in Visual Studio, I can almost guarantee it can be remedied. Virtually every part of VS is customizable – never mind when you add ReSharper to the mix!
It doesn’t stop there:
One other really big thing that I see are full-time work-at-home people who are not set up for it. I mean like people who have worked-at-home for years, who work off a laptop screen, laptop keyboard, and touchpad! That is insanity!
How do I know? Well, aside from it coming up in conversation, I see it constantly! I see the caps lock (on-screen indicator) going on and off constantly. I see then double-clicking a word to select it, and as their hand moved away, then accidentally selected a few lines after it. This is insanity!
If you work at home, and this is my main point – invest in your profession:
- Get a good quality chair. I have found that those Staples/Office Depot chairs only last a few years before they are unbearable. Instead, invest in a Herman Miller chair. I got an Aeron in the year 2000. it came with a 12-year unlimited warrantee. About 10 years in, I had a crack on one of the pieces, they sent a replacement part out, next-day-air for free. Now, it’s 14-years old and it’s still as good as the day I got it. Yes, it’s a $700 chair – but it’s better than buying a $400 chair every 3 years.
- Get a good quality floor mat. Whether you are on carpet or a solid surface, save your floor by just getting a good mat. I’ve had excellent luck with American Floor Mats (see this blog post). Don’t get this cheapy mats from Staples, those are more trouble than they are worth!
- Get a good quality keyboard. The common keyboard nowadays uses contacts which wear out. For me, someone on the computer most of the day, I would go through a keyboard every 10 months or so. Keys would stick, some key would stop working, etc. Instead, get a mechanical keyboard. You will never go back – and the mechanical keyboard will last you decades (in theory). I love mine from Das Keyboard.
- Get a good quality, wired mouse. I’ve found that the wireless mice tend to be more flaky and eventually fail. A couple years ago I got a Microsoft 5-button wired mouse and it’s worked flawlessly every since. If you are using a touchpad for your everyday – stop now, save yourself the aggravation, that is madness!!
- Get some screen real estate; buy a monitor. If you are working on a laptop screen, stop. Buy a monitor. You can get a 24” for like $120 now, there is no excuse. If you have one screen, buy a 2nd screen. As a developer, an extra screen makes an enormous difference! If you work off a laptop screen day in and day out, just stop – that is crazy. You are going to go blind early, and be frustrated every day. You should be able to sit comfortably in your chair, type comfortably without hunching over to get closer your screen.
- Upgrade your broadband. One thing that shocks me is full-time work-at-home people who cheap-out on their internet connection. If you work from home, this is like your car, your gas, your commute, all combined. Invest in it, it’s your livelihood! Get the better speed internet, for crying out loud!!
- (optional) Get more RAM. If you are doing work on your machine, then buy more memory. It is ridiculously cheap nowadays and it makes an ENORMOUS difference. 8GB can be like $80 or cheaper.
- (optional) Get an SSD. Again, if you are doing work on your own machine, upgrading from a mechanical (5400 or 7200 RPM) drive will make a world of difference. A 240GB SSD is around $100 right now. There is no excuse!
Call to action:
So what is my point, exactly? This whole topic is something that I regularly try to work on and I’d encourage you to do the same. If you agree with this, then put it on the schedule!
- Talk to your significant other about the chair, mat, and hardware upgrades (keyboard, mouse, and monitor)
- Call your broadband provider tomorrow and see if you can upgrade the the next highest speed
- Carve out some time in your calendar to learn Visual Studio. Set up shortcuts, re-arrange windows, ideally even buy ReSharper (if you have it at work, you can legally use it at home and vice versa!)
- Get and read The Clean Coder (in addition to Clean Code)
- Watch those two Bob Martin videos above!
Let me know if you agree or disagree!