There's a pletora of principles, patterns, practises and heuristics that a craftsman should know in order to be defined a software engineer. But...
To become a good, trusted and admired programmer you need more than a bunch of engineering theories.
Typically, we measure one's greatness by its intelligence, gut knowledge, and years of practice. But, almost 20 years in software development, taught me that bad programmers are everywhere, despite their "expertise".
We have all worked on projects where WTFs/minute were insane.
Why there's so much shit around? Who's to blame? Project managers? Business owners? Customers always demanding more, asap and with fewer resources?
Coding requires hard work. But knowing the underlying mechanisms, building complex applications, and sweating over this job for years, does not guarantee code quality.
In fact, contrary to the popular belief, programming is a social activity. Why? Because we type words, all day long. Words that are then read and processed by other human beings.
And guess what... The human brain has evolved to deal with spoken language and words, through which we are able to communicate, organize and build some amazing things such as historical monuments, tall buildings and world-wide companies.
If we weren't able to understand words and communicate effectively, we wouldn't be at this stage of development. We would be still hanging off the trees, eating bananas.
So our goal is to be understood, even if our job is mostly done alone, in darkness (and despair).
I fuc***g hate to see misleading variable names, terribly organized directories, missing documentation and other hell related horrors.
Code should be written so others can understand it.
And we should take the proper amount of time to do it right, no matter the external pressure to clear up the backlog.
It's horrific and discouraging when the onboarding process into a new project requires days or months just because someone else didn't put the effort to write clean code.
Software developers proudly state their intelligence, their ability to understand complex ideas and algorithms. But they often lack wisdom, the capacity to identify and protect the identity of their code so others can enjoy it.
And this is the major problem with today's software industry.
Our value system focuses more on outward appearance than on the substance of what we deliver. We obsess about the schedule and deadlines. We never defend code quality.
Let me write it again...
It's only when your code can be immediately understood by others, that you can define yourself a good programmer.
Coding is a social skill, it's a communication act. It produces art that people will look at and be either fascinated or terrified from.
So, next time you open up your codebase, look for ways to make things clearer and better:
- improve readability
- refactor code
- avoid duplication
- make it efficient
- make it effective
- re-organize files and classes
- assign proper names
- avoid misinformation, misleading names, messy directories..
- ...
We are not monkeys. We are humans, we think in words and write code. Make it good, make it right.
Let's discuss in the comment section, what do you think?
Top comments (7)
Excellent article! Interesting point of view. I've never thought of seeing programming as a social activity. In fact, I considered programming as a very isolated field, except for the part where we have to explain code, share ideas for new features, etc. The act of writing code itself was considered as something isolated. However, your argument has made me re-thinking what I thought. Thank you. Do you have any book which expands this argument? Would be something interesting to read.
I love this. Working in code is always better with friends.
If coding is a social activity is open to debate. It depends why you code. If you work on open source software, you will most probably agree. If you work for a private company or freelance for a living, you may disagree. What is 100% sure is that your coding is a service to other people (intranet) or the public (internet).
They may not know your name and the code you've written. Even the language/framework you chose. What they will see and interact with is the outcome of your effort. In this context, all coding is indeed a social activity.
Dang!!! Can I elaborate on this content? If coding is a social activity then blogging is the same thing 😄
Being a tech is a social activity in general. We with the team during reviews, talking with anyone when we are blogging or asking help to anyone about something.
For me, being a good coder embed the sharing part. Being able to share to anyone what we found, what we learnt, talking about our issues, new tools... if we stay alone by our side, it's more difficult to discover new tools, new ways to code or just another point of view to improve our code.
Yeah that's true... Thanks for sharing
Some comments may only be visible to logged-in visitors. Sign in to view all comments.