|
Sorry, but I never knew someone had all the time in the world to write an article on a phallus, embellished with pseudo-theology .
|
|
|
|
|
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
Cheers
Diego
Diego Sendra
CEO
Diego Sendra
software development
Montevideo, Uruguay
e-mail: contact@diegosendra.com
http://www.diegosendra.com
Yahoo: diegosendra1976
Skype: dsendra1976
|
|
|
|
|
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.
|
|
|
|
|
"Think about those moments when your mind gives you an Oscar for finding that 'WOW' solution."
LOL, that is funny.
My subconscious mind hands me a Razzie every morning. razzies.com
Q. Hey man! have you sorted out the finite soup machine?
A. Why yes, it's celery or tomato.
|
|
|
|
|
Quote: My subconscious mind hands me a Razzie every morning.
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.
|
|
|
|
|
What's an office?
My reference to being handed a razzie, was a jokey/roundabout way of saying. "I need to keep my feet on the ground." => I am mortal. I make mistakes. I don't care what anyone thinks of me.
Rather than becoming delusional about my status in the world. Ultimately it's all irrelevant when you're dead and gone.
My motivation? I do what I do because I enjoy it. It doesn't matter if I'm not the world's greatest programmer. I don't care.
If you don't enjoy something, get out of it. Find something else to do.
Q. Hey man! have you sorted out the finite soup machine?
A. Why yes, it's celery or tomato.
|
|
|
|
|
Quote: My motivation? I do what I do because I enjoy it. It doesn't matter if I'm not the world's greatest programmer. I don't care.
LIKE: :
|
|
|
|
|
dusty_dex: 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.
Happy Programming
|
|
|
|
|
Actually its the most simple thing in the world, you just have to take the first step and do it. Wanting something different, that is also interesting and provides more of a challenge is not the same thing as just wanting a change...
Rhys
"If you ever start taking things too seriously, just remember that we are talking monkeys on an organic spaceship flying through the Universe"
|
|
|
|
|
Grasshopper.iics wrote: 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.
Indeed, coding requires working from monday to monday. If you really want to be productive working for your own, you have to do this, no matter if you code everything yourself from your room or have a small team that you have to manage or do both things. It's 14/hours a day, 365 days
I understand your point, the satisfaction after deep-thinking and resolving, specially, after doing things based exclusivey on your own standards, the feeling of a perfectly made code. Yes, I know all that. I appreciate your kind words and respect. Truly. However, it doesn't change my point of view on the 7 subjects discussed, programming is simply too much time-consuming. I came to point where I have to deal with those 7 issues daily and accept that I came to a point where I say to myself everyday that programming sucks. I have some days that I spend on the keyboard, reading news, checking email, reading news again, having notes about all that I have to do and basically 'should do' throughout the day. And the day finishes and I've made luckly 20% of what I should do. For example today. I admit it, I am totally burnt-out
Add to it the internal work, marketing work, the many hats you mention we all have to wear. It's too much. I am tired of exchanging hats this way often
Diego Sendra
CEO
Diego Sendra
software development
Montevideo, Uruguay
e-mail: contact@diegosendra.com
http://www.diegosendra.com
Yahoo: diegosendra1976
Skype: dsendra1976
modified 13-Mar-13 0:23am.
|
|
|
|
|
diegosendra wrote: Indeed, coding requires working from monday to monday. If you really want to be
productive working for your own, you have to do this, no matter if you code
everything yourself from your room or have a small team that you have to manage
or do both things. It's 14/hours a day, 365 days
I very much agree with your original post, but this statement I must disagree with. You owe it to yourself, and your family, to work sensible hours and spend time with them. If you can't make enough money to live on (and prosper) working a 40 hour week, then it's time to give up having your own business and work for someone else.
Are you going to lie on your death bed wishing you'd worked more, or spent more time with your family?
Also, remember the 80/20 rule. 80% of your income probably comes from 20% of your customers, so cultivate those relationships that produce the goods.
Lastly, learn how to say "NO". It's certainly one of the hardest things I have learned how to do in my business life, and it still is difficult to say, but sometimes, it's simply not worth your time to go and do some of the work, particularly if there are other companies who specialise in that kind of thing - for me, it's PC break/fix stuff. There are a multitude of companies around here who do only that, and they come to you... mostly stocked by young, eager nerds. Why would I want to take on that kind of work (when I am a software developer)? Yet people will phone up because my business is in their local area and want me to do it. I say no.
|
|
|
|
|
In some point, two or three years ago, I discovered that coding as primary job is a dead end.
Then I switched to project management and scrum mastering.
Benefits:
1. Still working in "application development" and having contact with new technologies
2. Finally having time to code for fun (when and what I want!)
If you're sick of it - think about something else to do. It will not pass or get better.
|
|
|
|
|
cmd.Parameters.Add("@SomeID", SqlDbType.Int)
cmd.Parameters("@SomeID").Value = Session("SomeID").ToString()
It appears this developer didn't have a strong conception of data types, knowledge of AddWithValue, or knowledge that the "@" is optional when specifying parameters.
|
|
|
|
|
AspDotNetDev wrote: SqlDbType.Int
Soooo many practitioners think that's necessary.
AspDotNetDev wrote: AddWithValue
I never use that; it's not defined by an Interface I use. I use IDbCommand.CreateParameter and IDataParameterCollection.Add.
AspDotNetDev wrote: is optional
That may be true with the database system you use; it may not be true with all the database systems I use.
|
|
|
|
|
I also prefer to see it, even if optional because it makes it more obvious that it is a required parameter.
If you get an email telling you that you can catch Swine Flu from tinned pork then just delete it. It's Spam.
|
|
|
|
|
PIEBALDconsult wrote: Soooo many practitioners think that's necessary
I find nothing wrong with specifying that. The thing I find funny is the specification that it's an int, and then on the next line passing in a string, which was actually an int to start with (rather than casting to an int).
PIEBALDconsult wrote: I never use that
The first thing I did was convert it to LINQ. Now the call looks a bit like context.SomeStoredProcedure(someInt) . In my next project, that's basically still how I'll do it, only I'll be abstracting away the data source and using Ninject, so where it's actually used it'll look more like dataStore.DoSomething(someInt) .
PIEBALDconsult wrote: That may be true with the database system you use; it may not be true with all the database systems I use
I can't seem to find any documentation regarding the "@" being optional, but much of my code has been written with this fact in mind. SqlClient.SqlCommand knows to automatically prefix "@" for parameter names. I did come across this (see "Working with Parameter Placeholders"), which indicates the parameter naming varies per client. I wonder, then, if removing the prefix and letting the query composer do the prefixing is the best way for the code to be cross-client compatible.
|
|
|
|
|
AspDotNetDev wrote: I can't seem to find any documentation regarding the "@" being optional, but
much of my code has been written with this fact in mind. SqlClient.SqlCommand
knows to automatically prefix "@" for parameter names. I did come across this (see
"Working with Parameter Placeholders"), which indicates the parameter naming
varies per client. I wonder, then, if removing the prefix and letting the query
composer do the prefixing is the best way for the code to be cross-client
compatible.
That's an interesting point.
"If you think it's expensive to hire a professional to do the job, wait until you hire an amateur." Red Adair.
nils illegitimus carborundum
me, me, me
|
|
|
|
|
I don't think there's a real way to achieve portability on that, it strongly depends on the connector used. ODBC for example uses a positional syntax for parameters, ignores parameter names and uses the '?' char as a parameter placeholder. MS-Access, same thing. The MySQL provider IIRC can be configured both ways, but by default requires the '@' char (or maybe the reverse, it has been a few years since I last used it).
Luca
The Price of Freedom is Eternal Vigilance. -- Wing Commander IV
En Það Besta Sem Guð Hefur Skapað, Er Nýr Dagur.
(But the best thing God has created, is a New Day.)
-- Sigur Ròs - Viðrar vel til loftárása
|
|
|
|
|
AddWithValue is the best thing since sliced bread (except for bacon)... Makes everything a hell of a lot easier.
Why can't I be applicable like John? - Me, April 2011 ----- Beidh ceol, caint agus craic againn - Seán Bán Breathnach ----- Da mihi sis crustum Etruscum cum omnibus in eo! ----- Just because a thing is new don’t mean that it’s better - Will Rogers, September 4, 1932
|
|
|
|
|
I quit using AddWithValue when I discovered it eliminated the query optimizer's ability to generate efficient queries. With Stored Procedures it's probably ok, but if the query is embedded in your code it's a performance killer.
|
|
|
|
|
Easier isn't always better.
|
|
|
|
|
AddWithValue can cause problems where conversions may not be as expected: better to use Add and be explicit about what you are doing. And what harm the @? Just because something is optional doesn't mean you shouldn't use it - verbosity is king - it promotes clarity.
"If you think it's expensive to hire a professional to do the job, wait until you hire an amateur." Red Adair.
nils illegitimus carborundum
me, me, me
|
|
|
|
|
Notice anything else about why the code is strange?
|
|
|
|
|
Yes indeed, but I didn't think that was your point.
"If you think it's expensive to hire a professional to do the job, wait until you hire an amateur." Red Adair.
nils illegitimus carborundum
me, me, me
|
|
|
|
|
My only point is to make fun of as many things as is possible in that code snippet. However, the only real thing wrong with it is converting an integer to a string and then using that string as the value of a parameter that was just explicitly specified to be an integer.
|
|
|
|
|