If you've ever read (or tried to read) Bob Martin's "Clean Code" book, then you will realise that there's a lot more to writing good code than using the IDE's built-in syntax checker - no matter what language you're writing software in. If you're using vi or emacs, then you're on your own.
If you've never written software commercially - say, a recent graduate - you might not get the point at all.
If you've been writing software for a few years, you should get frustrated with the book, looking for that "secret" that will make you the master of your profession.
If you've been writing software for a long time, you flip through nodding your head & say to yourself "sounds about right - what's the big deal?"
That perspective on the book equates to the attitude of those different stages in a career to what should be the core of a software developer's skillset.
It might have many names - call it artistry or craftsmanship, or just experience.
The most important part of it is that you don't acquire it from a book - Bob's book tries to capture it in the same way that an artist captures a scene or a good software developer captures a requirement. Bob's book is not a how-to for the uninitiated, but a biography of an artist.
He's as much a good author as he is a good software developer.
That book - & there are very few like it - has lost popularity because it was written by a master technician for other masters. Any apprentice should have the background to understand what is being said, but doesn't have the experience to understand why it needs to be said, or what to do with the knowledge.
In a way, that's a sad thing to say about our industry.
I've used terms there (apprentice, master) that make perfect sense in a trade context, but no longer make sense even in an artistic context, let alone a software development profession.
We still have tradesmen working in some companies who are masters - they oversee apprentices, they have done their time in several establishments honing their craft, & are now considered at their peak & responsible for their deliverables.
We have lost that concept of the professional artist as an equivalent set of stages - the master sculptor with his journeyman assistants, surrounded by apprentices doing the preparation work, cleaning up & looking after tools.
We have too quickly lost the concept in software development.
I have a vague recollection of graduates being mentored by senior devs, working closely with mid-level devs to learn the skills & techniques. Pair programming was good for this.
Those masters of software development who came up with the agile methodologies have been cast aside in favour of doing things quickly or cheaply, with no time to spend on training apprentices.
The focus has been on tools that could be learnt without supervision & on the fly.
If, as an industry, we fail to train apprentices, continually employing only experienced developers, then at some point we must realise that those developers were never apprentices.
They never learned anything at the direction of a master, or under the eye of a journeyman.
No matter how many years of experience they have accumulated, or books read, or courses attended, if a developer has never worked in a team where their work is constantly under review, or they have never contributed to the review of their peers, then they are effectively self-taught.
As creative & talented as some artists are, unless someone teaches them how to use their tools - brush-stroke technique, sharpening a chisel, mixing glazes - what they create will always lack the fundamentals, the professionalism, that we should expect.
We, as an industry, need to hold our expectations for professionals up high, as a light by which we see the true artistry or craftsmanship of those who would be, or claim to be, masters of software development.
Subscribe to:
Post Comments (Atom)

No comments:
Post a Comment