DEV Community

Cover image for Software Developer, Are You Just A Hammer?
raddevus
raddevus

Posted on

Software Developer, Are You Just A Hammer?

Background & Article Setup

I’m going to say a number of extreme things about Devs in this article to get your attention and get you thinking.

But, as you read this, keep in mind that I am a Software Developer and have been for 25 years of my 32 years in IT (Information Technology).

I Know I’m A Tool

Over those years I’ve worked for a numerous companies in various industries (Civil Engineering, Real Estate, Legal Data, BioTech, E-Commerce, Banking & more). And to them, I know, I am just a tool. That’s good and bad. I’ll tell you about both as we continue on in this article.

Along the way I’ve learned that we as Developers get extremely focused on the esoteric details of code*, but to make ourselves more valuable we should actually learn something far more important.

*How many 100s of articles have you seen here on Dev.to that discuss cookies, JavaScript map or centering a dev in HTML?

All of that is why my first extreme statement is:

Don’t Learn To Code, Learn to Create Software Solutions

You don’t need to learn to code. You need to learn to create a product or a solution.

Is That Statement Just Hyperbole?

You may be thinking that statement is pure hyperbole — just a huge exaggeration — because of course to create the product you’ll need to learn to code, right?

Not really, because… if you could design the product to an extreme level of detail you could just guide one or more devs (who know how to turn those details into code) to create the product.

Learn Enough to Create The Product

But, even if you are the developer of the thing you design, then you only need to learn enough to build the product.

Yes, I’m saying stop wasting your time learning all of those pedantic little details that you never remember anyways. Instead, follow these steps:

  1. Determine the interesting thing that you want to build which solves someone’s problem
  2. Design the basic solution
  3. Build the MVP (Minimum Viable Product) and iterate. 3a. You’ll learn the necessary details as you go.

You Don’t Need To Know Every Detail of A Programming Language

Of course, the more you know then the more quickly you can build solutions so I’m not saying it isn’t important to learn.

The 80/20 Rule Again

The point is that 80% of the code you use is the same old stuff — and that’s a good thing. Yes, there will probably be 20% that you need to learn to create the software solution but that’s fine. Don’t worry about it. Cross that bridge when you get to it.

But, if you always just build little pieces of things that other people design then maybe you’re just an assembly line worker. If you never create the entire thing yourself (gather requirements, design solution, write all the code, test and deploy to production) then there is a lot you aren’t learning. You may be the equivalent to an Assembly Line worker.

Image description

Image from https://pixabay.com/vectors/factory-car-engine-assembling-35104/

Just Write SQL Stored Procedures

I worked at a company where they hired people who only wrote SQL Stored Procedures. The management mentioned that they were like assembly line coders. These devs had no idea how the Stored Procs were used in the over all system. It’s a very limited viewpoint.

If You’re Just Writing Code In A Bigger System

Maybe you’re just an assembly line worker?
Coding requires extreme levels of detail at times and knowing those esoteric details are really important. However, if all you ever work on are the esoteric details then you are just a code monkey sitting in a cave. You’ll never have your own product or service. Instead, you’ll just work for someone else who will use you like a tool.

Are You Just A Hammer?

Sure, you’re important and may be able to do things that only a few others can, but in the long run you are just a tool. Hammers are useful and important but they are replaceable too.

Take a moment to answer this question: Who is going to make more of an impact:
A) the person who designs complete products and can build them
B) the person who knows the esoteric details of how to implement some specific functionality?

How Easily Replaceable Are You?

Also, ask yourself which one of those Roles are there more of? Are there more product designers in the world or are there more JavaScript developers?

It’s Not Entirely Negative to Be An Assembly Line Worker

Finally, yes you can make a ton of money being a tool. People pay huge amounts of money for large power tools (you may be the equivalent of a power tool) that solve their problems. Maybe that is all you want. It is certainly a road to travel down and I too have traveled that road for my entire career.

Create Your Side Hustle

However, along the way you need to be building your own products and services also.

Reasons to create Complete Products & Services

If you work on completing a product from beginning to end you will learn learn every aspect of the SDLC (Software Dev Life Cycle) and you will be and even more valuable as a resource to any company you work for.

Better Communication With Other Roles

You will discover the challenges that other roles have (testing / QA, DevOps - deployment / support, etc.) and you will be able to communicate with them at a better level.

Total Ownership, No Better Learning

If you designed a product to a high level of detail and then hired one or more devs to do the work, you’d suddenly transform into a true owner / leader because you’d suddenly become aware of time/cost challenges that your Development Manager has to worry about.

Your need to get the product created as best as possible in the shortest time possible (paying an hourly rate) would become a necessity.

There are things you can only learn by taking complete ownership - monetary, technical,
You can only take complete ownership by creating a product from initial requirements through deployment and support.

Skin In The Game

To learn these lessons, you have to have skin in the game. There has to be risk associated with it or it’s never going to become real.

I Encourage You To Build Your Thing

In conclusion, I’m encouraging you to stop just writing little scripts and toy code. Instead, take a chance and build something that you want. Build something that doesn’t currently exist and that you would like to have.

Dont limit yourself. You can build a better Facebook or a better email client or whatever.

My Password Generator / Manager

I’ve created a complete Password Generator / Manager EcoSystem and it was a huge challenge that helped me learn:

  1. Android development (wrote android app)
  2. iOS dev (wrote iphone app)
  3. Web App dev including PWA (Progressive Web App) dev - runs seamlessly on all phones
  4. WebAPI creation - allows users to store their SiteKeys and retrieve them from any device
  5. Cryptography using AES256 and Authenticated encryption

You can read all about how my FREE (forever) program C’YaPass works.

You can get the open source code at my GitHub.

Get the desktop version written in HTML5 & ElecronJS (runs on Mac, Linux, Windows)

You can read an overview of how it works and keeps your passwords safe by never storing your passwords anywhere but generates them every time.

Image description

Take on A Big Challenge and Grow

I encourage you to take on a big challenge, write (and deploy) a complete app or service and you will transform into a Software Solution Designer, not just an assembly line worker.

Hammer image from: https://pixabay.com/photos/claw-hammer-hammer-tool-2202195/

Top comments (20)

Collapse
 
inovak profile image
Ivan Novak

I love the idea of having skin in the game. That ratchets up the pressure right where it needs to be to optimize for learning through action. I try to live in this space as much as possible.

This article reminds me of a couple concepts:

  • Eustress: positive cognitive response to stress that is healthy and gives a feeling of fulfillment.
  • Tracer Rounds (from Pragmatic Programmer): users get to see something working early and you get valuable information for continued development... as opposed to spending ungodly amounts of time developing the best technical, potentially esoteric, solution possible.
Collapse
 
raddevus profile image
raddevus

Thanks so much for reading my article and for the kind and interesting response.

I’m following you here on dev.to and I’m really glad because I’ve learned two new things from you just today :

  1. LRM
  2. Eustress - hadn’t heard that term before. Very interesting. I call this the “stretch me but don’t break me” principle. 🤓 I’ve read The Pragmatic Programmer (20th anniv ed) and it was fantastic. Totally love the Tracer Rounds idea. Great stuff. thanks for great conversation
Collapse
 
inovak profile image
Ivan Novak

Absolutely. First of many, I hope!

Collapse
 
ant_f_dev profile image
Anthony Fung

Nice article – thanks for sharing (and alerting me to it).

Maybe it’s just experience of being in a few development environments, but I didn’t think the statements here were particularly extreme.

My first thought was that it helps to be able to code, but it’s not a necessity these days – there are quite a few no-code platforms to build apps (or prototypes) with. Going through the motions of coding things helped me with thinking in slightly different ways though.

I agree with not needing to know all the details of a programming language. I feel that a good understanding of some fundamentals along with learning to search documentation will go further than knowing all the ins-and-outs of a particular language (even if that’s humanly possible). Being comfortable with searching documentation will help when learning new languages too.

The Hammer concept is an interesting one. I’ve been in some environments where I’d learn of requirements by talking to people, and then refining the Minimum Viable Product based on feedback. I’ve also been in places where I’ve been expected to build things with less scope for creativity. While the latter is more ‘hammer-like’, I suppose someone is a hammer in any case where they report to someone.

I agree it’s important to do some exploration too. I started writing ~6 months ago partly to improve my communication skills, partly to see if I actually understood what I thought I did (after all, it’s only possible for someone to teach if they understand the subject). But side projects can also have you exploring areas you might not otherwise look. My first ‘real’ project was Working Files List; it helped me to learn quite a few things, including how to build Visual Studio extensions.

Collapse
 
raddevus profile image
raddevus

Wow, thanks so much taking the time to read my article and comment.

I 100% agree when you said, " I feel that a good understanding of some fundamentals along with learning to search documentation will go further than knowing all the ins-and-outs of a particular language..."
Great stuff. Thanks for the interesting discussion.

Collapse
 
ant_f_dev profile image
Anthony Fung

Back when I was learning to program, we had a group-project in the second year of my course. All students were assigned into groups of 5-6 people and we had to build something. Coincidentally, a new student was assigned to the same group I was in.

I remember thinking he had amazing programming skills. One day I spoke to him and asked how it was that he seemed to know everything about Java (the language we were taught in) - he must have had so much experience working in Java (or so I thought). As part of his reply, he told me that he'd let me in on a secret (and I paraphrase): the 'best' programmers aren't the ones who learn the entire language API by heart; it's the ones who know how to look up what they need.

I admit to not fully understanding what he meant at the time. I think I do now though.

Collapse
 
verax5 profile image
Sami supreme

Unfortunately you HAVE to be a hammer to land a job! I guess once you become a seasoned developer you start caring less about the stack and more about the solution but until then you gotta be good with one hammer.

Collapse
 
raddevus profile image
raddevus

Yes, we definitely do have to be hammers so that we can be used by others to accomplish a purpose. We just can't lose sight of the fact that to grow we have to be something more than hammers too. 👍🏽

Collapse
 
alexandervoll profile image
Alexander Voll

Super motivating article for someone like me who comes from the design world and has been venturing out into web development. Sometimes it's super overwhelming (and honestly frustrating too), since there are SO many things i don't know yet. But as you said in your article, you learn as you go by building stuff you'd actually want and need. Couldn't agree more:)

Collapse
 
raddevus profile image
raddevus

Thanks for your encouraging comment. I really appreciate you taking the time to read my article and comment. You are on the right path learning as you go. Keep on going and you'll make it to your goal. We just keep on stacking on the skills and soon enough we can build pretty much anything. 👍🏽😊

Collapse
 
miketalbot profile image
Mike Talbot ⭐

Could not agree with this more.

Collapse
 
raddevus profile image
raddevus

Thanks for reading my article and commenting. I appreciate the encouragement.

Collapse
 
catsarebetter profile image
Hide Shidara

Tools used to make a ton of money. I think now, that's not the case.

It's what you're saying, engineers learning product, marketing is going to be the next wave simply because... that's where the money is.

Collapse
 
raddevus profile image
raddevus

Thanks for reading my article and commenting. You make a really great point.
You're right, Devs have to know more than ever and definitely need to know how the software they develop makes the business they're working in stronger.

Collapse
 
joselatines profile image
Jose Latines

This is a very great content!

Collapse
 
maafaishal profile image
Muhammad A Faishal

It's great. Creating our own app based on our experiences is important. Eventually, what others can see is our apps.

Collapse
 
raddevus profile image
raddevus

Thanks for reading my article and commenting. I really appreciate you taking your time.

Collapse
 
charlescampbell5 profile image
Charles Campbell

I love this article. It's so incredibly important to understand the bigger picture and to become a solutions provider instead of just an expert at one particular programming language or tool.

Collapse
 
bunnahabhain profile image
David Lewis

It is a sign of maturity to understand that building something is the goal. Not just becoming a master of the tools.

Great article!

Collapse
 
raddevus profile image
raddevus

Thanks so much for taking the time to read my article and comment. I really appreciate it.