Wednesday, 30 March 2011

Call out the bad apples

I was originally planning to post the content of this blog as a reply in response to my previous post, "Is it too early for commitment" said the developer but seeing as it ended up being the length of a blog post I though I should promote it to one.


For those of you who have not read my previous post I would suggest that you go and read it. But here is the comment from tbscope that upset so much that I needed to respond.

tbscope said...

Ohh dear...

The clasical lazy student.

It's like saying: "I want to make a quick and easy modification to the space shuttle. Whatever did I know I had to use a difficult to understand fueling method to get the d*mn thing into space?"

This is just a classic example of not wanting to read the documentation. There's no excuse for it.

You can build any program in any IDE. You just need it to be set up correctly, and that takes time and knowledge. You know, things that a student should be doing in the first place: learning.

A lazy student is just a lazy person, and a person who will fail in doing these tasks in later life (unless he changes).

Before you drive a car, lets first try to at least know how to walk.

That does not mean I say you can't start driving right away... but at least expect some bumps down the road and some detours.

I'm a professional electro-mechanical engineer. I have a lot of theoretical and practical knowledge. But guess what: every day, I need to learn something new, something I don't understand and something that takes time to know.

Deal with it. Either follow the given recipe, or actually learn something.

But: some things can indeed be made easier to understand, that is true.

29 March 2011 09:57

And here is my response:

@tbscope I am really disappointed that the first comment I have on this post is one from someone who clearly doesn't really understand the content of my blog post. I was tempted to just delete your comment but I think it is better that I respond to your points and try and explain why I am so disappointed.

First of all I must point out that it is extremely rude and insulting to jump directly to the phrase "lazy student". At no point in my blog post did I mention the word lazy nor did I imply it. In fact I explicitly said that students have "other valuable things to do with their time... and time is very valuable during college". I have seen quite a lot of really great minds buckle under the pressure that college puts them through and I think it is very insulting to them, and in fact to all students, to jump on the stereotype of a "lazy student".

Also your analogy with the space shuttle is fundamentally flawed. First of all developing a desktop program is not rocket science, developing it *well* or knowing everything about it is a whole load more difficult. If we were to turn away all users who were not at an intermediate level or above how are we supposed to survive as a community!? After all, you stated yourself that a student should be *learning*, how will they gain any experience if we effectively say to them "Sorry you're not good enough to join our community, but come back when you're an expert and we'll think about it". We as a community should lower barriers to entry and try to encourage new developers to join us, after all there is a huge mind grab for developers in the open source world so it makes sense that a new developer will begin with the project that is easiest start developing for. Water always seeks the easiest path.

Also to pick holes in your driving analogy too: Tell me, on your very first driving lesson did your instructor quiz you on the mechanics of an internal combustion engine before they even let you sit in the driver seat? No (or at least if he did then they were a terrible instructor). Instead they would probably explained the basics to you and allowed you to drive a little bit in a controlled environment. Compare that to my user story, the "basics" are how to check it out from subversion and the "controlled environment" is the separate build directory that can be nuked without having to install anything.

12 comments:

Ruurd said...

Maybe maybe you should have a look at what he says and try to determine if and how you can apply that to yourself before retaliating. This post is an ad-hominem and shows you forgot to do that. FAIL.

real_ate said...

@ruurd I don't quite understand what he said that can I can [apply to myself]. My objections to the comment were:
1) I felt he did not understand the intention of my original post and
2) I felt that it was really quite offensive to students.

I also do not quite understand how my post is "ad-hominem", I am just expressing my objection and contesting the logic in his comment. If you could explain more that would be helpful. Thank you

Petr said...

Oh, I agree with the original original post so much! I wanted to reply with stuff in my own words, but let me do that here, since it seems here it's more about politics and less about technical solutions :)

In the first place, a program should not demand that it messes with my system before I can run it. It assumes I have a specific directory structure. It prevents me from installing the software on a school computer, or on shared hosting. It's a security vulnerability – I have to run your code as root, unnecessarily.
It makes me flag the program as arrogant. This is a much, much worse problem than someone not reading documentation.

Then, software is not a space shuttle. If you demand that I'm a rocket engineer before I can build it, you're essentially violating software freedom #1. (Please do take this as statement as meditation material rather than at face value, okay?) Aspiring open-source developers would also have a major bootstrapping problem: how to learn to hack if I need to already know?

Also, while the project may not want uncommitted devs, the uncommitted devs want the project! I want to be able to test my hacking skills on some random app. I want to fork your program and mangle it horribly. (Make it all pink and full of bunnies and unicorns?) It won't help the project at all, but is that a reason to deter me and require me to be all committed and productive?
Yes, I might come back in a couple of years and help the project, or I might not, but that's not the point.

And, if a KDE program is not set up to run in the KDE IDE out of the box, then it's not me who's lazy. If it doesn't run from the Qt IDE, well, I can understand there can be a good reason for it.

real_ate said...

@Petr Thank you very much for taking the time to make a truly amazing comment! You really managed to sum up what I was trying to say in the original post, thank you for that.

Just on an aside, and really just to head off any more comments that might point out this fact: you don't actually have to install into root protected file system with "make install". I don't actually know the setting off hand but you can set an install path for the program to be in your user space.

I developed Marble for 6 Months solid and didn't know this fact until last week! :D

uetsah said...

@real_ate:

I agree with you 100%!

Thanks for making these posts on Planet KDE, hopefully it will raise awareness for the issue of tearing down unnecessary entry barriers for newbies trying to hack on KDE code.

kboite said...

I agree strongly with your point of view (being able to hack and run things, even quickly and dirty can eb a good entry point to turn people into committed developers in the long run).

But the "bad apples" / ad-hominem thing isnt really necessary to make your point (which you're sucessful enough to defend anyway).

real_ate said...

@kboite thank you, I appreciate the insight. In truth the title was originally intended to grasp interest (as titles are generally supposed to) but I suppose I could change it if it comes across too strongly. I was not intending to be confrontational, I was merely looking for a forum to air my disagreement with the original commenter.

Anyone have any thoughts on this?

kboite said...

Uh, sorry for double-posting : you asked for an explanation of the ad-hominem thing.

"Bad apples", doesnt it apply to people and not only the logic ?
(at least it does in french when you translate litterally).

"But here is the comment from tbscope that upset so much that I needed to respond."
Be it objective/factual saying how much upset you are keeps the debate on the passion side, not arguments/logic.

"@tbscope I am really disappointed that the first comment I have on this post is one from someone who clearly doesn't really understand the content of my blog post."
The little too assertive tone makes it become ad-hominem : the "rtfm"-approach has some sense too. Moreover, your approach of lowering the entry barriers isnt fully uncompatible with making people aware of their responsabilities by reading manuals.
(People should be able to do quick and dirty hacks to dive in code easily, but also being committed/responsible enough when they want to reaaly contribute)

"I was tempted to just delete your [full of sh*t] comment"
Deleting comments often means that you consider the content non only wrong (false), but also wrong (trollful). Plus, this sentence doesnt make your point go any further, so it's quite offtopic/ad-hominem/unnecessary.

Hope i expressed my feelings correctly. Your point is more than valid, but depassionating your blog post would be nice.

toddrme2178 said...

@ Ruurd: Where is the ad-hominem? An ad-hominem is attacking the reader as a person rather than addressing the argument.

The OP said the commenter doesn't understand his point. That is not an ad-homeinem

The OP said part of the comment was "Rude and insulting". That would be a logical fallacy, not ad-hominem but a different one, if that was used to argue the comment was wrong, but it wasn't.

And the OP said that he thought the analogies were wrong and explained why. That is the exact opposite of a logical fallacy (in fact the analogies themselves are a type of fallacy).

tbscope said...

Quote:
"@tbscope I am really disappointed that the first comment I have on this post is one from someone who clearly doesn't really understand the content of my blog post. I was tempted to just delete your comment but I think it is better that I respond to your points and try and explain why I am so disappointed."

You get all my respect for not deleting it and opening a discussion about it.

quote:
"First of all I must point out that it is extremely rude and insulting to jump directly to the phrase "lazy student". At no point in my blog post did I mention the word lazy nor did I imply it."

Maybe you're right you didn't imply it. I know your post was with the best intentions. And indeed, some parts can be made easier to use.

However, I was a student once, and I know for a fact that most students are lazy.

quote:
"In fact I explicitly said that students have "other valuable things to do with their time... and time is very valuable during college"."

If other valuable things mean studying than yes, you're right. I've seen other definitions of valuable things during my time as a student.

quote:
"I have seen quite a lot of really great minds buckle under the pressure that college puts them through and I think it is very insulting to them, and in fact to all students, to jump on the stereotype of a "lazy student"."

I can agree with this, but that's not what I meant. I very much respect a hard working student.

quote:
"Also your analogy with the space shuttle is fundamentally flawed. First of all developing a desktop program is not rocket science,"

Well, it is.
Rocket science is just science as is developing software.

quote:
"developing it *well* or knowing everything about it is a whole load more difficult"

Indeed.

Here's another analogy:
There are generally two types of cooks; an amateur cook and a professional cook.

Either cook can make great food. However, it is the professional cook who, in most cases (there are always exceptions of course), can come up with great ideas. Why? Because they understand the processes, they understand the ingredients, they have much more experience, ...

This does not mean I loath anyone trying to become a better cook, or a better desktop application writer. On the contrary, I applaud it! What I want to see is that people like you who want to write desktop applications actively get involved. Do the actual writing, learn new techniques, and if something is bothering you, ask for advice and try to solve it yourself.

Just venting your frustrations of not being able to follow a given recipe doesn't strike me as a response from an intelligent person. No disrespect though.

tbscope said...

quote:
"If we were to turn away all users who were not at an intermediate level or above how are we supposed to survive as a community!?"

That is a very good point.
Note though that this is not what I mean. I don't mean to tell contributers to send them their masters degree to an administrator before getting access to a repository.

No, I mean that if you are interested in developing a desktop application, or improving an existing one, you want to learn how it works and how to build and run it as it is.

Sure, you might form ideas on how to improve when you go along.

Maybe I can't explain this well enough, so here's another example:
Some desktop applications are very complex and contain a lot of code. A couple of years ago, I wanted to improve Karbon, so I went through the bug reports trying to see if I could reproduce them and then adjust the code so the bug would be solved. You know what? It took a lot of time and dedication to even begin to understand the code and to learn where I should even look. Do you think it is easy to just jump in a million lines of code with only and handfull of documentation available, mostly outdated?

It takes perseverance and dedication to learn how stuff works. After that it takes practice and more dedication to build experience.

Thus, what I mean with making it easier for new contributers is: make documentation, make it crystal clear, keep it up to date, set up a group of people that help and mentor new contributors, listen to them and make them feel inmportant and accepted. And indeed, if they suggest that data and code should not be separated then maybe it is a good idea to listen to them and try to solve the problem. However, do not ignore the experience of the people already working on these programs for years. Maybe there's a very good reason why they do the things like they are.

quote:
"We as a community should lower barriers to entry and try to encourage new developers to join us"

Absolutely. Dumbing down some technical processes should not be one of them. Clearly explaining them, and maybe creating some automation for it by experienced developers can be a better idea I think.

Quote:
"so it makes sense that a new developer will begin with the project that is easiest start developing for"

No, that's not the general way it works. It might be for a few people, but most people start working on a project because they want to, not because it is easy.

I can speak here for myself when I say that I don't even touch the easy problems. What fun are they? I already know that. I want hard problems to solve because fixing a difficult problem is what drives the adrenaline through my body.

tbscope said...

quote:
" on your very first driving lesson did your instructor quiz you on the mechanics of an internal combustion engine before they even let you sit in the driver seat? No"

No, indeed, that's not really necessary. Although, I think every driver should at least have a knowledge of how his/her car works.

But, on the other hand, in my country, it as necessary to know how to change a tire.

The problem here is that you now go from a developer situation (the one who creates the car or software) to a user situation (the one who uses the car or software).

You can't be both (unfortunatly).
You are either the developer or the user. Of course, as a developer you also use the product, but you will always be biased as a developer too!

So, yes, as a developer of a car, you might want to learn how a car works.

Don't take my comments to seriously though. I'm just one voice. And I can agree with you on some levels. Things can indeed be made more easy for new developers. But I disagree with shielding them from the gory technical details. I prefer what I already said above, documentation, documentation, documentation, a little bit of automation and some mentoring.
As for the rest, the time and willingness of the new developer to learn.

Writing your name in a program to show off is stupid and disrepectfull not only of the developer but for the whole trade! You will come over as a stupid script kiddy which doesn't know if his toes are fingers or not. And this is what I mostly read in your original blog post.

You know, I’m a professional engineer, during my time as a student and even now, during my time as a professional, I get a lot of questions from colleagues on how to do even the most simple of things. Ohms law for example, just calculating some resistance or voltage, how hard can that be? I know professional engineers who can not do that. Why? Because they couldn’t during their time as a student and that’s because they were just not interested. They want someone else to do the hard work for them, they do not want to think (it probably hurts or something, I don’t know).