The Weird and The Wonderful

The Weird and The Wonderful forum is a place to post Coding Horrors,
Worst Practices, and the occasional flash of brilliance.

We all come across code that simply boggles the mind. Lazy kludges, embarrassing mistakes, horrid
workarounds and developers just not quite getting it. And then somedays we come across - or write -
the truly sublime.

Post your Best, your worst, and your most interesting. But please - no
programming questions . This forum is purely for amusement and discussions on code snippets. All
actual programming questions will be removed.

IMO every symbol is automatically a bit more than a symbol - because it symbolizes something (a warning, an opinion or beliefs). Although I do not really think that it could be a highly efficient weapon...

Hi, I am coding since 20 years now. I started in Pascal, Assembler. And yes, I am getting tired and sick of this job. I couldn't be even working in coding anymore if it wouldn't because I am freelancing since 2004. Even freelancing and doing things your own way you GET SICK of coding as well. Sorry

I will point out my reasons:

1. "Having to change things that always worked", just because third-parties, technological changes, or simply 'the world outside' your program force you to change what was always working. i.e. you develop a scraper/crawler and the target site changes their html/css, thus, your scraper doesn't work anymore. i.e. - You develop financing software that work against SQL Server, then customer/boss decides to migrate database server to Linux, then you have to change most of your SQL code on 10k lines program to 'just adapt' to mySQL syntax. It's not the same syntax in some cases. Or you develop that program in .net and your customer/boss decides to go Linux, then you have to re-write it in C. These kind of things to "re-do" what was working 100% perfect and took you years doing it, well, it's far to be fun, no matter the money involved. What it tires is simply that "you HAVE to" modify what was working perfectly, for reasons besides you

2. "Time spent on analysis, diagramming, structuring". Coding is not like other jobs, you have to THINK how to code it before you code it, in the majority of cases. When the reality you are modelling is complex, well, you have an extra load to "think" first, then "act". And this can be specially tiresome, when you have to work on 10 different projects over a month just to get the bills paid. Specially when you have a customer/boss who's asking you useless things to do that really doesn't contribute to the quality of the software but to ruin your day adding extra, unnecessary complexities

3. "Money". I will be short on this, we all know that this job should be paid X 3 what's being paid considering the effort required. Specially freelancing online. Considering the complexity of this work, we are paid less than secretary work, most of the times. I have not anything against secretaries, but come on, you can't compare writing letters in Word and using Excel compared to what it takes to code even the smallest thing

4. "Inherent difficulty about this profession". In fact, what tires you the most relies on the difficult, unpractical thinking process required to come up with something that may run. When you reach a certain age, and when you have a certain amount of years doing what you do, you follow your own standards, and your standards are high. This means: spend more time doing what you did when you was a kid, when you worked more in a "bohemian" way, just for the fun of it. You stick to your own standards, clarity in code, naming conventions, in a way: you become professional, compared to how you did it when you were 16yr old teenager. i.e. you can easily assign var1, var2, and a, b, c as variable names when you are a kid, without caring if you ever have to modify the program after 1 year. Now, there are times when you have to even spend time thinking how to name a variable, properly declare types, how to name files as a whole, folder/subfolder structures, and so on and on and on. And these are just the basics, the same go to the way you name your functions, the perfect nesting of code. Things that themselves go besides if the program works or not, it's all about standards. You become a professional at what you become after doing it for 20 years. Thus, you can't name a variable as a, b or c anymore.

5. "Perfection", you get obsessed when you are a programmer. 20 years doing it, you have nearly a compulsive obsession disorder of 20 years. Seriously, it's just not "doing it", it's just not enough. It's all about "doing it perfectly, consistent to the way you did it for the last project, respecting a way of doing things, your own way". It's simply impossible when you reach a certain level on this career doing the same thing differently between two programs. As long as it's the same thing you will tend to use one or the other as a code template, and just expand it the minimum possible to avoid breaking away from that code template, a code template you had to think in the first place. And there's the problem that "that code template" just doesn't adjust exactly to what you have to do on the 2nd. project, so you get like a feeling of coldness running through your spine. True story. After 20 years, you need to be consistent, it's more important being consistent and perfect on what you do than the program itself. Talk about "code re-usability obsession" disorder, if it exists

6. "Tired of being the genius kid". Well, this is nice when you are 16 and everybody looks at you like the genius you are. When you are nearly 40 you want to do your thing, get the paypal payment and watch a movie with your kids or wife, have sex, drink whisky or simply listen Megadeth at 9/10 volume. You get tired of carrying the heavy burden of being "the genius kid" that everybody throws the worst sh*t possible on earth because you will be able to deal with it. You simply want to get a cool life as everybody else, because before being a programmer you a are a human being and you don't want to be constantly thinking, worrying and thinking and worrying and thinking and worrying, when you eat, when you get your bath, when you put the dog to pee, when you are in the bus, when you are in the bed. I lost count how many times I wake up on the morning and stay 1 hour without being able to step up, simply because I am worried thinking on al algorithm or whatever other coding-related sh*t that kept unresolved from the previous day

7. Finally, the always "need to adapt to a technology that you don't want to adapt". I mean, think of DOS days. Think of Cobol, Fortran; old dudes that spent learning that, plus Pascal, C, Clipper, from 1980 to 1995 to one day JUST throw it all in the WC because Microsoft came out saying that DOS was dead and Windows was there to stay, which meant: "Hey dude, you better start learning VB, Foxpro, VC++, Event-driven programming, Access and SQL Server databases and so on or you are out of the game ". That was a big change. And it happened to me, I was a Pascal, C, 8088 Assembler expert. Now where would I be nowadays coding in all that? The same happened in 2000 with .net. Then Javascript came out, then AJAX.. Now there's all about tablets and "responsive" designs for web. Now we also have the touchscreen madness and all events related to that. It's enough for me. World needs to understand that we don't have to re-learn our career every year just because the childish market "changes" to what the childish market thinks it's better for the market. This is, I think, mainly the main reason of all 7 reasons. You get sick of this profession if you have to re-learn everything one year after another, it's like you always feel a hole, a hole that never gets filled. The only solution to this is working for your own, and EVEN doing so, you are forced to re-learn some things. i.e. think of Table-based web design compared to CSS-table-less design. That was another big change that nobody asked us if we wanted to move through, in the first place. Think of CMS-website design world too, WP, Joomla. Now, some of these called standards are terrible to learn, buggy, wrong, and simply unpractical for the everyday use. Think of Javascript, I am sure you had a hard time more than a single time, trying to get some things to work, looked at the code and looked correct. But, wait, "you forgot that you typed a capital L instead of lowercase l" in your document.Location.href= line, thus, it wasn't working. How can you forget THAT dude!? Now, think if you have 3 pages of complex, event-driven Javascript code written running on your old Windows 98, IE 6 back in 2002 days, without Firefox, Firebug, Chrome and all what we have now to inspect and debug. Good luck trying to see where the error was

As a conclusion, these are the reasons why coding sucks, it's simply too much time-consuming. It has nothing to do with coding for yourself on big/interesting/rehearsal projects. It's all the same after all, then you get tied to keep making enhancements to that "program of yours" and new versions, and it becomes an endless loop. And nothing keeps you free you that one given day you will have to re-write your 5-years development project from scratch just because nobody will use Windows/Linux anymore, simply because a new SO came out, and the market forces you to move along

Diego, while reading yours post, I was thinking as if I wrote the whole post. My situation is almost similar to you. I have been coding for over a decade, running my firm. Development really needs longer hours and 12+ is common and consistent at our level. Less balanced life and frequent changes do hurt and the cost factor is always a worry.

But at the end of day, changes are bound to happen and we need to accept it. We definitely set our standards and ways of doing things after few years of coding and it does hurt when you have to change. But you see logical reasoning is something that is pretty constant. When you have a problem definition, you need to think and that is where you get an edge over the kids. You can build a model in your mind quicker than many. So you are in a better position at the beginning. Then it is all about knowing the use of libraries in the new technology and knowing which library would be suitable to your problem. Here also an experienced programmer can track the libraries faster than fresh guys.

Frequent changes are bad, but we have survived all these years for the changes. Imagine if the technology gets constant, more idiots learns the 'Method' of doing it and actual work is less. Why would someone pay for a 20 years experienced when the job can be done by a kid for some cool bucks?

We develop prototypes for many organizations in many fields. Frankly I do not complain. Company outsources a new technology or design to us to make first working model because they do not have that resources to do it. Once a model is ready, it is easier to understand that.

When a new technology comes along I see it as an opportunity as several thousands people working in existing technology takes time to switch. That is an advantage.

Fatigue is definitely a tiring factor. But think of those moments when you smiled after solving a complex problem. Think about those moments when your mind gives you an Oscar for finding that 'WOW' solution. These fun moments can never be bought by money. You can never buy a happiness of satisfaction. The feeling of doing something special is really more than monitory expectations. I tell you, if you someday happen to turn the table and get a Million dollar funding and just take your enterprise to new level, you will still be sad. You sure would have money then but would not have that fun factor of raw coding.

When I have such feelings , when I get depressed by thinking the monitory aspects and pressure of adaptation, I just say to myself. " I must be special to have worked with so many projects and technologies. I am talented!". I try to remember those fun moments of jumping and punching in air, those light moments after many days of night outs. I do glorify my smallest of achievement in my mind and then I realize I am better than several billion human beings who never know why they have born. Yes I am behind few thousand great entrepreneurs, but I am going there. This pushes me hard.

You are special because you have been there for two decades. To be a Hero to yourself is a precious gift. Trust me on that. Do not bother. Monkey will jump around, but then you need trees. You are that tree. People introduces new technologies because they know that there are few Diegos who will catch it off.

Different awards for Office Goers and Office Runners! Seriously we do need artificial motivations when we have to get the orders, design, lead the coding team, follow up for payment, bribe to get things pushed to government offices and get up to discover something we did few months back is no more working is pretty hard at times.

If you don't enjoy something, get out of it. Find something else to do.

I have read this more than thousand times now. But its 'easier said than done'. Life is not that easy. And on the surface many things seems interesting, but when task through real challenge, we try find something more interesting. Human behavior.