Answers.Body: <p>It's not about cleverness. From the outside, it might look like cleverness, because sometimes people like to hide the process they used to arrive at their answer. This is cultural in mathematics and in some areas of computer science (think about <span class="math-container">$\epsilon-\delta$</span> proofs, where the choice of <span class="math-container">$\delta$</span> seems totally unmotivated and clever at first, but there's a method to choosing it where you write the proof backwards).</p>
  <p>In reality, almost every single time someone does something &quot;clever&quot;, they were following their own step-by-step problem solving algorithm. We teach our undergraduate students <a href="https://medium.com/enjoy-algorithm/four-steps-of-polyas-problem-solving-techniques-80eb39d51c94" rel="nofollow noreferrer">Polya's method</a>.</p>
  <p>I encourage you to study that method and start to see how you've implicitly used it in other times you've solved a problem (including a programming problem). Then, start to be intentional about using this method when faced with new problems. By doing common-sense things like breaking a hard problem into simpler pieces, you can start to solve harder problems than you could before. Eventually this becomes second nature and looks from the outside like &quot;cleverness&quot; but there is a method to it.</p>
  <p>Also, as a student, don't be afraid to ask a professor or teaching assistant how they came up with some specific thing to do. And they can walk you through why they thought to try that. Meta-cognitive thinking is something you should nurture while a student. There's a large amount of literature about how to teach students to think metacognitively and see the big picture that's guiding the whole subject, rather than just a series of clever tricks. Look for the big picture!</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2024-03-29T12:04:14.127Z
Answers.LastActivityDate: 2024-03-29T17:50:15.770Z
Answers.LastEditDate: 2024-03-29T17:50:15.770Z
Answers.UserDisplayName: David White
Answers.Body: <p>As a so-called clever person, I've never once in my life asked myself or anyone else &quot;how to become clever&quot;.</p>
  <p>Nor do I view computer science as being about &quot;clever decisions&quot;.</p>
  <p>I received the designation of &quot;clever&quot; even as a child because I pay attention to things that are not generally attended to (at least when controlled for age and for the effect of adult direction), and more proficiency than average in certain areas.</p>
  <p>Notice the locality and relativity of these claims. The next kid could be juggling 10 tennis balls whilst balancing on a beach ball, and they'll call me clever if I can do it with 11 tennis balls (even though in any objective sense, the difference in capability is not very significant).</p>
  <p>So the average person who has a huge welter of ordinary and quite useful capabilities is always by definition &quot;not clever&quot;, no matter what it is they can in fact do.</p>
  <p>I also never really lifted a finger to be clever if it didn't please my curiosity. You don't get clever on willpower and goal-setting. I've become clever doing things I already liked doing. I think I'm better at certain things because I enjoy doing them more than average, and that enjoyment drives me to do them more than others would (especially those running on the fumes of willpower alone).</p>
  <p>&quot;Computer science&quot; is broadly the academic study of designing/configuring data processing machinery as we know it.</p>
  <p>Obviously practising in the field of computing involves clever decisions and not stupid ones, but that is no more particular to computing than any other activity. There's no human activity in which proficiency is defined by making stupid decisions. Chess is about clever decisions. Negotiating a sale is about clever decisions. Driving a car is about clever decisions. Baking a cake is about clever decisions.</p>
  <p>If you're not good at computer science, which may be why it seems to require a cleverness you don't think you have, then my advice would be to give it up for something you are actually good at <em>and enjoy doing</em>.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2024-03-29T13:35:51.693Z
Answers.LastActivityDate: 2024-03-29T13:35:51.693Z
Answers.UserDisplayName: Steve
Answers.Body: <p>If you are programming only for yourself, or doing something like creating games, then cleverness might be a goal. You want to surprise users and there are few consequences for breaking the rules.</p>
  <p>But if you are asking about programming in the commercial, product driven, world, then cleverness may be the last thing on the menu. Much more important are fulfilling the requirements of the application, which is specified by others, in a way that is maintainable, extendable, and secure. None of that is clever. It is more of an engineering concern. It is, in fact, the reason that agile software development and design patterns came to be. It is why C++ has evolved into a (largely) safe language if used in the modern way. It is why OO programming, when done well, controls access to fields.</p>
  <p>I'd guess that your algorithms course stressed correctness and how to prove it. Some of the algorithms seem clever if you've never seen them before, but they have a long history and a solid basis for known efficiency and correctness.</p>
  <p>Don't be misled. Work to become more <em>grounded</em> not more clever.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2024-03-29T13:55:17.817Z
Answers.LastActivityDate: 2024-03-29T13:55:17.817Z
Answers.UserDisplayName: Buffy
Body: <p>After studying 4 years in university, I've concluded that computer science is all about taking &quot;clever&quot; decisions. Programming in real world at any product based company is the same, you use your &quot;cleverness&quot; to write code. I find it tiring to solve puzzles but am determined to be a good computer science person, so how do I start to make myself more clever?</p>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2024-03-29T11:25:05.287Z
Comments.Text: I find it hard to approach this question because I absolutely reject your premise. What in the world do you mean by "cleverness"?
Comments.UserDisplayName: Ben I.
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2024-03-29T17:44:40.033Z
Comments.Text: Please define "clever". What led you to conclude that CS is all about taking clever decisions? The only context I hear "clever" being used regularly is in programming, where it's applied as a criticism of code that uses fancy syntactical tricks when a simple idiom would suffice. In the "real world", we strive for code to _not_ be clever to lower the maintenance cost.
Comments.UserDisplayName: ggorlen
Tags: <self-learning><computational-thinking>
Title: How to become clever as a Computer Science Graduate?
ThreadText: # How to become clever as a Computer Science Graduate?
  
  (Asked by: username_0 on 2024-03-29)
  
  After studying 4 years in university, I've concluded that computer science is all about taking "clever" decisions. Programming in real world at any product based company is the same, you use your "cleverness" to write code. I find it tiring to solve puzzles but am determined to be a good computer science person, so how do I start to make myself more clever?
  
  **Tags:** self-learning, computational-thinking
  
  > **Comments:**
  > **username_1**: I find it hard to approach this question because I absolutely reject your premise. What in the world do you mean by "cleverness"?  
  > **username_2**: Please define "clever". What led you to conclude that CS is all about taking clever decisions? The only context I hear "clever" being used regularly is in programming, where it's applied as a criticism of code that uses fancy syntactical tricks when a simple idiom would suffice. In the "real world", we strive for code to _not_ be clever to lower the maintenance cost.  
  
  ---
  
  ## 3 answers
  
  ### Answer by username_5 on 2024-03-29. Score: 2 | Accepted answer
  
  If you are programming only for yourself, or doing something like creating games, then cleverness might be a goal. You want to surprise users and there are few consequences for breaking the rules.
  
  But if you are asking about programming in the commercial, product driven, world, then cleverness may be the last thing on the menu. Much more important are fulfilling the requirements of the application, which is specified by others, in a way that is maintainable, extendable, and secure. None of that is clever. It is more of an engineering concern. It is, in fact, the reason that agile software development and design patterns came to be. It is why C++ has evolved into a (largely) safe language if used in the modern way. It is why OO programming, when done well, controls access to fields.
  
  I'd guess that your algorithms course stressed correctness and how to prove it. Some of the algorithms seem clever if you've never seen them before, but they have a long history and a solid basis for known efficiency and correctness.
  
  Don't be misled. Work to become more *grounded* not more clever.
  
  
  ---
  
  ### Answer by username_3 on 2024-03-29. Score: 3
  
  It's not about cleverness. From the outside, it might look like cleverness, because sometimes people like to hide the process they used to arrive at their answer. This is cultural in mathematics and in some areas of computer science (think about $\epsilon-\delta$ proofs, where the choice of $\delta$ seems totally unmotivated and clever at first, but there's a method to choosing it where you write the proof backwards).
  
  In reality, almost every single time someone does something "clever", they were following their own step-by-step problem solving algorithm. We teach our undergraduate students [Polya's method](https://medium.com/enjoy-algorithm/four-steps-of-polyas-problem-solving-techniques-80eb39d51c94).
  
  I encourage you to study that method and start to see how you've implicitly used it in other times you've solved a problem (including a programming problem). Then, start to be intentional about using this method when faced with new problems. By doing common-sense things like breaking a hard problem into simpler pieces, you can start to solve harder problems than you could before. Eventually this becomes second nature and looks from the outside like "cleverness" but there is a method to it.
  
  Also, as a student, don't be afraid to ask a professor or teaching assistant how they came up with some specific thing to do. And they can walk you through why they thought to try that. Meta-cognitive thinking is something you should nurture while a student. There's a large amount of literature about how to teach students to think metacognitively and see the big picture that's guiding the whole subject, rather than just a series of clever tricks. Look for the big picture!
  
  
  ---
  
  ### Answer by username_4 on 2024-03-29. Score: 1
  
  As a so-called clever person, I've never once in my life asked myself or anyone else "how to become clever".
  
  Nor do I view computer science as being about "clever decisions".
  
  I received the designation of "clever" even as a child because I pay attention to things that are not generally attended to (at least when controlled for age and for the effect of adult direction), and more proficiency than average in certain areas.
  
  Notice the locality and relativity of these claims. The next kid could be juggling 10 tennis balls whilst balancing on a beach ball, and they'll call me clever if I can do it with 11 tennis balls (even though in any objective sense, the difference in capability is not very significant).
  
  So the average person who has a huge welter of ordinary and quite useful capabilities is always by definition "not clever", no matter what it is they can in fact do.
  
  I also never really lifted a finger to be clever if it didn't please my curiosity. You don't get clever on willpower and goal-setting. I've become clever doing things I already liked doing. I think I'm better at certain things because I enjoy doing them more than average, and that enjoyment drives me to do them more than others would (especially those running on the fumes of willpower alone).
  
  "Computer science" is broadly the academic study of designing/configuring data processing machinery as we know it.
  
  Obviously practising in the field of computing involves clever decisions and not stupid ones, but that is no more particular to computing than any other activity. There's no human activity in which proficiency is defined by making stupid decisions. Chess is about clever decisions. Negotiating a sale is about clever decisions. Driving a car is about clever decisions. Baking a cake is about clever decisions.
  
  If you're not good at computer science, which may be why it seems to require a cleverness you don't think you have, then my advice would be to give it up for something you are actually good at *and enjoy doing*.
  
  
  ---
  
  