Smartness is determined by the complexity of a problem, not by degrees

Started by
6 comments, last by way2lazy2care 12 years, 2 months ago
I often see undergraduate CS students (like I used to be) consider more difficult languages as a media to prove they are smart and outstanding compare to the others, or people from other Engineering fields (such as Electrical Engineering) think that their major is more difficult than CS, because their field involves interaction with physical world (hardware, real time....) while CS only deals with, at most, logic (in form of Mathematics), and tend to be proud of that.

As for me, I think this is a big misconception. Certainly, some fields invovle with complex problems by its nature, but it doesn't mean every problem in which the people in that particular field solve, will change the world next morning. However, every field has its own set of problems according to the thinking level of the problem solver (i.e. one such measurement is the simplistic scale easy/medium/hard/very hard).

The flaw in the thoughts of those EE people is that they assume the interactions with real world, such as assembling/crafting/modifying hardware - the interactions with real-world which are specific to their field - are difficult to work with. it is not necessary to directly interact and think with the real-world constraints, considered more difficult to work with at higher abstraction level. For that reason, programming in C/C++ does not imply the programmer in such languages are more competence than a programmer using Java. Let's view it like this: Java is easy, so it's more accessible for lesser gifted people to work with, solving easy tasks/errands, so competence programmers can focus on the suitable problems at their level. A competence programmer, can take advantage of the easiness of Java, to greatly improve their productivity compare to the programmer with lesser intellectual capacity and/or skills.

For the same reason, working with bare metal does not mean it's harder to work at higher levels of abstraction. For example, creating a simiple circuit which can turn on/off a lightbulb does not mean it's more difficult than prove Fermat's last theorem. Math is a field I consider very hard, above all else, simply it forces the thinker to think in a very high and abstracted level, to the point where everything does not seem connect to the real world, thus make it hard for majority of people to grasp advance math concepts. It is also hard to map Math concepts into real world and apply it.

So, what's your opinions on this issue? I'm working in a telecom company which produces embedded telecom software for telecome devices. Although I work with C/C++ and the terminal primarily, I'm tired people considered themselves competent programmers because they program in C/C++, as well as folks on internet forums. They might be, but it doesn't mean they are more competent than ALL the people using Java/Python (they usually use the word most, but really, in their mind, it means all).

One again, the complexity of problem defines the competent of the problem solving ability of a person. Whether you are working on art, business, communication, engineering, science, if you can solve complex problems of your field (given the field is significant), you are smart. Sadly, we don't have a universal metric to measure the complexity of every problem, and this seems to be impossible (instead, they use IQ, but it still does not reflect the true capacity of the mind at all).
Advertisement
the complexity of problem defines the competent of the problem solving ability of a person.[/quote]

If facing a simple problem, use a simple solution to a simple problem.
If facing a complex problem, use a simple solution to a complex problem.

Engineering is about finding simple solutions. Problem solving skills are about that. Someone who understands the problem domain will produce simple solution. Others will produce a complex solution.

I often see undergraduate CS students (like I did) consider more difficult languages as a media to prove they are smart and outstanding compare to the others[/quote]
Inexperience. At that stage in life, we have tons of book knowledge, but zero experience.

Compare this to any other technical task. If you go and try to fix a car, you'll be looking and poking the engine for hours. A mechanic will listen for two seconds and say that valve needs to be tuned.

This is also the difference between highly productive people (correlates with experience) and beginners.

Choice of language is inconsequential, same mistakes will be made in C or in JavaScript.
..why care about what's smart and what's not?

I often see undergraduate CS students (like I used to be) consider more difficult languages as a media to prove they are smart and outstanding compare to the others, or people from other Engineering fields (such as Electrical Engineering) think that their major is more difficult than CS, because their field involves interaction with physical world (hardware, real time....) while CS only deals with, at most, logic (in form of Mathematics), and tend to be proud of that.

As for me, I think this is a big misconception. Certainly, some fields invovle with complex problems by its nature, but it doesn't mean every problem in which the people in that particular field solve, will change the world next morning. However, every field has its own set of problems according to the thinking level of the problem solver (i.e. one such measurement is the simplistic scale easy/medium/hard/very hard).

The flaw in the thoughts of those EE people is that they assume the interactions with real world, such as assembling/crafting/modifying hardware - the interactions with real-world which are specific to their field - are difficult to work with. it is not necessary to directly interact and think with the real-world constraints, considered more difficult to work with at higher abstraction level. For that reason, programming in C/C++ does not imply the programmer in such languages are more competence than a programmer using Java. Let's view it like this: Java is easy, so it's more accessible for lesser gifted people to work with, solving easy tasks/errands, so competence programmers can focus on the suitable problems at their level. A competence programmer, can take advantage of the easiness of Java, to greatly improve their productivity compare to the programmer with lesser intellectual capacity and/or skills.

For the same reason, working with bare metal does not mean it's harder to work at higher levels of abstraction. For example, creating a simiple circuit which can turn on/off a lightbulb does not mean it's more difficult than prove Fermat's last theorem. Math is a field I consider very hard, above all else, simply it forces the thinker to think in a very high and abstracted level, to the point where everything does not seem connect to the real world, thus make it hard for majority of people to grasp advance math concepts. It is also hard to map Math concepts into real world and apply it.

So, what's your opinions on this issue? I'm working in a telecom company which produces embedded telecom software for telecome devices. Although I work with C/C++ and the terminal primarily, I'm tired people considered themselves competent programmers because they program in C/C++, as well as folks on internet forums. They might be, but it doesn't mean they are more competent than ALL the people using Java/Python (they usually use the word most, but really, in their mind, it means all).

One again, the complexity of problem defines the competent of the problem solving ability of a person. Whether you are working on art, business, communication, engineering, science, if you can solve complex problems of your field (given the field is significant), you are smart. Sadly, we don't have a universal metric to measure the complexity of every problem, and this seems to be impossible (instead, they use IQ, but it still does not reflect the true capacity of the mind at all).


Obviously quantifying intelligence based on which programming language a person uses is stupid. Why did you even feel the need to make this post?

..why care about what's smart and what's not?

Because many people think what they do is more intellectual than the others, and have a tendency to downplay what they think is inferior. In fact, it is very hard to judge based on the degrees they got and the types of work they perform.

Also, this is a discussion as well, it's one of the reason for creating the topic. I want to hear opinions and experience on this issue, and how people deal with it. To me, I just ignore and focus on the job. I don't care. But how about the others?


Obviously quantifying intelligence based on which programming language a person uses is stupid. Why did you even feel the need to make this post?

My scope is more than just programming language. Please read carefully.

Obviously quantifying intelligence based on which programming language a person uses is stupid. Why did you even feel the need to make this post?


Given some of the utterly inane, stupid and down right pointless stuff you've been posting in the lounge of late I find this question to be a tad on the hypercritical side...

So, what's your opinions on this issue?


People believe their choices are the best ones, and are driven by cognitive dissonance to support their choices in the face of evidence to the contrary. Especially geeks who often take refuge in the 'at least I'm smarter than that bully' take a lot of comfort in that superiority.

It's a common and known issue. It helps explain the difficulty we have on the forums here of convincing n00bs that C++ really isn't the way to go.

Because many people think what they do is more intellectual than the others

But what I do IS more intellectual than others! :-p

Back to watching football <_<

This topic is closed to new replies.

Advertisement