What I hate about programming
Programming come across to many as a profession which is boring and geeky. You would be deemed a ‘no-lifer’, as you do nothing in front of the computer for long hours except programming. In contrast to the general consensus on programming, I think it is a very challenging profession.
It requires more than just typing skills. You are not considered a programming guru just because you scored an ‘A’ grade by ripping a project done by a fellow classmate during your Polytechnic days. Strong logic, planning and a good analytical mind are a definite must.
Despite having a passion for programming, I believe I speak for the vast majority of programmers when I say that we share a love hate relationship with it. The grueling process of coding ultimately leads to a tremendous sense of achievement when we are able to obtain our objective. In rare occasions where we meet a stuck in a mud problem, a simple trip to the toilet or a good few hours of rest would get our minds moving into the right direction. Of course this only occurs if you have no problem grasping programming as a whole.
Language advancements
However regardless of which programming language you are dealing with, be it one of a server, browser or database, there is always going to be advancements. For e.g. functions being deprecated in favor of new ones which would utilize memory more efficiently. In short, we would have to find an alternative to the deprecated functions to obtain our objective.
My current theme; Minimoo is heavily enhanced by the MooTools Javascript framework. Despite knowing MooTools 1.2 would be in full swing in a very short period of time, I still stuck to coding with version 1.1 for stability. Less than 2 weeks after completing my theme, MooTools 1.2 was thrown in and I had to replace the deprecated functions with new ones as well as take another approach as there was a substantial difference between the 2 versions in the way they were constructed.
In cases whereby we have been so used to a particular version’s syntax and approach, we are totally lost when we are being smacked with something totally new. Such was the case in version 1.2, it took me a long time to come to terms with the differences between the two versions and eventually I managed to make use of the latest version to get it to do what the previous version managed.
Looking back, it was time needlessly wasted but in one way or another, it not only benefited the end users but the programmers as well.
As a programmer, what do you hate about programming?
As a programmer, I think building projects from scratch is about the easiest thing to do. We are in “full control” of the development, and we’d know what kinda problems we’d face inside-out.
But what I REALLY REALLY hate the most is when I have to “build” over existing code or design patterns that really doesn’t make sense. This especially so when the previous programmer is some weird guy that mugged day and night over it, and coded very “human-unfriendly” codes. Stuff are declared all over the place, and its hard to trace a single error when things don’t work out.
And of course, needless to say, trying to build something over it would be a TOTAL nightmare.
My advice to all programmers, keep it simple. Scaleability is VERY important, and never code something in such a way that its difficult to scale.
Don’t hate programming, there’s nothing wrong with it.
It’s the morons you have to work with that makes you hate it.
The profession is too maligned, no thanks to fuck ups by incompetent people.
Agree with Shotgun. It’s so much easier when you write it on your own. Some programmers just aren’t following naming conventions and they also don’t document their codes.
ShadowFox: I don’t hate programming, in fact I love it. It is just that something I hate about it.
S.Kiat: each language varies in their naming conventions. For e.g. it is different with Java and PHP that sometimes even I get confused but I tend to follow Java’s convention. The all so familiar first character as a lower case and the subsequent term as an upper case character.
Poor requirements gathering really chaps my hide. Another poison is poorly tested code that is almost completely unstable, yet the idiots WILL STILL CHECK IT INTO VERSION CONTROL AS IF NOTHING IS WRONG! Unbelievable! I’ve seen it and I really wish I hadn’t. *Sigh*
The weekend warrior and/or business guy that bought a book on Access/php/html and now is a guru. They produce applications that scare me. The worst part is that most business rely on these applications.
What I hate most about my profession is trying to implement bullshit requirements from some marketing tool who has no concept of a business plan, and often contradicts the actual business practices of the people in his/her organization.
I also hate unrealistic timelines that are imposed by same said marketing bucketheads because of some perceived, but totally unproven, benefit to the business. Often when we squeeze out the project “on time”, it a) doesn’t satisfy the stakeholders, even though it does everything they wanted it to do, b) doesn’t add any real value to the company, and c) becomes a nightmare to maintain because, of course, the development team all took shortcuts and didn’t document them in the code.
There’s no such thing as building from scratch anymore. Every project is built upon complex libraries and frameworks.
I love writing code, but I hate struggling to get results from libraries and frameworks I barely understand. And there are so many of them these days that I simply cannot master ever tool I need to use.
Right now I am trying to use a new open-source web framework, which is difficult enough. But to use the framework in the most efficient manner I also had to become acquainted with Maven, Jetty, and Eclipse (I had been using a different IDE). And installing Maven forced me to extend my weak understanding of Windows configuration. Then, I had to deal with failures deploying to Tomcat until I tried upgrading that.
I like dealing with problems I can figure out by observation and reasoning. What I don’t like is struggling to discover which part of my ignorance of third-party tools I need to remedy.
I hate the inertia created by having programming languages stick around so long when researchers continually discover new, useful methods of language design. For example, only recently has the mainstream gotten into functional programming and metaprogramming(through a combination of Web-friendly languages and extensions like C++ templates), but these things have been possible at least since the first Lisps.
Similarly, the Hindley-Milner type system - that has been known in languages like Standard ML since the late 70s - is far preferable to the weak types used in C/C++/Java, and yet the mainstream lives largely in ignorance of this. The static/dynamic language debate is almost entirely fixated around a Java-like static type system.
While considerable hype has arisen around Haskell and ML as worthy production languages, they have been around quite some time now. Languages of this decade like Factor and Io, on the other hand, are almost unknown.
ton: Now that would be a poor developer practice. It takes more than a few hours to actually ensure that your code is working fine. For me, I would get other people to test it as well, I just don’t trust myself in making sure that it is 100% working.
ncloud: At times these marketing people only think of the end result and not the process. Thankfully for me, whenever the marketing personnel wanted anything done, they would consult us developers for our opinion and whether or not what they wanted was feasible.
fsilber: With respect to javascript frameworks, there is a ton out there. Usually I would just pick one and master it, for e.g. Mootools. I am far from mastering it but I am still learning and you would be surprised as to how much you learn each day.
James H.: I doubt I was around that back. Thanks for showing me the light.
What I hate about programming is reading articles asking what I hate about programming.
Programming is definitely more than typing.
It’s compilers, memory allocation, threading, race conditions, algorithms, and so many other things. It requires to some degrees, familiarity with ICs, MCs, processors, and knowledge of how software integrates with the hardware it runs on. On another level, it requires good math and logic skills in order to push out algorithms that use the available resources as efficiently as possible.
It also uses a lot of creativity in order to surmount technical challenges or try completely new or unorthodox approaches.
I think it’s a wonderful field of study, just often misunderstood.
To laypersons, its hard to understand what exactly a programmer does. Most people I explain it to just end up rolling their eyes. The most simple explanation I can give them is that I make computers and machines do things.
Make computers and machines do things
That is the most delightful definition of programming I have come across so far.