Sponsored by Travelzoo
Take Advantage of Ridiculously Low Holiday Airfares view!
travelzoo.com - Flights $52 and up for Thanksgiving, Christmas & New Year. But move on it now.
107 Comments
- trialofmiles, on 10/12/2007, -5/+49Out of curiosity I found the original story Kevin said had a bad description:
http://digg.com/programming/Signs_You_re_a_Crappy_Programmer_(and_don_t_know_it)
The description was "Title says it."
Yeah, I'd take a copy/paste from the article over "Title says it." - inactive, on 10/12/2007, -19/+51Why don't you just give him a blowjob? You obviously want to.
- seanroth, on 10/12/2007, -6/+30He was being sarcastic. (I think)
- MisterCookie, on 10/12/2007, -1/+20I have to say I'm a worse programmer. For example, my latest 'accomplishments' include:
-Not being able to answer any of the written portion of the AP computer science exam in java.
-Big O notation...is that a sex toy?
-Writing a program that stores its data in a text file, but even the slightest mistake by the user throws a NullPointerException
-Forgetting to add a sentinel value for a loop in a sorting function, resulting in it deleting the contents of aforementioned text file - rideagain, on 10/12/2007, -1/+13If that code is good, why not put it in a library? Then you can call the function instead of copy/pasting code. This way, if you find a bug in that good code, you only have to fix it in once place.
- ozroy, on 10/12/2007, -0/+10Final point should be "Believing non of these apply to you"
- CaptanAwal, on 10/12/2007, -9/+19LOL Kevin Rose with -1 Digg?
How did this happen? - mdweezer, on 10/12/2007, -11/+20So instead lazily copy and paste from the article; good work.
Good article though, definitely agree about UML. - beejay, on 10/12/2007, -0/+9But he didn't say Java was the problem. He said close-mindedness was the problem.
- inactive, on 10/12/2007, -1/+9Your users are stupid. Really stupid.
sorry but most of the time it's true. as a programmer you can try to sit down and come up with every single crazy thing a person could do and find a way around it, but for your own sanity you need to realise that people do retarded things to the computer system and there's nothing you can do to prevent it. - inactive, on 10/12/2007, -1/+7that makes him 32 years old. hardly a kid.
- ericesque, on 10/12/2007, -1/+7The article felt more like a rant than a well thought out or well written article. If I want rants, I'll go to a linux forum. No digg.
btw, does reporting a story submitted by krose as lame get me banned from Digg? - cagedog, on 10/12/2007, -1/+7Another sign you're a crappy programmer: you make a webpage talking about how everybody else is a crappy programmer.
From TFA: "Far from being something you look to add to your code, you should feel bad every time you are forced to code up another design pattern, it means you are doing busy work that makes things more complex and is of dubious benefit."
He clearly doesn't understand what patterns are or why they're important. While it's true that some people try to use or overuse patterns that they don't fully understand, that's part of the learning process -- a process this guy thinks is a waste of time. He's wrong and he's trying to defend his laziness/ignorance by dismissing tried-and-true best practices as unecessary. This is not front-page material. - nailbunny, on 10/12/2007, -1/+7kyr has a point.
you can hate uml (or any other design practice for that matter) but the fact remains that there are coding projects out there that are too big to fit entirely in your head at once, and can't be thought out just by writing the code, and, god forbid, the labor must be split between more than one person. - JGailor, on 10/12/2007, -1/+7What a retarded article. Signs you're a crappy programmer:
1. You can't produce working code
2. You don't bother checking all paths through your code with reasonable test input
3. You (or someone else reading your code) can't understand what you were intending to do when you go back to it 6 months later.
If you can accomplish that, then you're pretty good to go. If you are religiously attached to a programming language, then fine. If it's not appropriate for a project I'm in charge of, you're not going to get to code in it, so get over it. I happen to like Java, but that's because I'm currently writing business software. When I used to be an opengl programmer, I wrote my code in C . Usually there's an appropriate tool for the job.
Most of the things that are called out as being signs of a "crappy programmer" are really just good style elements that lazy programmers don't like to take the extra time to put in. They aren't necessary, but they do make the code easier to maintain. I do happen to agree with the patterns item, but only because software engineers went from ignoring them completely, to implementing them with no understanding of how they should be applied. A strategy pattern should be used way more than it is, and factories are used (poorly) way more than they should be. - mrASSMAN, on 10/12/2007, -0/+5how about i bury you for being retarded? is that ok?
- Ionik, on 10/12/2007, -0/+5Signs You're a Crappy Writter (and don't know it): "I've hear this from time to time, and usually the reason..."
- Wyzard, on 10/12/2007, -1/+6There's a difference between using UML to come up with a design before you start coding, and using UML to model every little implementation detail (private variables, trivial helper classes, etc.) before writing a single line of code. Modeling a design is fine; trying to essentially implement the application in UML is not.
- kyriakos, on 10/12/2007, -5/+10I was about to write that I strongly disagree about UML. Well maybe UML-ing everything is not a good idea but if you've ever worked on a project bigger than "notepad.exe" you'll know that "wasting" time on design at the beginning of the project will help you avoid headache's later on.
- mrASSMAN, on 10/12/2007, -6/+11"...haahahahahahaahaha oh man that was a good one, i'm so sly--"
"Static, can i see you in my office for a moment?"
"err, yeah what is it?"
"Static, this is *****. Your fired. GTFO."
" :-( " - JohntB, on 10/12/2007, -2/+7I think it means copy and paste within projects. Although if you're copying and pasting very much at all between projects, it'd probably be a good idea to put all of that into a (pseudo)library.
Edit: what he said - beejay, on 10/12/2007, -0/+4I agree with him, with the exception of the point about being "adamantly opposed" to long functions. I admit I write a long function now and then, but I'm never happy about it. As long as it doesn't affect your productivity, aiming for shorter functions usually leads to better and more flexible design, which you'll appreciate when you have to return to it in 6 months. For instance, if a function consists of a large nested loop, you can extract the inner loops into subfunctions.
When the logic seems to dictate a long method, I can almost always find an elegant design that is more flexible. My longest functions often involve parsing something. My favorite solution for these situations is some variation on a factory pattern. An article that has particularly inspired me is "Why Pluggable Factories Rock My Multiplayer World," at http://www.gamedev.net/reference/articles/article841.asp. The article is aimed at game developers, but I've taken its core ideas into a lot of different projects. - GreatBunzinni, on 10/12/2007, -0/+4UML stands for Unified Modelling Language. Freemind is a tool which offers an ad-hoc modelling language. You may not use UML but you are still planning your project with a ML. That means that you are trying to achieve the exact same thing that people who use UML try to. The difference is that when someone uses UML that person is using a language that not only they can understand and that person is using a specialized language that has constructs which are more efficient to describe the processes they want to model.
So, to sum things up, by using freemind you are trying to do the exact same thing as people who use UML try to do. The difference is that UML people are able to do it better and can communicate their designs more efficiently than you can.
So why not learn UML? - nailbunny, on 10/12/2007, -0/+4there's a difference between people who fight with stupidity and lose, and the people who exploit stupidity for their own betterment, and that difference is a lot of money.
- samoscratch, on 10/12/2007, -0/+4self agrandizing
- WaterDragon, on 10/12/2007, -0/+3sounds like maybe you can write good viruses. :-)
- OrangeTide, on 10/12/2007, -1/+4I know I'm a crappy programmer, but I don't care.
- Crazen, on 10/12/2007, -0/+3Dropped the period off the end:
http://www.gamedev.net/reference/articles/article841.asp
I would just like to add that the game engine I worked on for a very large game publisher made heavy use of patterns.
Contrary to what the article implies, patterns aren't meant for more than middleware. And if this is the only pattern he's using, I would hate to have to work on his code. - GreatBunzinni, on 10/12/2007, -0/+3The point is that some of the things that the author claims as being bad are only bad in his little interpretation of the problem. The UML bit was a clear indicator that he hasn't thought things through.
Maybe if he wrote an UML plan... :o) - Jonny5alive, on 10/12/2007, -2/+5Signs You're a Crappy Programmer?
1, Your working on Windows Vista.... - Nodren, on 10/12/2007, -1/+3alot of this i dont agree with. i'm lucky enough to work for a very small company, in which my boss(the overall office manager) started out coding. so he understands delays and such, and also understands that good code is ALWAYS better then quick code.
also, while i dont use UML, i do mind map projects i want to do(Freemind is one of the greatest open source tools i've ever found) and i cant even begin to say where we would be with out mind mapping our project, it allows us to cap off what features we want in what version, track and fix bugs, throw out ideas for new features, show whats being worked on, and by who, and who will be doing what next.
now, does writing good object oriented code, which is easily expandable, and planning out what i intend to write before i start make me a crappy programmer? maybee if i work for a company that outsources their programmers for paid projects, but for in house coding work, there really isnt a better alternative. - JohntB, on 10/12/2007, -0/+2According to the article, that's actually good, as you're avoiding copying and pasting code around everywhere. The only problem is when you arbitrarily split one larger, logically complete and self-contained function into smaller chunks.
- GreatBunzinni, on 10/12/2007, -0/+2I bet that the architects also have criticism to spear towards your kind: "they only write clueless hacks", "if no one writes down everything to the smallest detail those crappy coders start to get creative and by creative I mean their right hand doesn't know what their left hand is doing", "if no one points it out to them then they can't write a "hello world" function if their life depended on it"...
Just realize that if your managers want you to have architects pointing out everything you must do that is because you can't do it by yourselves. They put an architect on the job to save time and money and, as much it pains you to agree, that works because your kind isn't able to work as a team without screwing up the entire project. - WaterDragon, on 10/12/2007, -2/+4And I know I'm NOT a crappy programmer.....'cause I am not a programmer
...but lately, I am starting to suspect that I might be a bot.
Aren't humans supposed to go off the internet and sleep sometimes? - DansFloyd, on 10/12/2007, -1/+3sounds like me... Only thing is, I KNOW I'm a crappy programmer...
- Canthros, on 10/12/2007, -0/+2Some users are stupid; it's a given. Sometimes, many of your users will be stupid. These things happen. If all of your users are dumb as bricks, you should really be wondering whether you're really a genius by comparison, or just an *****. As a hint, the latter's more common than the former.
- anamanaman, on 10/12/2007, -0/+1-You use NotePad as your html editor and torture everyone about how a good web-developer you are
- Muzical84, on 10/12/2007, -0/+1Never done any of that, but then again, I know I'm a lousy coder. =-P
Funny stuff, though. - synae, on 10/12/2007, -0/+1i've gotten that error before....but it turned out i had just missed a semicolon.
- nicerobot, on 10/12/2007, -0/+1I agree with a lot of this but most of the points are far too general/simplified. UML can be important depending on the scale of the project. Multiple exits can be bad like other techniques that over-complicate the flow. Knowing about patterns is a good idea, but trying to apply them to everything is probably not. Concern for performance is always important but is relative to the scale and good programmers automatically write efficient code.
"A truly great computer programmer is lazy, impatient and full of hubris" --Larry Wall - anamanaman, on 10/12/2007, -0/+1Sign you're a crappy C# programmer:
-you put a #region around every method
-you use stylecop - janosm, on 01/04/2009, -0/+1I think that in the end that you need to log errors. But I think that the article mentions and I agree that errors should be thought about. Should the program exit. Should the program pause while the user fixes the problem or is there something the code can do.
- JGailor, on 10/12/2007, -1/+2I'm waiting for the real world to come in and shatter most of your misconceptions. The worst being your ridiculous approach to UML.
First, I've worked in game development. Get yourself prepared for thankless, *****, depressing, underpaid work. I hope you like nothing more than writing code, because you won't be doing anything else with your life while you're in the field. You think you'll be making any decisions about game design. Think again. Your producer is going to be calling the shots and you get to be the monkey. And it's not just your first year or two. It's a long, long time.
Second, if you don't recognize the value of UML, then you wouldn't get to write line one on any project of mine you were on. A lot of people here seem to be against diagraming with UML, which says to me a lot of people are writing little one-off programs. Any software of appreciable size and complexity requires something to tie it all together, at least in the abstract. Try working with a 15 million lines of code application that supports tens of thousands of concurrent users working with large datasets, with a 15 person team, and try to find the answers to questions about design without having to waste someone elses time who may be the domain expert for that area. A UML diagram provides a quick reference for understanding collaborations between domain objects in the system. It allows you to ask meaningful questions when you have to.
Third, how do you even remotely think you're qualified to make a decision about what you want to do "when you're younger". I wasn't prepared to make decisions about what I wanted to do when I was in college, and I'm still not sure what I want to do with the rest of my time on this earth. It sure as hell isn't sitting at some desk all day long writing code for some business persons idea of what might be able to generate revenue. You're essentially telling me your are sure you are supposed to do this, without any real experience having done it. I was a microelectronics engineer when I started college. Was sure I was going to be designing microchips. A year of later I realized it was probably one of the most boring possible fields to work in (for me).
My real issue is that you just ooze inexperience. Getting your first job out of school (and second, and third) can be one of the most soul-crushing experiences you will ever have. Computer Science in the academic environment is exciting. You're learning new things, coming up with new ideas, trying to innovate. On the job you're just a resource, with X earning potential for the company. A perfect example of this was at my last job. We were running into an issue with generating node id field values in the database for an arbitrarily deep tree. It was ruining one of our important products. I spent a week coming up with a solution that would have eliminated the problem permanently, and was easy to implement. VP of development decided it wasn't worth the QA resources to fix it right, and instead had someone go in and run a script by hand ever other day to reset the field ids. That's one of the most disheartening things that can ever happen to you.
On the other hand, you may get lucky and wind up at a company where your manager realizes the potenial revenue you should be generating & treats you accordingly. One of the original Google engineers is being courted as a potential director for our company. He came in and painted us a picture of one of the greatest engineering environments you could imagine. And then told us it isn't anything like that anymore. - theotheragentm, on 10/12/2007, -1/+2I realized I was a crappy programmer when I compiled and got the message, "Error: Too many errors." Fortunately for the rest of the world, that was my sign to check out the software side of things. I went to setting up data redundancy and backups, so those that didn't take the warning to get out like me can't do too much damage.
- duality, on 10/12/2007, -0/+1You read my mind about the use of long functions, beejay. I personally believe the famous quote "Programs must be written for people to read, and only incidentally for machines to execute." describes my opinion on that matter best.
There are times when I have needed to write a long function in some project too. I would try to compensate for it by adding copious comments to the function and/or subdividing it using an extra layer of blocks. In essence, I would organize the function the same way as I write a shell script; the function acts as a global context, but the smaller blocks use as many "local" variables as I can get away with.
Personally, I also worry about people who think that a function shouldn't have multiple return points. I use deeply nested return statements instead of breaks quite often. It's also annoying when you have to explain the continue keyword to someone who should be a better C programmer than you.
Oh, beejay, the link you posted is dead, but the custom 404 page did have a favicon for it. Do you know of any mirrors for that article (or did you type the link wrong)? - Crazen, on 10/12/2007, -1/+2I'm so glad we have you to speak for all Java programmers.
You are a good example of a ***** programmer. #1 was about close mindedness, and you fit the bill. - narphorium, on 10/12/2007, -1/+2What a weak list. This guys seems way off-base and tends to blame the coding techniques rather than the programmers that use them. This is more like a list of techniques that bad programmers have no clue how to use but use anyways.
Using design patterns and UML do not add extra code or take up extra time when you know what you're doing. Design patterns usually reduce a lot of the code size and make things easier to read and less prone to bugs. Likewise UML lets you quickly model your class hierarchy rather than jumping into the code only to find out weeks later that the design is wrong. Sure, people can and do apply these techniques in weird and twisted ways but that's because they're bad programmers not bad techniques.
Normally I don't give much attention to these Top 10 lists but I really think that this could mislead people and actually perpetuate some bad programming notions (like thinking you're the greatest programmer ever and posting lists about how other people can be as great as you). - neko, on 10/12/2007, -1/+2UML is just one way to create the object model or information model of the application you are going to create. Modelling these things beforehand is an important part of large projects, especially with a large team of programmers. But it isn't a panacea.
Yes, it help to have a formalized way of drawing these diagrams, but that's all they are, just diagrams. I know some people who take it a little too seriously, using Enterprise Architect for everything, from the object model to their grocery list.
More worrying is that they want to make tools to go from the UML model directly to generated code and generated XML Schema files. UML should be one way of describing the model, not the source of it. - tybris, on 10/12/2007, -0/+1It mostly boils down to not recognizing the difference between application-, systems- and script-programming or not knowing what to do with it.
P.S. Funny how people are cheering that point #1 does not apply to them because they use only Python. - inkswamp, on 10/12/2007, -0/+1They left one off the list:
* You work for Microsoft.
(edit: LOL Jonny5alive. We posted that at exactly the same time! Well, great minds....) -
Show 51 - 100 of 107 discussions



What is Digg?