The programming culture has problems — Robin Wils's website
Last modified: Wed, Jan 6, 2021
It is all in the details
People complain about the smallest things in programming. Ha, you don’t format your code like this and you don’t use the “cloud”. You must be a bad programmer.
Image from Episode 13, Season 13 of The Simpsons. It is probably public domain licensed, since it is one of those internet jokes - CC0 licensed.
All those small things add up. It becomes super annoying. People spread a lot of nonsense about programming.
The worst part is that there just is no one right way. People make that stuff up, but you never see any proof. It is something that probably annoys many people.
Yes, some things are a bit better as others, but there is no one true way. You are not superior when you use some new trendy technology. It is probably good to find the right tool for the job, but the best tool can be something else for someone else.
There is no such thing as the perfect programming language
People just should teach others how to use a language correctly. There are different styles and ideas in the programming culture because we are people. We like different things.
Facts matter. Some languages are indeed faster or easier for some jobs, but that does not mean that everyone likes the syntax of that language. Syntax can make a language more easy to use for some people, so it is something that could matter.
You might find a programming language the best language, but remember that it is not the best language for every purpose or everyone.
People just want to see a tool that works pretty fine in the end. You can develop it will a language which you enjoy. Think about the product which you want to make. It might even be great to think about you audience. You might want to pick another language as C# if you want to make a Free Software tool for example.
What are the programming languages which fit your goals? Compare them. It might be useful to include the difficulty to learn the language as a factor.
There are a few important factors to reach software quality:
- How good can the programmer(s) program (having a degree doesn’t necessarily mean that you are good at it. I mean that you actually have knowledge, experience and skill.);
- How much do(es) the programmer(s) know about the project (It is useful to know something about money if the tool in development is a money management tool or something);
- How good the programmers work in team (if there is a team).
- How good you are at design patterns. This also depends on what you program. It might be less needed for some things.
Things which bother me
Which methodology should you use?
A better question might be: Does the methodology really matter?
None of these methodologies tend to be proven. Many of these methodologies change after a few years. It all sounds like a bunch of nonsense. They might help a bit, but how essential are they?
Much great software has been developed without your “perfect” methodology. I am not saying that it is bad to follow one. It might help for some people, but it is not essential and it isn’t a strict thing. Some people follow some of these things to the details, which might waste more time instead of getting things done.
A small successful project can even be developed without any methodology. In fact, there is for example proof which shows that the popular Test Driven Development method isn’t always great.
Keep in mind that design patterns are something different. I think that most of those make sense and can make you a better programmer.
Examples of problems with methodologies
Article: Problems with TDD - dalke scientific
I know that the mentioned link is old, but it does contain some interesting text. Testing often helps, but I believe that TDD is not always needed. I agree that it does not cover every situation.
There are often some unexpected things which you probably want to have. Take for example a shopping website with coupons. People can try to add as many coupons, so that they get things free. This is probably something which you don’t want.
It is possible that you don’t reach a fix for that problem in TDD. Thinking like a user who tries to cause harm often helps to make your program more secure. This is not needed in TDD. This is why I think that TDD is not the only way.
Extra testing can help. Trying a bunch of things when your program is finished can help to discover a lot of small problems. TDD can help, but don’t trust methodologies completely. They are not perfect.
" The word “agile” has become sloganized; meaningless at best, jingoist at worst. We have large swaths of people doing “flaccid agile,” a half-hearted 7 attempt at following a few select software development practices, poorly. We have scads of vocal agile zealots—as per the definition that a zealot is one who redoubles their effort after they’ve forgotten their aim. "
" And worst of all, agile methods themselves have not been agile. Now there is an irony for you. "
— Andy Hunt, one of the founders of The Agile Manifesto
Full article: The Failure of Agile
I don’t even agree with his opinion. Following something strict can be great, but following it too strict can be a problem as well. It can cause fights over things which might not really matter.
It is good to have discussions, but try to use good reasons in a discussion.
New technology is not always better
For example a simple web page can ask for a lot of resources nowadays. Those resources can be used for tracking.
I am fine if it asks resources for some advanced functionality… but for SPYING? Are you serious? Spying?
Many companies still see spying as a good thing, since selling personal data makes them money. This looks unethical to me.
There are other ways.
You can, for example ask your users for feedback.
Buzzwords are everywhere. It isn’t really specific to the programming culture. The thing about buzzwords is that they are usually not needed.
A funny thing is that many smart people are great at explaining complex things in simple ways. They also seem to try to avoid buzzwords. The people who use it on purpose usually do it to look smarter as they are.
It might be likely that you don’t really understand the meaning of a word, if you use a buzzword.
We obviously need words to talk, but most buzzwords seem useless, since they don’t have a clear meaning. Use a different word or sentence instead if you can.
Try to use words which most people understand… Yeah, I get it buzzwords often help with marketing an idea or products, and we often use them without realizing it.
- GNU Emacs is Unix - Explanation of why Unix is an unclear word
People who spread that a programming job is fun
Programming as a hobby is fun, but I thought about doing it as a job for a moment and realized that it is not what it seems. Doing it as a job usually means that you can’t choose what you create.
This takes away a lot of my motivation or interest in the job. They can limit what you can learn. A company can say you must use this programming language. The project can be something that you aren’t interested in at all.
Here is a part of a Dual Core song. I don’t want to get in such a situation. They even mention that the song is made for all the programmers and developers in the song.
" I know I go and try but my life is broken, pulverized.
Work and more and more, there is less time to socialize.
And that’s just a gamble, so why try and roll the dice?
Either in the office or by myself at home, at night.
Plus I stopped believing, there is no reason keeping hope alive. "
– Dual Core (Unplug - Listen on YouTube)
It can be a fun job as well, but it depends on more than one factor. Dare to talk about the downsides when you say that it is a fun job. It can be fun for some people, but you have to like the full package.
I don’t have a problem with programming as a job, but doing it all day on a project which does not interest me, wouldn’t improve my life quality. I wouldn’t enjoy that.
My job ideas for the future
I find programming nice as a hobby or for own projects. I could try to become a programming teacher or try to learn other things which interest me.
Edit: Maybe I do want to do it as a job. Web development seems like a fun job. Application development, just seems to have too many business buzzwords which people tend to believe.
I don’t mind following something and would follow something, but I prefer to not follow something mindlessly. Maybe it are just the people that I worked with. I do want to help people. At the end of the day people just want something which works.
The people in the web world seem more open and seem to listen more. I just like to learn, which is hard when they force some business stuff.
Creative stuff interests me, as well
I like to have some freedom. I think that something more creative might be better for me. I should look into 3D-modelling and 2D-animations and stuff. Art like that can take a lot of time, but the important part is that you enjoy it. Programming is not a bad job.
Money is nice, but happiness is important as well. Your time is limited. I recommend that you try to use it in a smart way. Make the best of it.
Good things about the culture
- There are almost always problems which you can try to fix;
- You are often able to get the opportunity to learn things;
- Not everyone does the things which bother me (and other people);
- Some companies treat programmers really well;
- Working from home might be cool thing, if you like that.
Just keep in mind that every culture has some problems or things which you don’t like. This is just my opinion.
What others think
Xah Lee is a pretty well-known GNU Emacs user. His Why Software Suck page contains his opinion about the programming culture.