
Do you Cut Code or Cut and Paste Code?
Code Cutting 101
Context: So I’m going to start off by telling you my age which will probably mean at least half the readers of this will probably switch off, I’m 41 - yes, next birthday I will have reached the age whereby I should have the answers to “life, the universe and everything” (again with the showing my age but hopefully in a geeky enough manner).
Why is my age important you ask? It’s not really, not on it’s own, but together with another number I think it’s significant, the other number is 30. That will be the number of those 42 years that I’ve been alive that I’ve been writing code.

I wrote my first program in 1984, when I wasn’t playing Elite on a BBC Model ‘B’ 32k microcomputer (you can see one of these in the Science Museum in London now). And to put the year into context for those reading that hadn’t been born then, check this out, but most notably:
Apple Computer place the Macintosh personal computer on sale in the United States.
IBM’s AT computer is introduced.
Virgin Atlantic Airways makes its inaugural flight.
IBM PC Division (PCD) introduces its first portable computer, the IBM Portable weighing in at 30 pounds.
The first desktop laser printer the HP LaserJet is introduced in May 1984.
Mark Zuckerberg is born May 14, 1984.
The game Tetris is first released in the USSR June 6, 1984.
Bill Gates is featured on the cover of TIME magazine.
The 3.5-inch floppy diskette is introduced and later becomes an industry standard.
Microsoft introduces MS-DOS 3.0 for the IBM PC AT and MS-DOS 3.1 for networks.
The term cyberspace is first used and coined by William Gibson in his book Neuromancer.
As you can see it was a huge year for technoglogy and not least because it saw the beginnings of my own journey. My first program may be familiar to many of you and it was copied verbatim from the user guide as I started to learn to code:
10 CLS
20 PRINT “HELLO WORLD”
30 GOTO 20
40 END
I quickly moved on to typing in 000's of lines of code from gaming magazines and getting incredibly frustrated at not being able to find out where my typing mistakes were or if the code had bugs in, and all of this with still only a trusty C90 tape for storage, things didn’t happen quickly!
My journey continued through high school and culminated with a computerised driving test complete with road sign recognition, multiple choice questions straight from the highway code and the highlight, a reaction time test which would convert how long it took you to hit the space bar into car stopping distances.Oh yes.

I loved writing code, I came from a family of builders who made things -proper things. My Dad designed houses that he and my brother would build for people to live in, their skill and creativity clearly visible for all to see, but I never had the flair with my hands. I wanted to be able to draw and in my head I could see what I wanted to commit to paper but it never came out as anything that resembled what I’d envisioned. I tried to make things, but the practical application of sawing, drilling, filing, painting etc always resulted in a mess. But two things had happened to me, I had been given a camera and a computer, with these I suddenly could explore my “artistic eye” and I could make things, not physical things but digital things, and I had also decided I wanted to be a computer programmer.[sad]
Through the years I’ve seen many many changes and a lot that has stayed the same. Progamming/coding is a challenging vocation not least because of the ever changing hardware (think BBC 32k computer, through mainframes, mini’s, desktop pc’s, networked machines, client/server, web applications to mobile and onto wearable devices), but also the languages used to control these devices have changed too. I’ve had to re-learn syntax and language constructs many times, from BASIC, COBAL, PASCAL, C, C++, Smalltalk, SqlWindows,VB, JAVA, JSP, HTML, CSS, Javascript, PHP and now PYTHON and Objective C. Throw in some databases and some frameworks along the way and you can quickly see that I’ve had to learn my trade again every two years. Not many careers require this.
However, this has been made much easier because of two things:
- Advanced Programing Techniques and Structures — a module on my MSc course at the Univeristy of Northumbria
- Other peoples effort
The first was a great course which taught us about coding structures, linked-lists, queues, stacks etc. which may mean nothing to any of you but taught us about the techniques without considering the language. A brilliant grounding, like being taught how to build a house by understanding foundations, walls, roofs, and so on, before being taught about bricks, stone, concrete and wood.
The second was that no matter when I started working with a particular language someone else had already been there before me and because of that there were libraries of off the shelf functions that solved common problems so that you didn’t have to. Again, like building a house without making your own bricks. Of course back then we didn’t have the access to the internet that we do today, so yes, we’d pour over books (yes books!) to find the x-open api library function we wanted to make some graphic appear, or to convert a date and so on.
Fast forward to now, where most of us do our coding is many times removed from the underlying device and rightly so, we have frameworks that bundle a multitude of functions and classes together to allow us to build the applications required today, and if we get stuck we have Stack Overflow and access to not just one “cardboard programmer” (a phrase we used for when you got stuck and needed someone else to stand behind you to make it work. You’d just talk through your problem with someone else who may or may not understand what you were saying and miraculously solve the problem) but hundreds of thousands. People eager to impart their deeper knowledge to solve other peoples problems. Can’t integrate a library into your jQuery front end website to upload images to your Django web services layer using that cool library? No worries, put your code up on SO and wait patiently for the ‘community’ to come to your aid.
Don’t get me wrong, this is brilliant, this is time saving which is money saving, it reduces the duplication of effort, stops timescale slipping, reduces the stress of delivering projects and is an all round great thing. But my concern is that like many great things it can be misused. I’ve witnessed todays new coders coming from University without true underlying knowledge and with access to the internet and forums like SO together with the vast array of libraries available, they are able to build applications, websites, web apps, mobile apps, etc. and all without having the faintest idea how they did it. Their skill is in finding someone who has already done it or who can solve their problem for them, not in writing code. I’m not against the use of libraries and communities but I am against the blindly downloading and including files into your project or the cutting and pasting of a solution from a forum that you don’t understand. By all means source a library that helps to make your code extensible and standard so that it can be more easily maintained by either you or whoever follows, by all means benefit from the experience of others, but only if it helps you learn and not instead of.
Email me when I. M. H. O. publishes stories
