Be liberal in what you accept,
and conservative in what you send.
Jon Postel
17/02/2009
First Law of Internet Communications
09/02/2009
coding- what’s that?
I’ve been coding for a while… scared to say it- a decade!
It’s not I’m too old, I just started early
Anyway 20 years is a lot of time, especially in programming. Everything changes so fast, new technologies are coming, programming languages are born and the code quality concepts are totally different from what they were. I’m trying to find my place in all this- everything I’ve bee taught about the real values in coding seems to be not important now and some bad practices I’ve studied are cutting edge programing- am I an ancient thinking freak that needs to change his attitude to survive, or the current situation is just “a fashion” that will pass away. Lets try to find out…
I’m starting with some background…
I had the unique chance grow up with the PC. We’re on the same age and as it was changing, I was evolving as a programmer too- we’re like old friends.
The first PC I’ve coded on/and played games of course/ was Bulgarian analog of Apple II with 48kB of RAM and 255 KB of storage/on a 5.25″ FDD/.
It has built-in BASIC compiler and a possibility to make vector graphics! I was having fun composing music /by adjusting the frequency and duration of the bell/ or drawing figures on the screen- was amazing!.
Then in the high school I was coding in PASCAL - we had fun with off-school meetings and participating in programing tournaments, but we were actually getting valuable knowledge of the coding and programming algorithms. We’re talking about Binary Trees, Linked Queues, Graphs, etc… I was helping the school teacher during my vacation to set-up the school network or clean-up viruses. At that time my old folk was also growing up. It was in average 80286 with 256KB RAM and 10MB HDD. For some time I was supporting the computers in my mother’s company and once I had the unique experience to see an ancient Mainframe system /IBM System 360/ in action. In the early 90’s I would not be surprised it to be the last working mainframe of this type in the world. It was so great that deserves another post. Just for the records my supporting career suddenly ended when my macro “a virus” slipped away from the testing environment and infected all documents in the company… /the name comes from the fact that it replaces all “e”, “i” and “o” characters in a word document with “a”, so you end up a beautiful document with strangely large number of “a”s and nothing wrong until you try to read something… As you can suppose no automatic recovery possible- it does the replace on save :)/
Then came the Internet, BBS connection /later super fast modems/, Navigator 2.0, newsgroups, IRC channels, underground online magazines… Meantime I had my own $1200 costing 486DX5-133 with SVGA display! I was making a 3D animations with 3D Max 1.0 on it. This was amazing period in my life but “the net” put the coding “on hold”…
Until I went to the University. There a reached a whole new level in my programming career. I was using all my knowledge and upgrading it theoretically. I was lucky to learn from great people. If I could says I grow together with the PC- they grew with the computers in general. Many of them started coding in 60’s and in 80’s they develop a software for the Russian space station “MIR” or software that guided “cold war” nuclear missiles. Fighting with the bugs in nowadays software/windows crashed while I was writing this/ I remember one story- actually a true one. Bulgarian engineers had developed a module for examining the effect of space environment on the human body called/Плевен-87/. The system software for it had to be carried in 3 disks. Unfortunately one of them was not taken to the space… and still they were able to conduct 83% of the planned tests! So imagine- you remove 1/3 of the installation files of Windows and it is not only operational but almost all features are there! It’s just unbelievable what they have done!
From them I understood the difference between a program and a WORKING program. I got the background for planning, coding and deploying a software system. Meantime I was coding the term’s assignments of my class-mates for fun/sometimes for money/. Apart for exercise this was a real-life lesson for working under pressure with strict deadlines. Since it was Assembler, C, C++ the code planning, structure, consistency, speed, resources, reusement rate, etc. were utterly important and they all have to be done manually- there was no language or compiler aids you can rely on. In the night at the campus we were stretching to its limit the Ethernet network architecture. Completely by ourselves we have designed, made the infrastructure and maintained a network of more than 150 PCs and of course with the least possible investments. The community was everything- we shared resources, thoughts, projects, played games and all this to happen we actually invented the moral principles and personal responsibility for being part of a group. A group that worth more that just a sum of all individuals in it. The feeling was so great- same as the early years of Internet, but far more real- because its all done by you. I remember when I go out- I always leave a key from my room to a neighbor- because the router is here and if it stops you block the access to others- a thing far more important than someone may steal something from the room while you’re away…
I almost forgot my teenage partner- the PC. At that time Pentium rules. Either PII under NT or PIII on 2K there was no match for it.
After the University I started by professional career as a programmer. I’ve gone thought almost everything: software for embedded devices /.Net CF/, desktop applications / .Net C#, Java/, web applications /HTML, CSS, JavaScript, VB Script, ASP, ASP .Net, PHP/, planning, design, deployment and maintenance of different softwares - from small websites to mid-size ERP systems. Here I faced the other side of the coin. The most important thing was how easy-to-maintain and modify the code is, what is the cost of development, the cost of maintenance. I have to make tough decisions about the quality vs budget, features vs development time… The expectations of my work changed, so was my attitude toward coding. Nevertheless I really believe that the real values in programming are intransitive- they are not affected by technology or platform or fashion…
Unfortunately this introduction became much larger than I originally planed, so I will continue in the next post.
take care,
peter