Discover the best of the web!
Learn more about Digg by taking the tour.
Signs You're a Crappy Programmer (and don't know it)
damienkatz.net — "You know those crappy programmers who don ’t know they are crappy? You know, they think they're pretty good, they spout off the same catch phrase rhetoric they've heard some guru say and they know lots of rules about the "correct" way to do things?"
- 1129 diggs
- digg it
- kevinrose, on 10/12/2007, -116/+40repost: original story had a bad description
- mdweezer, on 10/12/2007, -11/+20So instead lazily copy and paste from the article; good work.
Good article though, definitely agree about UML. - 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.
- JimXugle, on 10/12/2007, -17/+3come on kevin... repost?
*sigh*
[is still waiting for extremely vague leak from rev3 to spark speculation] - CaptanAwal, on 10/12/2007, -9/+19LOL Kevin Rose with -1 Digg?
How did this happen? - Zipp425, on 10/12/2007, -22/+7wow... kevin has -1 diggs...
Whats next... Kevin finding out he is a crappy programmer and doesnt know it?
Just kidding. We love you... - 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. - N3wtR0ckn13, on 10/12/2007, -6/+1has anyone coined the term digg_debt yet? anyone...anyone...bueller?
- 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.
- neocitron, on 10/12/2007, -23/+1wow... how did Kevin get -18 diggs?
i guess people automatically dig down first posts - neocitron, on 10/12/2007, -20/+2wow... how did Kevin get -18 diggs?
i guess people automatically dig down first posts... i accidentally buried him too - artanis, on 10/12/2007, -1/+2I'd say this list is pretty good. The whole point of the article is that being too strict or narrowminded in any situation will make your code crappy. Always keep your options open and do whats right in that situation without overdoing it.
- pfister_, on 10/12/2007, -2/+2Design is important, but articles that tout UML and the like tend to have the stench of overengineering. To quote a job interview scenario described by Craig Timpany:
"Very well. Firstly I will create an abstract base class for objects which may have a textual representation. Of course the input and output from the algorithm must be encapsulated into objects, so they will have abstract base classes too. Naturally I will make these as templates and leave an unused template parameter to allow for future expansion. But before I can start I must create a namespace for the abstract base classes
... the time is up? This is unacceptable. I have not yet begun on the UML diagram for the architecture of the DLL which contains the algorithm!
... well, I am sorry too! I do not know how your organisation proposes to write games without even such basic tools as native XML databases. Clearly you are headed for disaster!"
- mdweezer, on 10/12/2007, -11/+20So instead lazily copy and paste from the article; good work.
- trialofmiles, on 10/12/2007, -4/+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."- mrASSMAN, on 10/12/2007, -11/+8you're right, but i think people felt compelled to bury kevin just to feel what it was like to overpower The Creator..
- bogaut, on 10/12/2007, -42/+20guys, the important thing here is that its a kevinrose story. digg away
- r2d7, 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)
- ElJefeGrande, on 10/12/2007, -15/+3-r2d7
I couldn't have said it any better.
- Nitsugua, on 10/12/2007, -13/+2Good digg. Totally agree about Java !
- thestatic, on 10/12/2007, -18/+14i dont know about you guys but i KNOW im a crappy programer.. but my paycheck apparently doesnt..hahahahahahhahahahahahahahaahha
- mrASSMAN, on 10/12/2007, -6/+10"...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."
" :-( " - WaterDragon, on 10/12/2007, -2/+3And 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?
- mrASSMAN, on 10/12/2007, -6/+10"...haahahahahahaahaha oh man that was a good one, i'm so sly--"
- r2d7, on 10/12/2007, -8/+4I agree about a lot of the points. I contract for a very large company with an in-house team of crappy programmers who match virtually all of those criteria. They make me look good every time they release something.
- abdulla, on 10/12/2007, -6/+2Worse is finding a tutor at university who is teaching legions of undergrads the wrong thing. I know one guy who was proposing that multiple return statements, along with break and continue in loops, as being tools of the devil to naive students. These people need to get their heads out of their dogmatic arses.
- garraeth, on 10/12/2007, -8/+4Sounds good, except I like copy/paste because if I have a bit of code that's solid and I've used for a while, why not re-use it to speed up your dev process?
- 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.
- JohntB, on 10/12/2007, -2/+6I 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
- goat4, on 10/12/2007, -5/+6yawn
- ozroy, on 10/12/2007, -0/+9Final point should be "Believing non of these apply to you"
- MisterCookie, on 10/12/2007, -1/+19I 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- jamelt, on 10/12/2007, -1/+1That guy is hilarious.
- WaterDragon, on 10/12/2007, -0/+2sounds like maybe you can write good viruses. :-)
- atrain, on 10/12/2007, -1/+2I admit, I prefer those small methods...
but for a good reason: commonly used, shorter than righting out the whole thing, eg: Java Importing text
(though I admit, I should stop making seperate methods to parse to other data types :S)
Deleting data = bad. Anoying when betatesting to not have a backup sample file on hand, and you have to recreate it, and it just wont...- 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.
- 0x00, on 10/12/2007, -7/+4I'm so glad that he mentioned the Java thing. The first thing that came to mind when I read the title of this story was 'Java.'
The point he makes about simply logging exceptions is a good one. He also mentions a huge problem that is so prominent - superfluous code that does nothing for the program, however blatantly denied otherwise.The only thing I would like to see added to the list is when a programmer focuses on GUI design more often than the backend that it provides access to.- beejay, on 10/12/2007, -0/+8But he didn't say Java was the problem. He said close-mindedness was the problem.
- timmarhy, on 10/12/2007, -1/+8Your 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.- 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.
- lendrick, on 10/12/2007, -0/+1Agreed.
Most of the time, the people having stupid problems are the same ones who have stupid problems using Windows or Word or any number of applications, especially in circumstances that require they do something different from the steps they're used to following.
Then again, if no one can figure out your application (older versions of emacs come to mind), then it's your problem. :) - 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.
- zeptobyte, on 10/12/2007, -0/+0The idea is that if a large portion of your users can't figure out your program, it's probably because it's poorly designed, and not because they're all stupid.
- dmadzak, on 10/12/2007, -6/+0So true, So true. Most of the problems at my company are programmers adding unneeded complexity to a system or over-engineering a solution. It happens over and over again. I cringe when an architect at my company gets involved in a solution. Its always bad new.
- 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. - 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.
- 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"...
- themeparkphoto, on 10/12/2007, -12/+7How can the opinions of some kid born in 1973 and who looks like this http://damienkatz.net/pics/gangster.jpg and who is a Lotus Notes "programmer" make it on to the DIGG front page?
- themeparkphoto, on 10/12/2007, -5/+3I see how! The Amazing Kevin Rose posted it!
- timmarhy, on 10/12/2007, -1/+7that makes him 32 years old. hardly a kid.
- goat4, on 10/12/2007, -2/+2timmarhy beat me to it
- timmarhy, on 10/12/2007, -1/+1looks like the idiot dugg us down to. doesn't like getting his come up'ns
- BluKnight, on 10/12/2007, -3/+2Good article. The comments afterwards are very insightful and also clear up misconceptions about the list. I mistook what was said about UML and the appended comments cleared that right up.
Definitely a must read. - trogdoor, on 10/12/2007, -6/+2"You think error handling means catching every exception, logging it and continuing on."
logging it? continuing on? why not just squelch it or quit:
// example done in java ( the only REAL programming language)
catch(Exception e){}
or
catch(Exception e){ System.exit(0);}
// note, try statement includes a method that actually throws an IOException but all exceptions are the same right?- 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.
- Crazen, on 10/12/2007, -1/+2I'm so glad we have you to speak for all Java programmers.
- drinkGreen, on 10/12/2007, -1/+0I agree with all the signs, except for the Error Logging one. With the software that I work with and create, often when the error log catches something (which we check at least hourly) its something that was totally unforeseen.
Also, there is no way to account for all the "user error" we get in our errors except catching it in the logs, and posting an alert to the user of something needing to be changed. - samoscratch, on 10/12/2007, -0/+4self agrandizing
- 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.- 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?
- 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.
- drinkGreen, on 10/12/2007, -2/+1I agree with all the signs, except for the Error Logging one. With the software that I work with and create, often when the error log catches something (which we check at least hourly) its something that was totally unforeseen.
Also, there is no way to account for all the "user error" we get in our errors except catching it in the logs, and posting an alert to the user of something needing to be changed.
EDIT: Copy/Paste can be useful at times, but I try not to have duplicate code if I can. If code seems to be used more than once, I consider throwing it into a function and putting it in the common file. that's just me. - 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. - Digitalmafia, on 10/12/2007, -0/+1The point isnt to agree or disagree and tell your huge story or defend your point...its to laugh when you recognize the bad things YOU do. I found a few :)
- 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)
- 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.
- 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..."
- 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. - walugi, on 10/12/2007, -3/+2What's the 1 story that isn't on the front page by kevinrose?
- jamelt, on 10/12/2007, -1/+2I don't know.
- 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.- 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, -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.
- 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.
- adamcrown, on 10/12/2007, -1/+2You just gotta wonder if all of the negative comments are from people who are guilty of a few of the things in that list.
In my experience, anyone who adamantly sticks to rules about how to program is in trouble. Rules look great in books and classrooms but in the real world you realize that what you need is an understanding of the principles of good programming. There are ALWAYS exceptions to every rule but principles are universal. - jamelt, on 10/12/2007, -1/+1I can use some work in programming, but errors are a huge hassle.
- avPaul, on 10/12/2007, -2/+2A few more:
You begin "optimizing" your code before you've finished writing it.
You own every OO book published, and have actually skimmed through 6 of them.
When the end user asks for something you don't know how to do you prefer telling them why they a) don't want that, or b) can't have it rather than learn how to implement it.
You completely change your idea of what "good programming" is every time you read another article in Dr. Dobb's Journal.
You're still pissed about getting fired that time you spent a week writing that really cool bubble sort for the output you were getting from that SQL thing somebody wrote. - DansFloyd, on 10/12/2007, -1/+3sounds like me... Only thing is, I KNOW I'm a crappy programmer...
- BehnoodMarvazi, on 10/12/2007, -12/+2IF YOU PROGRAM IN C++ LIKE ME, DIGG THIS COMMENT!
- mrASSMAN, on 10/12/2007, -0/+5how about i bury you for being retarded? is that ok?
- OrangeTide, on 10/12/2007, -1/+4I know I'm a crappy programmer, but I don't care.
- BehnoodMarvazi, on 10/12/2007, -4/+1Kevin Rose HAS NEVER READ A BOOK! (DIGGNATION) LOL!
- WorldGroove, on 10/12/2007, -6/+2Agree with the Java comment.
I'm *almost* against Java. In my company, all this Websphere stuff seems to take up alot of memory. At one time, it took over 1 hour to bounce the JVM(I don't know the details of why). Then there's another group that uses C# & VB for their dynamic web-content. Seems to work much faster, code was easier to read, and they didn't need to bounce the server to make code-changes take effect. It just worked; simple & fast. Ya know, even the Websphere Dev Studio takes like 2mins to start up and is a memory-hog. A guy burned out 2 CPUs 'cuz Websphere kept making the fan inside the computer's tower work "overtime"(ya know, the fan sounds really loud). MS-VisualStudio takes 9 seconds... and, surprisingly from Microsoft, doesn't seem to take up crazy amounts of resources. VB, C , C#....and my new friend Python(platform-independent & like java...but without crazy memory-usage).....plus a bunch of other languages....seem to be able to do anything Java can do, but faster & simpler.- Crazen, on 10/12/2007, -1/+1You have no clue...
#1 Startup time is hardly a factor for some problem spaces. It's much better to spend the time on startup time, then on run-time. I suggest you actually get a computer science degree before claiming to be a programmer. When you know what Big-O is come back. In the case of Java, it has a bunch of stuff for optimization on startup, especially if that's what you've configured your JVM for.
#2 Java does reflection to allow dynamic behavior changes.
#3 I'm surprised you included C and C# in your list, those languages having typing and you sound like that would terrify you. Why do I get the feeling that your only prgramming experience is your home page and macros? - WorldGroove, on 10/12/2007, -0/+0Yikes... I got buried. I dunno people; I still think most(if not all) can be done in other languages without Java's overhead...tuning or no tuning. I did say *almost* against Java. I'm sure it has its place, but there's alot of stuff that can be written in a more effecient way - but Java is the cool thing so it gets alittle over-used in places where a simple perl/cgi/whatever could have been used.
But alrighty then..... I guess y'all feel differently....
@Crazen
I do have a C.S. Degree with concentration on software-engineering(at least that's what my diploma says) and have been working for about 5 years in the enterprise environment with creating software.... but I guess I cannot claim I made an OS or something. - psylence, on 10/12/2007, -0/+0Wow, you just blamed Websphere for burning out CPUs.
You sir, are a brilliant computer scientist and I welcome you as a colleague.
- Crazen, on 10/12/2007, -1/+1You have no clue...
- SubZ3r0, on 10/12/2007, -3/+2this story is lame just starting some ***** and calling everyone noobs people have to learn somewhere you gonna teach them are you gonna teach them the correct ways to do something no. then ***** off no one wants to hear this *****. BTW .net is just as good as java cause there both typesafe languages. Java is not god so get off your high horse. Sorry kevin but this is just crap you should know a little something bout it cause as much as you think you made digg you didnt look behind your sholder over at all the programmers you hired.
- Crazen, on 10/12/2007, -0/+1I wouldn't say .NET is just as good as Java. I wouldn't put VB anywhere near languages like Java and C#. I think what you meant was C# was just as good as Java. C# learned from Java's mistakes so it had the upper hand on release, however Java came back big time and blew C# out of the water.
More importantnly for the applications where Java and C# are appropriate, I would rather use Java for maturity and to prevent vendor lock-in. Mono is hardly something I would want to bet my application on. - stormwater, on 10/12/2007, -0/+0You do realise c# is ".NET" too, right?
VB.NET/C#/J#/whatever - it all boils down to the same code at run-time.
- Crazen, on 10/12/2007, -0/+1I wouldn't say .NET is just as good as Java. I wouldn't put VB anywhere near languages like Java and C#. I think what you meant was C# was just as good as Java. C# learned from Java's mistakes so it had the upper hand on release, however Java came back big time and blew C# out of the water.
- 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.
- synae, on 10/12/2007, -0/+1i've gotten that error before....but it turned out i had just missed a semicolon.
- 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. - Jovan, on 10/12/2007, -5/+1Quite frankly I think the worst sign of being a crappy programmer is if you have had no experience in "heavy" (making a badass game/app -- not your "hello world" *****) programming prior to entering the desired university or college programming course. I am currently a highschool student, graduating this year and heading into an institute of technology but my peers around me seem to think that "Java rocks!", yet they haven't written anything of use or importance. I can't brag either but I took some time to learn OpenGL, Windows, and DirectX APIs. (Yes I am going into game programming) amongst other languages. My real point is however that people need to decide if they want this sort of job and this sort of life when they are younger... not just enroll into a programming course and end up making people write articles like this one. I see this more often than not, infact, and it pisses me off. It takes the seats away from people that were coding since they got their first computer. Though most of the points he makes are valid, they are more centered towards people being morons and ignorant of what they should do.
Anyway, to stay on the topic:
Java is all you'll need: I don't know, maybe I'd do a quick sweep with a sledgehammer and accidently bump it into someone's face if they said such a thing. I think the most practical way of rebutting such a statement is to say that you should use the language that fits the job, and orient your code around the language, not around the machine.
Enteprisey isn't just a punchline: Err.. k. Someone doesn't know the importance of object-oriented design.
Opposed to big ass functions that take up lots of lines of code: Newb probably never wrote anything complex or dynamic for that matter.
OMG Patterns: I don't know who the ***** would think this, but last time I checked there is such a thing known as "Patterns in Game Design" and they are highly encouraged. Maybe if I ever meet anyone opposing such a thing I'll finally have a valid excuse to throw a monitor at them.
CPU cycles: My ass. I wonder if they still teach Assembly to freshmen students?
No multiple return points: Because in their world, /* comments do not exist */
Your users are stupid: Change career. I may still be young but I try to place myself in someone else's seat and see if they find it challenging. I once wrote a bit of documentation too. I generally just mock other programs with similar design because if people recognize it they'll have an easier time getting around (speaking specifically about map editors).
Pride in lots of code: I can write ***** of lines in DirectX or I can write a few in OpenGL. Another reason to buy a sledgehammer.
Copy and Paste / Error Handling: No comment / use a ***** debugger.
UML modeling: You know, I tried this. From the moment I ran the program to me uninstalling it, it took me just long enough to sigh, shake my head, and double-click on the uninstallation icon. Code is code, not a bunch of boxes and cylinders representing abstract objects. Someone said in the comments that they use it to better realize the problem. My question is: why the ***** are you programming it if you don't know what it's supposed to do?
Wipes important data: Plain stupidity.
Another one should be "You think the coding standard is stupid and instead prefer your own". Because there's nothing more I hate than trying to read my way through poorly written code (not that theres a lot of it, but whenever there is it makes me ***** cringe).- 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.
- 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.
- Jonny5alive, on 10/12/2007, -2/+5Signs You're a Crappy Programmer?
1, Your working on Windows Vista.... - 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....) - Strongoloid, on 10/12/2007, -0/+1I agree with the Java bit 100 percent.
It's kind of annoying, because in college (at least the two I've been to) they teach almost exclusively Java for programming concepts, which I guess is fine to learn the concepts. But every job application that I've looked at out of curiosity that wants a person with a Computer Science degree wants them to be proficient, not in Java, but in C++ or Python.
A friend who owns a business (in the business) put it best when he said "I would never hire someone who knew only Java."- posure, on 10/12/2007, -0/+1C is less in demand than it used to be. Java is good to learn, but only after you have learned C as a base. It is extremely difficult to go from a high level language to a low level, but it is very easy to go the other way around. My school recently switched to Java as their primary language and I'm glad I got through before they did. So far I have not come across anyone that hasn't though that C was needed as a base before learning a high level language (as far as programming as a career). Learn ASM too, its fun.
On the plus side, since you know Java, you can easily transfer your knowledge over to C# which is nearly identical in syntax and object names.
- posure, on 10/12/2007, -0/+1C is less in demand than it used to be. Java is good to learn, but only after you have learned C as a base. It is extremely difficult to go from a high level language to a low level, but it is very easy to go the other way around. My school recently switched to Java as their primary language and I'm glad I got through before they did. So far I have not come across anyone that hasn't though that C was needed as a base before learning a high level language (as far as programming as a career). Learn ASM too, its fun.
- posure, on 10/12/2007, -0/+1Good article. I agree with #1 completely and I don't think it is entirely about closemindedness. I think it is about Java not being the solution for everything which is what the whole paragraph is about anyways. I do know a number of people that flat-out refuse to learn other languages or even give them a chance since Java does everything they say they need. I encourage the other coders out there to learn every language you can, making sure to note the advantages and disadvantages of each for different situations. Learning a language does not consist of making "Hello World." The UML point is good too. UML is overkill for most situations and doesn't even apply as well as it used to.
Personally, I wouldn't use Java unless I needed a light-weight multi-platform GUI application quickly. - AnotherBrian, on 10/12/2007, -0/+1The most important one:
I'll comment it later. - anamanaman, on 10/12/2007, -0/+1Sign you're a crappy C# programmer:
-you put a #region around every method
-you use stylecop - thespace, on 10/12/2007, -0/+1Ya I love the 'Java is the only language' and 'Enterprisey' comments, priceless.
- sukimashita, on 10/12/2007, -0/+0Some more:
- You use Dreamweaver or other WYSIWYG tools and torture everyone about how a good web-developer you are
- You notice a lack of connectivity of your created code with other parts of code at some late stage (->rewrite)
- You listen to everything your client tells you to code blindly
- You are a designer or project manager ;)
- You only worship/choose one programming language in all areas where alternatives are available
- You don't comment your code (even before there is code to outline implementation logic)
- You always tend to ask others for "help" and have no sense for locating help/documentation on the web yourself
- You spend more time fetching coffee than coding
- You are incapable to communicate on the web without excessive punctuation or things like "hahasda,,... ***** no yes ***** omg, noob, lol, wtf, hi@?"
...- 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
- 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
- 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 - ReaperUnreal, on 10/12/2007, -0/+0That was a very good article, and it exemplifies why I disagree with some of the courses offered at my university. It is never a good idea to try and write an entire application in UML, or in my case RoseRT.
About the single language thing, it's so utterly true. There's been times at an unnamed large corporation that starts with an Ado where I was told to write a web site from scratch. I wanted to use Perl, but I got shoehorned into using JSP. That's right, server-side JAVA! There are good uses for languages other than Java. However I've yet to see a really good use for Scheme R5RS.
Oh yes, and patterns and UML usually go hand-in-hand and will help streamline the early planning stages of a large program. You just don't want to go too far in depth. -
Show 51 - 52 of 52 discussions

Digg is coming to a city (and computer) near you! Check out all the details on our