Ask HN: How to improve my abstract thinking? - <AUTHOR> A few days ago I got into Mathematical Logic[0] and learned  how to reason about
problems through using various branches of  mathematical ideas like
proof theory, model theory e.t.c.
I found this abstract way of thinking about problems clear, & organised. "Mathematical Logic" is diffrent from the kind of Math I was taught,
which was a top down approach to solving problems.
"Mathematical Logic" seems to be able to derive solutions to problems in
a ground up fashion where a solution can somtimes elegantly present its self
as long as you apply correct mathematical properties.
What other techniques do you hackers use to improve your abstract thinking?
[0]: https://en.wikipedia.org/wiki/Mathematical_logic <comment><USER3> Three things I recommend:

1 - Read lots of things unrelated to your field of study. Read about flowers, or art history, or music theory.

2 - Take long walks, get away from the screens and distractions. Walk some place that stimulates thought, like in nature, or in a city, or by a river. Skip the treadmill or places like malls that demand your attention. You need a place to allow your mind to wonder and to process/organize the info you read about.

3 - Dream, in a very literal sense. Do you ever remember those moments right before you fell asleep where your mind gets a bit too creative. Harness that. It has been said that Edison would take naps in a chair with heavy ball bearings in his hand. Right when he was just about to be asleep his hands naturally relaxed and dropped the bearings on the floor waking him. Quickly, he would pop up and recollect on dreams/ideas he just had. Use a similar technique to your advantage, see what randomness your mind designs.

<comment><USER4> I wonder the origin of that story, I've heard a version of a painter who holds a brush and pallette, falls asleep, drops them, wakes up and paints.

And I do love my lucid dreams, at some points of my life they would ruin my sleep but I found them a good trade off.

<comment><USER5> You are thinking of Salvador Dali. He would hold a spoon in his hand and rest it above a plate. When he fell asleep the spoon would fall and make a clang with the plate. Jolting him awake again, he would try to recall whatever was happening in his subconscious right before being startled awake and try to express it on canvas.

<comment><USER6> > He would hold a spoon in his hand and rest it above a plate

I do a variation of that too. And my plate has cereal in it ... The moment I wake up I go: _" oh hello, what's that ... breakfast!"_ \- and instantly I'm in a good mood. It's like a form of meditation I call "bowlfullness"

</comment></comment></comment></comment><comment><USER7> I think such mathematics is probably the best way to improve abstract thinking, so you're on the right track.

Abstract Algebra and Linear Algebra are adjacent fields with a lot of clean abstractions that I believe exercise the same muscles as programming (even if a lot of it isn't directly applicable)

Related comment: [https://news.ycombinator.com/item?id=23152152](https://news.ycombinator.com/item?id=23152152)

i.e. basically linear algebra for engineers is not abstract. Linear algebra for mathematicians is quite abstract, e.g. a 400+ page textbook that doesn't refer to any matrices.

\----

On the flip side, I think mixing abstract thinking with testing/debugging is the ideal combo for programming.

It is a skill to write useful test cases. To explore the state space efficiently.

If your code isn't grounded in real examples, then it may become overly general and not RUN run very well. It's a big danger to abstract before you have enough examples.

And probably the hardest thing that programmers do is debug OTHER people's code, as opposed to your own code.

(I guess you didn't ask about programming, but I'm sort of assuming you are programming by asking on this site :) )

<comment><USER8> How would one get into abstract algebra having flunked High School math very early on? I've been going through Khan Academy pre-algebra and find it incredibly disheartening how little I know. I did manage to get a CS degree but the math taught there is different.

<comment><USER9> This is several days late, but I had this tab open along with many others and I'm finally getting to it.

What is it that you find challenging about math? If it's the actual computation/calculation -- the part where you are finding a numeric answer -- don't worry, that's nowhere to be found in abstract algebra (or any higher level math). Pure math (of which abstract algebra is a part) is about the study of patterns more than anything that has to do with numbers.

In fact, the name "abstract" refers to the fact that it's concerned with abstract collections of things -- for instance, groups. You'll study sets of operations on groups -- if you are able to identify Collection X as a group, you immediately know you can apply theorems a, b, c, etc. to it. For these reasons, the sort of things you are likely learning in pre-alg on Khan Academy don't have much direct applicability.

I think it's an enormously beneficial subject for programmers to study, maybe the only math course beyond the standard discrete math that I think should be required. (I want to add category theory, but I don't feel I can as I only have the barest grasp of the fundamentals myself...) As with all pure math courses, it will quickly move beyond the depth/level you can actively use in programming, but the mind-expanding it does is really great at encouraging the sort of abstract thinking the OP's post is about. It has strong relations to generics, interfaces, polymorphism, etc.

As for how to get into it, I used this book: [https://www.amazon.com/Book- Abstract-Algebra-Second-Mathemat...](https://www.amazon.com/Book-Abstract- Algebra-Second-Mathematics/dp/0486474178).

</comment></comment></comment><comment><USER10> Math is sort of the end of the road for abstraction. If you go any further you drive off a cliff. Take a trip to the cliff and look around for a while.

So-called mathematical maturity lets you think about many domains without considering concrete reality, and this lets you solve a different class of problems. Many foundational computer scientists are or were mathematicians for good reason. Think von Neumann, Knuth, and Turing.

There is a magnitude of difference in abstract thinking between a mathematically mature scientist and a mathematically immature one. Mathematical maturity seems to allow an easy transition from abstract theory to empirical experimentation. The converse does not appear to be as true.

My advice would be to study math directly.

</comment><comment><USER11> As I got further in my Mathematics degree what really made it all "click" was classes on Philosophy. The logic and approach you forms in Philosophy give a greater understanding of how mathematical proofs are formed and how to approach problem solving. A series of lectures from a Philosophy 101 course would do a lot to help with the mindset you speak of so look to any of the MIT, Stanford, etc online courses.

<comment><USER12> As someone who studied mathematics as an undergrad and then intellectual history (with an emphasis on philosophy) postgrad, I second this. I would add too that learning how to write effective philosophy papers is an excellent way to improve your writing, and argumentation, and analytical ability more generally. (I often share the Jim Pryor's guidelines [1] with students.)

[1] [http://www.jimpryor.net/teaching/guidelines/writing.html](http://www.jimpryor.net/teaching/guidelines/writing.html)

<comment><USER13> this is interesting. thanks for sharing! these guidelines seem like they would apply well to science papers, or really, any writing where the objective is to prove an argument or perspective.

</comment></comment></comment><comment><USER14> For actual programming mindset, I think this a learnable skill that I'd love to see a good article on. I see a lot of intermediate programmers try to "abstract" by kitchen-sinking things, such that they end up with a perfect machine that is fairly inscrutable. And then when a change is needed, the machine falls apart and needs to be rewritten entirely.

I think abstraction is about recognizing patterns, but also about recognizing what elements are more likely to change - you don't want to abstract away the changing aspects. In that sense, it becomes similar to creating a model that depends on parameters.

Also, generally, when you are implementing a solution, that solution exists within a context of a problem. If we are simply told to implement a solution, there is a temptation to just trust that the solution will solve the problem - and sometimes we are told to trust that. But if we take a step back in abstraction and fully understand the problem ourselves, we can derive our way to the correct solution, freeing us from having to "trust" that the solution is correct.

Abstraction is just continuing from there. Understand the larger context of the problem, why it is a problem. Maybe you'll discover it isn't, and that the solution isn't actually needed. And so on, if you ask another Why you can discover that maybe another problem is more important to solve, which would _make_ this problem irrelevant.

</comment><comment><USER15> A dirty trick that is used all the time but goes unnoticed is concretizing abstract thoughts. The entirety of abstract maths is just that. Let me provide an example:

You've got some abstract concepts of relationships. How do you go around thinking about relationships? You make them concrete. You do so by first representing them as perhaps, two points on a piece of paper and then drawing an arrow between them. This act of representation is an act of concretizing an abstract thought.

Now you start adding rules to your concrete representation. If you are rigorous about following your rules you almost inevitably end up when Saunders MacLane ended up with Category Theory.

Another example:

Think about computers and what they do. Now try to represent them on paper. Depending on how your mind works, you might end up with something that looks like a Turing Machine or cellular automata. I've not come across anyone who thought long enough and came up with something like lambda calculus, so I suppose Church was an alien.

I didn't use any mathematical logic examples because those examples typically involve historical battles over symbols.

</comment><comment><USER16> I would strongly recommend the book, "The Art and Craft of Problem Solving" \- [https://www.abebooks.com/book- search/isbn/0471135712/](https://www.abebooks.com/book- search/isbn/0471135712/)

It teaches you how to solve [math] problems, but not the kind you've seen in school. The author was a coach for the Mathematical Olympiad, and the kinds of problems he presents are creative, often requiring creative abstract lateral thinking to solve.

> Paul Zeitz studied history at Harvard and received a Ph.D. in mathematics > from the University of California, Berkeley. He currently is an associate > professor at the University of San Francisco. He won the USA Mathematical > Olympiad (USAMO) and was a member of the first American team to participate > in the International Mathematical Olympiad (IMO) in 1974. Since 1985, he has > composed and edited problems for several national math contests, including > the USAMO and helped train several American IMO teams, most notably the 1994 > "Dream Team" which, for the first time in history, achieved a perfect score. > In 2003, he received the Deborah Tepper Haimo award, a national teaching > award for college and university math, given by the Math Association of > America.

</comment><comment><USER17> The most important part of abstract thinking, at least after you get the hang of it, is to then step back and make it concrete and pull at the threads to see how a theory comes apart. The more layers of abstraction you add to a situation the more opportunities for a tiny, tiny error to grow into a larger problem.

If you follow along carefully with the arguments in most classical philosophy in great detail, you notice this more and more: everything has a logical error or assumption eventually and the author typically does not catch their own error.

</comment><comment><USER18> > How to improve my abstract thinking?

The simple answer, is practice. I know this is absurd sounding, but it really is the goal here.

While I agree that you should continue down the path of Math, there's other ways to practice abstracted thinking. Pick up some kind of artistic hobby. Painting, music, poetry, story telling, etc. These are all just things that force you to think creatively. Whatever you find interesting. It probably isn't a coincidence that a vast number of high level practitioners in science were also artists in some form or another (Einstein, Newton, Feynman, etc). Abstract thinking is often associated with connecting ideas from different subjects ( _abstract: disassociated from any specific instance_ ).

Additionally, focus a lot on creating analogies for things you are studying. This has 2 major benefits (to you). #1, it helps you remember. #2, you have to abstract a concept to create an analogy. Remember that the point of an analogy isn't to be precise, but rather to create an elegant means to abstract a concept (this also is why they are good for communication). An analogy primes you to remember a concept, it doesn't describe it exactly. After all, that high precision is difficult to express and comes with a lot of assumptions.

Lastly, another pure math method: study abstract algebra.

<comment><USER19> Agreed. I think the more you push yourself to learn and pursue things that seem abstract to you, the better. As you do so in various fields that interest you (the arts, maths, whatever) you start to draw a lot of patterns around seemingly unrelated things, and I think it teaches you a lot about yourself.

</comment></comment><comment><USER20> I agree with everyone here that maths is the frontier of abstraction but here's my two cents: delving into a humanities or social studies discipline you are interested in. I'm a self taught programmer and studied a history major. I was pretty good at history and got to learn a lot in there, but the most important skill I learned there was to manage abstract thoughts and complexity through reading and writing history essays.

I can really see a difference here with my peers in the sense that it takes them a lot more to understand each other's lines of reasoning both in verbal and written speech, and it takes them a bit more to string together complex ideas when they are too far away from what they were taught (this last bit even affects the way code is written).

I guess any discipline that cares for truthfulness or sound reasoning is useful for this. The most important thing is you enjoy studying it and it conveys complex thoughts. Some other areas besides maths and history I can think of are philosophy, political science, economy and even architecture.

Of course this is N=1, so I'd take this with a grain of salt.

</comment><comment><USER21> Many people have mentioned mathematics, but I'd like to add philosophy to that list. Things like logic and set theory very much overlap with philosophy (and many mathematicians can be considered philosophers). The main reason, however, is that philosophy is thinking about thinking. So if you'd like to think abstractly, while also covering a broad range of topics, philosophy is great!

Good luck.

<comment><USER22> +1. Read some Saussure, Derrida, Foucault.

<comment><USER23> And if you're going to read Derrida, make sure you know your Husserl first...

</comment></comment></comment><comment><USER24> Deliberate practice in abstraction. Forcing yourself to solve abstraction problems at the edge of your current ability. This should be _hard_ and _frustrating_. If it's not, you aren't solving hard enough problems. Do this daily and after a year you'll notice real progress.

<comment><USER25> +1. Deliberate practice—working at the edge of your ability, where you fail at least as much as you succeed—is nearly the gold standard for continual improvement at any practice.

I would amend that do this daily and you'll see progress after months if not weeks.

<comment><USER25> I would also add that puzzles are a fun way to improve your thinking, IMO. My favorite source is [https://www.ocf.berkeley.edu/~wwu/riddles/intro.shtml](https://www.ocf.berkeley.edu/~wwu/riddles/intro.shtml).

</comment></comment></comment><comment><USER26> Semi on-topic mindset related note: be careful about going too far in the direction of elegant "mathematical" thinking. It's good to have certain mental techniques available to you, but real world problems require a certain suppleness/flexibility of mind and willingness to deal with exceptions that don't fit nicely into logical molds. (unless you work entirely in theoretical spaces -- then it's ok because there's no difference between theory and practice)

As someone who was for many years enamored with theory and mathematical elegance (I drank from the wells of lambda calculus and category theory in hopes of discovering something that would set me apart), I had to unlearn much of it to actually make progress in my work. When faced with new problems, I found myself trying too hard to find an elegant solution, and when I couldn't, I was paralyzed. My more resourceful colleagues on the other hand managed to ship yucky but working solutions -- which eventually got less yucky.

I learned that sometimes you have to let go of the ground-up mathematical- derivation type of thinking, and just release practical yet inelegant solutions into the wild, collect data, and then iterate. As one iterates, some solutions will tend toward elegance and others will not -- some problem spaces are just naturally messy and the solution needs to reflect that. If you've ever worked with an ERP, you'll understand how hard it is to unify competing concepts, yet that's what an ERP does with varying degrees of success. (everybody hates ERPs, but different people hate it for different reasons, and on the whole they kind of work)

Take something like Category Theory for instance: it seems like it should lead to amazing elegant solutions, but in practice it's rarely used -- and Haskellers might disagree with me here -- to design solutions (except in rare cases like LINQ). Instead, it's often deployed as a post-hoc gloss to explain solutions that have emerged by trial and error (like SQL perhaps). Its utility is often usually retrospective, i.e. either to verify correctness or to add rigor to existing solutions.

p.s. don't underestimate the value of experience + good taste in producing good thinking. People who design good abstractions are not always deeply mathematical people, but instead are people who have good intuition, like Anders Hejlsberg (architect of Turbo Pascal, Delphi, C# and Typescript), Rich Hickey of Clojure fame (who actually trained as a musician), etc. Guido van Rossum (Python) once said he probably couldn't have designed Python when he was 17 because at that age he didn't have enough experience and good taste in programming languages -- which is why most programming language designers tend to be over 35.

<comment><USER27> Speaking of Category Theory: what can be more _concrete_ than points and arrows between them. (That's the thing about "abstract" math - it is in fact no more abstract, and is often simpler, than the "concrete" math, especially applied math. That's why someone [don't remember who] said that less talented people should stick to working in pure mathematics.)

</comment></comment><comment><USER28> If you are looking for other branches of mathematics, I'd recommend topology and group theory; both can be pretty abstract, and work quite differently than the math you tend to be taught at school.

Otherwise, I recommend learning and using "extreme" programming languages, languages that go very far off your standard language. Examples:

* Lisp: everything is a list

* TCL: everything is a string

* Haskell: everything is pure and strongly types, and you use monads and other crazy stuff

* Rust: on the extreme end of safety through zero-cost (at runtime) abstractions

* Regexes: Just how much you can do with a powerful regex engine (declarative programming)

* Prolog

Finally: studying philosophy. Philosophers have honed their abstract thinking skills to the max :-)

<comment><USER29> >group theory

Or Abstract Algebra as whole including ring and field theory.

</comment></comment><comment><USER30> Lesswrong.com (a starting point is readthesequences.com) is probably worth a look. It's usually not math-heavy (though there are plenty of those as well), but about actually applying the truths we do know to think better. E.g., lots of people know the Bayes theorem (I was taught that in K12), but almost no one actually uses that insight in real life.

<comment><USER31> > almost no one actually uses that insight in real life

I don't know a lot about Bayes theorem but you caught my attention. Why is it the case that no one uses that in real life?

</comment></comment><comment><USER32> It may not be exactly what you had in mind, but poetry and metaphor.

I was a CS major with a Creative Writing minor. I picked the minor as an escape from CS but over the course of my career as a developer it has been some of my most useful time spent. When I was trying to write about a thing in terms of another thing (or reading other people's much better attempts) I would look at the lower level similarities and mess around trying to make the metaphor as tight as possible. Along with that, both writing code and creatively are mostly about constant revision. So both interests kind of played off each other reinforcing that process.

</comment><comment><USER33> A different take -- drugs. Especially marijuana and hallucinogens. Helped me better understand how to think about abstract computations vs the nitty gritty details like pointers. Not for everyone, but helped me.

<comment><USER34> Similar direction but different:

Spirituality, mysticism, religion, "alternate" non-sciency stuff, but also history. When not approached with sceptic mindset but one that tries to understand it can be very enlightening.

I think it trains to think with vague, incomplete and also contradictory thoughts (its bit similar to simulated annealing in contrast to deriving a solution analytical). On a side note, its damn interesting what our heritage has to offer.

Regularly revisit it with some scepticism so you don't get lost.

I suppose.. when logic is located in the left brain hemispere, this other stuff is located in the right hemisphere. Don't fixate on only the one side. Boost it with the help of the other one.

</comment></comment><comment><USER35> Disclaimer, I am in no way affiliated with brilliant.org but am a happy user. Do yourself a favor and invest in a brilliant.org membership (there should be a trial period, but tell yourself if you like it and stick with it you'll consider buying the lifetime membership). Then do all the Logic Courses. You could work your way through their Computer Science stuff after that. They are actually pretty fun and making mistakes is all part of the process and viewing the answers will often correct what you missed. The way it works is you are given multiple choice or fill in the blank questions usually with only one right answer. The problem statements are very exact and taking in all the relevant information is necessary. Then you kind of have to deduce for yourself the answers. Brilliant.org is literally the best investment I've ever made to increase my mathematical ability second only to University where I took up to discrete math. I would definitely do the trial period though because it may not be for everyone. I have mostly used it to review material that I basically should already know so I don't know how difficult it would be for someone approaching it at a perspective of not knowing much about the subjects. But, Brilliant setups up prerequisites for each course so you should know atleast what you could work on before certain ones. Best of luck and I hope someone tries it after this recommendation because I truly do love the platform.

<comment><USER36> @johnsonjo: asking this late --- which university did you do your online distance education at? I'm super interested to know! [[https://news.ycombinator.com/item?id=22176989](https://news.ycombinator.com/item?id=22176989)]

<comment><USER35> Hey no problem with asking late though sometimes people may not respond or they may take a while though I have hacker news replies setup [1], so I sometimes have to get through my 300+ emails per week (mostly marketing emails [just saying I'm not that popular haha]). I actually was doing it at Utah State University (USU) and I was on Campus my distance-ed program was across different campuses for a University that has multiple campuses across Utah. So, I'm not sure if they have many people that do off campus distance ed classes.

I loved my University though. They were accredited for their CS program (not sure how important that is honestly in fact I only learned about that because I had to do an exit interview). Though there are many arguably better Universities in Utah such as BYU and U of U to name a fewer, I've come to believe that pretty much any University will likely give you a world class education. Also Utah State is a research University which is an added bonus, because it helps to have teachers that research in their field. I felt I got a really good grasp on the theoretical principles there. My favorite course was probably Discrete Mathematics at USU. It helped me get a good grasp on abstract thinking (might as well bring that up since this thread is about that). I really recommend anyone take something similar to Discrete Math by starting to go through the readings for the Mathematics for Computer Science course from MIT Open Course Ware and possibly the videos too (OCW) (e.g. [2] or [3]). Reading the beginning of the Math for Computer Science course manual prepared me for my Discrete Math class so well (In fact I ended getting over a 100% final grade because the teacher had to move the grading curve, because likely too many were likely not doing so good). Usually before you take a class like that you need to take Calculus, but really all you need to know from Calculus to complete that class is likely sums and series. Any ways best of luck with your studies and if you plan on doing online education I'm not sure the best University to do it through. I was really glad that I was able to attend University on campus though, because though I can be disciplined I feel like I lack that discipline whenever I don't have enough pressure to keep me focused and not get distracted on other things. Again best of luck in studies!

[1]: [http://www.hnreplies.com/](http://www.hnreplies.com/) [2]: [https://ocw.mit.edu/courses/electrical-engineering-and- compu...](https://ocw.mit.edu/courses/electrical-engineering-and-computer- science/6-042j-mathematics-for-computer-science-fall-2010/) [3]: [https://ocw.mit.edu/courses/electrical-engineering-and- compu...](https://ocw.mit.edu/courses/electrical-engineering-and-computer- science/6-042j-mathematics-for-computer-science-spring-2015/)

<comment><USER36> thanks for your super awesome reply! :)

</comment></comment></comment></comment><comment><USER19> I used to struggle a lot when I first started studying mathematics seriously as part of my Computer Science degree. I could never understood how people ever came up with proofs for problems that seemed completely abstract and foreign to me. Even the very notion of proving a theorum or time complexity itself seemed alien.

It was a painful journey, but in the end I found that it comes through the following:

Practice, a lot. I don't believe that anyone pulls solutions out of thin air. When tackling an abstract problem, people draw on the similar things that they do understand and then leap to the solution they're chasing.

Study the field you're trying to understand. Read over as many examples of solutions to abstract problems, and really analyze why they work. Try to solve your own problems, using what you've observed in those ones. Hop between these two until you start to close the gap more.

In reality, you're always going to make lots of mistakes and the practicing is never going to end. Its all part of the learning, and that's a journey that shouldn't stop.

If you're interested in this field of Mathematical Logic, I suggest you listen and read about it as much as possible, that you try to pursue problems you are interested in, and that you collaborate and discuss things with others. This constant doing, in small quantities but without getting up, will eventually help you see the abstract problems for something that is much more relateable.

</comment><comment><USER37> Systems thinking and system dynamics. Run simulations. Short intro [https://www.bm-support.org/pdfdocs/BMS_BusinessDynamics.pdf](https://www.bm- support.org/pdfdocs/BMS_BusinessDynamics.pdf)

<comment><USER38> Also, [https://wtf.tw/ref/meadows.pdf](https://wtf.tw/ref/meadows.pdf)

</comment></comment><comment><USER39> Abstraction is like a multi story building. The concrete at the bottom is unrefined unprocessed raw sensory present moment experience. Building up, a floor is an abstraction built on top of that concrete floor. The concept of addition could be seen as a first floor. As we know, math builds on to of itself. The farther up the tower you go, the more abstract.

Abstractions require a solid foundation, be it a floor below, or concrete. So, when I struggle with an abstraction, I look at its base parts, identifying what is required to understand the abstraction. What I find is I often do not understand a prerequisite as well as I think I do. Sometimes I have to go multiple levels down to hash something out, but once the abstraction clicks, it becomes effortless and as difficult to think about as any other word I use in English to talk and think.

Getting a solid foundation can be a time consuming process. If you go slow and relax, you'll find the missing pieces and everything will come together.

<comment><USER27> A mental image of a concrete building somehow messes with my attempts to think in abstract terms.

<comment><USER39> Ironic given the metaphor is an abstraction.

A more accurate representation is a mind map.

</comment></comment></comment><comment><USER40> I listen to interviews with thinkers that I'd admire from all sorts of spheres: business, music, film, etc and try to stitch together how they got where they are (make a point to read the books they mention or research the people that inspire them).

It really helps your brain to form pathways to seeing connections that may not be obvious on the surface.

<comment><USER41> I do the same, glad to know there are others!

I don't read as much as I used to anymore, but I listen to podcasts. Pick a subject of even mild interest to me, add a dozen podcasts on the topic. Listen to a few episodes from each podcast and delete the ones that I don't like (for whatever reason). Over a period of time, one ends up with a few podcasts that are thoroughly enjoyable.

There are people who read/listen to extreme views on topics (raw food vs meat, left vs right wing politics, yoga vs weights etc).

</comment></comment><comment><USER42> Read up on topics of interest to you ... join online forums on these topics ... get immersed in the unsolved challenges ... work to solve problems which take time to resolve ... progressively solve ever harder challenges ... talk to people who listen and ask hard questions

Above will get you started ... engaging in abstract thought takes time and focused attention ... coding software can provide a medium to express yourself so can expository long form writing ... before bedtime bring to mind an unsolved question then upon awakening harvest solutions ... that habit can provide feedstock for ongoing evolutionary jumps

over time increase the complexity of these long form projects ... grow them so their course may stretch for days to weeks to months to ...

nurture friendships with interesting folks ... travel wide ... gain inspiration give guidance cherish the moment

</comment><comment><USER43> When I was taking graduate-level mathematics courses, my professor told me that abstract concepts become much easier to wrestle with if we _make_ them real through focused realization and imagination. This has served me well.

<comment><USER44> Would you mind expounding a bit on what "focused realization" and "imagination" mean in this context?

<comment><USER45> We understand the world through our senses and our body. The best way to understand an abstract concept is to turn it into something that we can visualize or somehow "feel" in a tactile way.

For example, sometimes functions feel like a dance to me. The movement of the dance represents the transformation of the domain to the image of the function.

</comment></comment></comment><comment><USER46> I think mathematical logic is potentially a bit of a red herring. I could imagine it's easy to think, "I want to practice thinking logically, surely a good starting place is... logic?" But actually I don't think necessarily involves any more creative thinking or problem solving than any other area of mathematics, and is perhaps hard to appreciate until you've practiced mathematical logic less formally.

I'd suggest something like linear algebra or analysis (in the mathematical sense of formal proofs in calculus). Those are both a bit higher level than logic, but still very abstract.

</comment><comment><USER47> You should do a course in Automata Theory. Check out cs154.stanford.edu

I used the book "Language, Proof, and Logic" which was also excellent.

These courses will formalize concepts and allow you to apply them much better than random anecdotes.

</comment><comment><USER48> By forgetting. Abstraction is the process of focussing on what two (or more) things have in common by forgetting all the concrete details which make them different.

</comment><comment><USER49> pick up a functional programming language and learn its [concept] library, it's a great way to experiment with mathematical concepts while also having something concrete to play with. I suggest Haskell.

P.S. challenge yourself to solve problems with as few lines as possible, that way you're forced to find better (combinations of) abstractions

</comment><comment><USER50> Polya's book "How To Solve It" is the canonical introduction to this topic and applies far beyond mathematics.

<comment><USER51> beat you to it ;)

</comment></comment><comment><USER52> Roughly in order of user friendliness and accessibility:

Puzzles can help introduce very powerful ideas without any baggage like mathematical notation. Smullyan's "Knights and Knave" style puzzles often touch very deep ideas in mathematical logic.[1] _To Mock a Mockingbird_ [2] is probably his most famous book.

 _Godel, Escher, Bach_ has very clear, fun, and memorable descriptions of formal systems and their fascinating properties. After reading that it will be easier to view real world systems as formal systems and to understand the implications of that.[3]

Most of object-oriented programming and entity-attribute-value models can be found in the writings of Plato and Aristotle. For the purposes of abstract thinking, Plato's theory of forms[4] and Aristole's Organon[5], especially its Prior and Posterior Analytics which describe syllogistic reasoning, are probably the most important. For roughly 2000 years, this _was_ logic. The _Theaetetus_ [6] is also a very good introduction to epistemology and the deductive method of philosophy. In a practical sense, there is very little that programmers do in terms of modeling data or systems that does not derive more or sense directly from these two thinkers.

It's only been in the last two centuries that we've improved on Greek logic. Boole and De Morgan for propositional calculus[7], Frege and Pierce for quantification[8], which combine to create first order predicate logic[9]. From their you can either go to second-order logic or to set theory in order to begin talking about collections of things. _Naive Set Theory_ [10] is a good introductory book, although you can jump straight in to ZFC set theory[11] for an axiomatic approach.

Relational algebra, which will be familiar in a loose sense to anyone who has ever worked with a relational database, is a formal theory that can be studied in the abstract[12]. I find the terminology (like "theta join") to be useful for thinking about advanced SQL statements. It's also very interesting to contrast relational algebra with ZFC set theory - many of the axioms are similar, but there are also crucial differences.

Lately, in the last century or so, abstract algebra[13] has proven very useful in modelling all kinds of real-world phenomena. For example, Lie groups in physics, or finite fields in cryptography. Abstract algebra basically strips down numbers to their most basic axioms and generalizes them. In group theory we study structures that have a single operation (say addition) then "rings" allow a second operation (say multiplication) and "fields" allow this second operation to be inverted. It is incredibly fruitful to model your real-world system as an abstract algebra and then to add axioms that fit your system (do your operations commute? Are the associative? Can they be reversed?) because you can then leverage a huge number of appropriate theorems.

The mother of all "abstract thinking" has to be category theory[14] which is so abstract I can hardly even describe it. Nevertheless many people find it a useful framework, with commutative diagrams[15] showing up all kinds of papers.

[1]: [https://en.wikipedia.org/wiki/Raymond_Smullyan](https://en.wikipedia.org/wiki/Raymond_Smullyan)

[2]: [https://en.wikipedia.org/wiki/To_Mock_a_Mockingbird](https://en.wikipedia.org/wiki/To_Mock_a_Mockingbird)

[3]: [https://en.wikipedia.org/wiki/G%C3%B6del,_Escher,_Bach](https://en.wikipedia.org/wiki/G%C3%B6del,_Escher,_Bach)

[4]: [https://en.wikipedia.org/wiki/Theory_of_forms](https://en.wikipedia.org/wiki/Theory_of_forms)

[5]: [https://en.wikipedia.org/wiki/Organon](https://en.wikipedia.org/wiki/Organon)

[6]: [https://plato.stanford.edu/entries/plato- theaetetus/](https://plato.stanford.edu/entries/plato-theaetetus/)

[7]: [https://en.wikipedia.org/wiki/Propositional_calculus](https://en.wikipedia.org/wiki/Propositional_calculus)

[8]: [https://en.wikipedia.org/wiki/Quantifier_(logic)](https://en.wikipedia.org/wiki/Quantifier_\(logic\))

[9]: [https://en.wikipedia.org/wiki/First- order_logic](https://en.wikipedia.org/wiki/First-order_logic)

[10]: [https://en.wikipedia.org/wiki/Naive_Set_Theory_(book)](https://en.wikipedia.org/wiki/Naive_Set_Theory_\(book\))

[11]: [https://en.wikipedia.org/wiki/Zermelo%E2%80%93Fraenkel_set_t...](https://en.wikipedia.org/wiki/Zermelo%E2%80%93Fraenkel_set_theory)

[12]: [https://en.wikipedia.org/wiki/Relational_algebra](https://en.wikipedia.org/wiki/Relational_algebra)

[13]: [https://en.wikipedia.org/wiki/Abstract_algebra](https://en.wikipedia.org/wiki/Abstract_algebra)

[14]: [https://en.wikipedia.org/wiki/Category_theory](https://en.wikipedia.org/wiki/Category_theory)

[15]: [https://en.wikipedia.org/wiki/Commutative_diagram](https://en.wikipedia.org/wiki/Commutative_diagram)

<comment><USER53> Fantastic recommendations. Thank you!

</comment></comment><comment><USER54> Breadth in what you think about and active attempts to connect seemingly disparate pieces of information. IMO, "abstract" refers to something that is a pattern which applies to many things. As opposed to "concrete", which refers to specifics about a specific domain.

And psychedelics tbh. There is a propensity of science that says that among other things, psychedelics improve your ability to connect what you know. [https://www.sciencedirect.com/science/article/pii/S105381192...](https://www.sciencedirect.com/science/article/pii/S1053811920302135)

</comment><comment><USER55> If you enjoyed logic, you might enjoy reading/working through this text[0]. I learned from that book when it was just written, and it remains one of my favorite books/classes. As you say, it was so very different from previous math classes I'd taken, and it opened up a whole new way of thinking for me. Although it was used for a college course, the prerequisites are minimal -- maybe at most elementary algebra?

[0]: [https://www.whitman.edu/mathematics/higher_math_online/](https://www.whitman.edu/mathematics/higher_math_online/)

</comment><comment><USER56> You should read about different thinking frameworks:

\- [https://untools.co/](https://untools.co/)

\- [https://mindfold.co/](https://mindfold.co/)

</comment><comment><USER57> For me, abstract thought comes best when doing abstract things. Particularly reading, camping, cycling, playing/listening to music. As somebody who spends way to much time in front of a computer monitor, I find that anything that takes me away from screens for a few days is really beneficial for mentally tackling big problems.

A great test of how well you understand a (mathematical) concept, is if you can visualise and reason about it when you are away from a desk and doing something else. That said- you can never know all the stuff you want to know, so dont stress about it :)

</comment><comment><USER58> This may be a bit too "abstract" but using mathematics to think about mathematics (ie metamathematics, philosophy of mathematics ...which is just more mathematics) is definitely the way to go.

</comment><comment><USER59> Just learn more math and you'll get all the abstract thinking "workout" you can handle and then some.

But what is your goal? Is this just as a form of exercise?

If so, I recommend going through (really understanding) Godel's Incompleteness Theorem(s). In my opinion, it's very hard but it is something that's doable without an insane level of prerequisites depending on how you approach it. It's also quite interesting and one of capstones of the 20th century, but don't bring it up at cocktail parties.

</comment><comment><USER60> The course _Paradox and Infinity_ recently started on edX. If you start now, I think it's still possible to get a good enough grade for a certificate.

[https://www.edx.org/course/paradox-and- infinity](https://www.edx.org/course/paradox-and-infinity)

</comment><comment><USER61> Listen to audio books in bed when you're going to sleep. Get an Audible subscription. Listen to Treasure Island or Of Mice and Men. It doesn't matter of you're really listening to the story. Just listen to it while you're falling asleep.

Bonus: it will really help you to go to sleep.

</comment><comment><USER62> I did a Maths degree before becoming a software engineer, and honestly I think its really changed the way I think, just in general. There's something about being given a problem, or theorem to prove, and grappling with it until you really start to get a deeper understanding. After spending hours on a single problem, sitting there trying various ideas, getting flashes of inspiration, hitting dead ends, grabbing a drink, coming back and doing it all again. Finally actually getting to the point where it all just suddenly _clicks_ and you realise that actually if you just think about it in these ways the solution is just, well, obvious! It's really intensely satisfying; just a three line proof of "without loss of generality we can assume X, which implies Y, and so clearly Z is true". So satisfying! (Then you realise you still have another nine problems to try to do before tomorrow, oh god...)

Anyway.

To me, it really taught how to tackle Hard Problems, where you do just sit there making seemingly no process for hours/days/weeks. When you first start tackling such problems it can feel really frustrating, but actually with experience you realise that progress is being made when you slowly manage to map out the problem space and get a better intuitive understanding what's going on. I kinda do imagine it as stumbling round in the dark in an unfamiliar place, slowing groping around, hitting dead ends, then slowly but surely getting a mental model of what's around you and how it all interconnects. Once you have that understanding and intuition the problem is often, kinda, easy? Or obviously impossible and you'll need to make some trade offs.

Changing the way you think about progress to be less goal oriented and more about expanding your understanding is really quite crucial to tackling such problems I think. Both just to keep you motivated through the process and stop you from getting discouraged, but also helps you realise when you've stopped making any progress and should take a bit of a break and come back with a fresh mind.

Most of the time this skill is entirely useless, but sometimes it really is quite powerful. I guess working on Matrix is a bit of a special case, but I would never have been able to sit down and spend weeks trying to come up with a new state resolution algorithm, to pick one example, without that sort of experience. I just wouldn't know where to start, and I'd become demotivated by the end of the first day and likely give up (knowing me).

All of this rambling is to say: I think Maths is really something you have to _do_. Reading books about it is interesting and great and all, but if you really want a deeper understanding you have to get stuck, get your hands dirty and try to solve problems. I don't mean problems where you take that cool theorem you just learnt and apply it or figure out how to apply, but problems where you actually have to come with ideas and theories on your own. (Now, I have no idea how feasible that is outside a formal setting and without supervisors, but that's really the dream).

I hope that in some ways helps, even if its probably entirely devoid of practical advice :)

<comment><USER63> Just wanted to say this was a great answer. As an adult just getting back into math it is very encouraging and motivating.

</comment></comment><comment><USER64> I find algebraic geometry really interesting and helps me with my abstract thinking too.

[https://en.wikipedia.org/wiki/Algebraic_geometry](https://en.wikipedia.org/wiki/Algebraic_geometry)

<comment><USER27> Sure, but you may need to learn commutative algebra first...

</comment></comment><comment><USER65> Conversely, I seem to have the opposite problem and not being able to work on anything in the concrete. Always just expanding onto different perspectives and revelations about the systems I am supposed to work with.

Any advice for that?

</comment><comment><USER66> Write down & summarise everything you read. It doesn't have to be thorough and you don't even have to read it again, but somehow putting it down in words clears up any unknown confusions for me.

</comment><comment><USER67> You might like _Teach Yourself Logic_ , [https://www.logicmatters.net/tyl/](https://www.logicmatters.net/tyl/)

</comment><comment><USER68> I've enjoyed working through [https://regexcrossword.com/](https://regexcrossword.com/)

</comment><comment><USER69> Algebra - group theory. I think that it kind of similar to abstract thinking in programming, through I have hard time to express exactly why.

</comment><comment><USER70> Depends on what you are thinking. Mathematical thinking without emotions - <USER2> yield better algorithms/analysis - consumable by machines - not sure about humans. Humans need emotions attached to their thinking. Suppose if we are solving a human problem or building a product consumable by humans - the end goals are different and attached to emotions - delight/happiness/experience etc., Hopefully, I didn't misunderstand your question :)

</comment><comment><USER71> Draw on paper with a pencil.

[https://vimeo.com/6986303](https://vimeo.com/6986303)

</comment><comment><USER72> Read novels.

</comment><comment><USER73> Acid

</comment><comment><USER74> Play Go

</comment><comment><USER51> Most competitive programmers suggest Polya's "How to Solve It". His "Mathematics and Plausible Reasoning" is also good, but longer and more dense.

<comment><USER75> I'm guessing you're not actually Linus Torvalds?

<comment><USER51> I'm not, and frankly I think I need to choose a new name as I keep getting downvoted and I believe it's due to the username lol...

<comment><USER75> Yes, seems likely. It makes it look like you're trolling.

</comment></comment></comment></comment><comment><USER76> Read books.

<comment><USER10> It seems to me that the original poster is already following this advice.</comment></comment>


Orchids: An Ugly History of Beautiful Things - <AUTHOR> https://longreads.com/2019/10/08/ugly-history-beautiful-things-orchids/ <comment><USER2> There was an episode of Misommer Murders around this and the fuss over the flowers in the show now makes a whole lot more sense!

<comment><USER3> Would you please share the name of the episode, or the episode number and season number? I like Midsomer Murders, and would love to watch this particular episode.

</comment></comment><comment><USER4> Such a long read about such a beautiful plant and not a single photo. Shame.

If you're ever in Singapore, I highly recommend the National Orchid Garden situated in the Botanic Gardens.

<comment><USER5> Upvote for the National Orchid Garden, though I wish they had a tour that shows all the work that goes into it. I keep an orchid at home, and while it's easy to take care of, it really only blooms when it feels like it.

</comment></comment><comment><USER6> Mentioned on the article but worth an extra mention: the movie "Adaptation" written by Charlie Kaufman. It's about orchids, adaptation, writing a book about someone writing a book on orchids and also a crime story :)

</comment><comment><USER7> Is anyone her big into orchids? I wanted to learn more about growing them in a data driven way as opposed to the bullshit spouted on the content farm website. Are there any communities out there that provide resources for someone interested in learning?

</comment><comment><USER8> I haven't come across such a delicate, but spicy, read in a long time

</comment><comment><USER9> Off topic, but is anyone else getting getting redirected to phishing sites when selecting text? I think there's a malicious ad highjacking some JS event.

<comment><USER4> Doesn't happen to me, but I assume that must be because I'm running uBlock Origin.</comment></comment>


Volvo pledges to be fully liable for accidents caused by its self-driving cars - <AUTHOR> http://www.engadget.com/2015/10/09/cant-accept-autonomous-liability-get-out-of-the-game-says-vol/ <comment><USER2> Worth noting from the article:

      Google and Mercedes-Benz have made similar pledges, but
      it's not yet clear whether other automakers will follow.

Seems like future is closing in on us.</comment>


"Why don't you sell Triple Town for 99 cents and make tons of money?" - <AUTHOR> https://plus.google.com/105363132599081141035/posts/Lce7wEJApEr <comment><USER2> This is a pretty good take on what being a small indie dev is like. I've been through that exact cycle, of building a portfolio of games, having some big hits fund growing the company, then taking on bigger projects before the inevitable collapse. In our case that collapse actually came from our primary platform disappearing (thank MS for buying Danger) and our failure to pivot well enough into the new hyper competitive iOS market.

So I totally hear his rationale from a game developer's point of view, I really do. But though I'm a developer, I'm also a customer, and I just can't swallow the coin model for games.

I've played Triple Town and thought it was pretty cute, and yes, I'd probably pay 99c for it, maybe even up to $2.99. But I'm not signing up to a lifetime of paying coins to continue playing it long term.

One fundamental issue is that by design, coin based games are going to be 'gamed' to encourage the use of coins, and fundamentally I don't want to participate in a game dynamic where I'm paying for game experimentation with real dollars. It is like me playing a game of chess and having the constant option to drop $20 to buy another queen. Sure it isn't absolutely necessary to win, but it sure helps. Having that dynamic in games just turns me off.

Now I understand the problem of running a sustainable business all too well, having had my own game company go under, but I don't believe this is the solution. I'm not sure what the right one is, and on that front I applaud them for experimenting, but as a customer I personally reject it.

<comment><USER3> This is a really interesting story: [http://www.rockpapershotgun.com/2012/11/03/how-natural- selec...](http://www.rockpapershotgun.com/2012/11/03/how-natural- selection-2-was-saved-and-made-by-fans/)

An alternative way to get a continuous stream of revenue is to develop a fan base so devoted that they are happy to donate money or preorder years in advance just to keep you afloat.

<comment><USER4> Site doesn't work right now, but has an awesome 503 error, powered by [0].

        503 - Service Unavailable
        An Interactive Fiction by Horace The Endless Server Technician
        Release 1 / Serial number 110707 / Inform 7 build 6E72 (I6/v6.31 lib 6/12N)

        HTTP Error
        You are standing at the entrance to Castle Shotgun. The gates are securely locked, with an unappealing sign on the front. The sign reads "Whoops! RPS is having a bit of a wobbly. Don't worry, we'll be back soon!"

        To the left of the gates is a large opening in the wall, which Jim is leaning into. John is perched on a small rock nearby, while Alec and Tim are standing on the other side of the gates. A pile of magazines is scattered in a corner.

        You can see Jim, John, Tim, Alec and a Refresh Button here.

        >

[0] - <https://code.google.com/p/parchment/>

<comment> robert-boehnke You can play it here: <http://error.rockpapershotgun.com/>

For some reason, I the #content container has a width of zero. Try running `document.getElementById('content').style.width = null` in the console to fix that.

<comment><USER5> Ha, nice. Try talking to all four guys.

</comment></comment></comment></comment></comment><comment><USER6> I'm not so sure. As a player, I was initially excited about free-to-play games. I viewed them as a rebirth of shareware, a try-before-you-buy sort of thing. But having played a few, and having had a few games I bought go that direction, I'm not nearly so enthusiastic now. They almost always suck, or turn out to suck after they add in-game purchases. Even the games I would have held up as shining examples of "doing it right" sucked six months later.

These days I'm wary of games that advertise free to play. As if that were something I, as a player, wanted. I see it less as a try-it-we're-sure-you'll- like-it and more of a we-won't-tell-you-what-it-costs and we-can-get-you- hooked-and-you-won't-care-it's-not-fun and maybe a little we'll-keep-changing- it-so-you-keep-needing-to-pay.

There's such strong pressure to have purchases affect gameplay, too. I've seen any number of nice games start out promising that would never happen, and then . . . it happened. I mean, remember when they introduced hats in TF2? Said they'd never, never, never affect gameplay? We know how that went.

So I don't know. For me as a player, that sort of game has an uphill battle to earn my trust. Even if it's awesome now, the pressures are just such that it probably won't be in six months. Not the sort of thing I want to build my cherished family entertainment memories around.

There's also the rather-disturbing phenomenon of a small percentage of people spending an outlandish amount of money on these games. Sure, _some_ of them might be enthusiastic fans, but that seems unlikely to me. Free-to-play games are just . . . not that kind of game. It seems more likely that they're folks with poor judgement, or who are even mentally ill. I don't know, but it doesn't sit well with me.

I'm not a successful indie game publisher or anything, so I don't have a proposed alternative. But I do think I'm not the only one who feels this way, and I'd expect the view to become more prevalent as players gain experience with the model. Free-to-play might be dominant now, but I wouldn't bet on it staying that way.

<comment><USER7> > I mean, remember when they introduced hats in TF2? Said they'd never, never, > never affect gameplay? We know how that went.

Actually I don't know how that went. I play bit of Dota2 which has similar model and Valve has always contested that, in-game cosmetics will never affect game play and so far it hasn't. So I am very curious with TF2 hats affecting game play. Care to elaborate?

<comment><USER8> _So I am very curious with TF2 hats affecting game play._

I am under the impression that some hats have particle effects. If you are playing a spy who is impersonating a character with that kind of hat, the particle effects aren't duplicated.

I would appreciate it if someone who plays TF2 more than me can say how much it affects the gameplay.

<comment><USER9> Well, when TF2 came out, it was laser focused. Every class had a role, and was strong and weak against certain other classes. So now, you throw a bunch of new items, and it loses that. The sniper is weak to spies, that's how it's supposed to be. So then the sniper gets given a shield that makes spies unable to stab him, and a jar that he can throw on the ground and reveal them. Engineers were weak to snipers, but now they can take control of their sentries and manually shoot things outside of the normal range. So the end result is that everything ends up becoming pretty okay against everything. I haven't played the game for a long time so I don't remember everything.

The other issue, which is one of the reasons I stopped playing (aside from me pretty much stopping playing video games in general) is aesthetic overload. I don't like the notion of things being called "purely cosmetic" because appearances have meanings. The 9 classes were designed to be recognizable from their silhouettes alone, which is pretty brilliant. But now you can pile an absurd number of things onto your character, completely changing that. Not only do you not know what your opponent is equipped with anymore, you also have an additional psychological blocker to identifying them. And it's just _tacky_. TF2 was originally a 60s spy movie parody, and I really felt that. Now it's just... everything. It's just a lot less compelling to me.

<comment><USER8> _Well, when TF2 came out, it was laser focused. [...] The 9 classes were designed to be recognizable from their silhouettes alone, which is pretty brilliant._

That's interesting and quite disappointing to hear. In Valve's in-game commentary, they specifically point out that they were trying hard to achieve exactly this (distinctive outlines). It sounds like there's been a complete change for the vision of the game, likely due to personnel changes.

<comment><USER10> As someone who has played 1000+ hours of TF2, I do agree that this is dissapointing. Some items have changed silhouettes, and that can hurt gameplay.

However, TF2 was very much on the right track to have the perfect combination of revenue generating side-items with unchanging gameplay. Just because they've strayed a bit does not mean that it can't be effectively used for other games.

</comment></comment></comment></comment></comment></comment><comment><USER11> I don't think that free to play is necessarily the answer. And I say this as a developer of a free to play game.

The key, I think, is in two things.

The first is having more control over your ability to distribute the product in the long term, and cheaply. The retail model meant that old games didn't have any opportunity to continue to get sales. Digital distribution means that old games continue to be available, and they can continue to make quite a lot of money.

The ability to distribute titles yourself means that you don't need to do a big hit all-on-day-one launch to make a sustainable living.

The second thing is the ability for some players to pay more money than others. The free to play model is great at this, but it isn't the only way I think that this can happen.

We have the ability for someone to pay $1000 to become a "Diamond" supporter which gives someone the ability to design a unique item (with guidance from us for balance reasons). They do not get given a copy, it's an item that is now available for the entire player base and enriches the game by providing more content for the players.

This kind of piecemeal support for specific purposes is an interesting area that I think could grow in the future.

The overall message I guess is getting away from the need for a big launch then slump, and moving to something that grows and is sustainable for the long term.

<comment><USER12> Big spenders or "whales" are much ignored when considering how to make money with a game. There really are people out there that are willing to spend thousands a month on a social game. You could even think that all the other players merely exist in the game to entertain that small slice that really brings in the money.

In my own apps with virtual currency I could see this only in a small way as the incentive was low to spend a lot, so this is more based on the experiences I have heard from fellow devs.

<comment><USER13> I believe it has been widely recognized that Zynga, GREE, etc earn most of their revenues from "whales". And I think it's an ok practice. But in order to get the money from the whales, it often seems that the rest of the players (the 99%, if you wish), have their experience hampered by constant dangling of offers in front of you. As a player, I'd rather pay a small sum once to avoid the virtual currency - and find other ways to create whales (e.g., as suggested, more like content creation, sponsoring and some vanity items).

<comment><USER14> >And I think it's an ok practice.

I don't. I suspect the 'whales' aren't the 1% that Occupy Everything talk about (the richest 1%), but rather a mix of people who may be able to afford the addiction, but many that are not.

It's probably akin to dealing addictive drugs or promoting irresponsible gambling. It might be legal, but I think it's slightly predatory and on the grey side of ethics/morals/karma or whatever you like to think of as 'do good things, not bad' to others.

<comment><USER15> Do you similarly oppose all luxury brands? There's no quality difference between a $5000 LV handbag and a good $100 one exception fashion, trends and branding. Once you get past about €100/bottle, quality of wine making process rarely increases, it's all just hype.

If someone can sell a $1000 handbag, why can't I spend $100 on my super-duper legendary Diablo 3 item? It's all artificial scarcity. People who spend money any kind of luxury consumer goods rarely get quality. My mechanical watch is worse at telling time than a quartz watch 1/1000th the price. I don't go to Zürich with a tent because of that.

<comment><USER16> > There's no quality difference between a $5000 LV handbag and a good $100 one > exception fashion, trends and branding

While I understand and perhaps agree with your larger point, I have to disagree with this claim. LV stuff is expensive, yes, but the product is very good quality, and comes with what is essentially a lifetime warranty.

Yes, LV is several times the price it "should" be. Problem is that everything else is also several times the price it "should" be. In the larger context, I don't really think LV is particularly bad value, or that the sale price/actual cost multiplier is that much different.

And there is simply no such thing as a good handbag for $100, for pretty much any definition of "good" (substitute briefcase if you are male). To sell at $100, the manufacturing cost of a handbag would have to be maybe $10 or $20 max - whatever you think about LV you cannot possibly claim they cost only $10 to make.

<comment><USER17> [http://www.llbean.com/llb/shop/73142?feat=504163-CL2&pag...](http://www.llbean.com/llb/shop/73142?feat=504163-CL2&page=women- s-microlight-tote-bag)

$99.

Lifetime guarantee, no questions asked, return anytime.

Now it's not leather, but LL Bean and Jansport and REI do make long-lived quality bags.

<comment><USER16> I don't want to sound like an asshole but the brands you mention are all "deep budget" brands and have no design credibility whatsoever. The idea of a professional woman bringing a Jansport bag to the office is totally unthinkable. They are not even remotely comparable to an LV handbag.

The link you quote is to a tote, which is suitable for perhaps taking stuff to the beach. You will not find any professional women coming to the office with this bag, unless it's filled with gym gear or something.

<comment><USER18> _have no design credibility whatsoever_

So you pay 10x more for _design credibility_ , rather than something that actually affects the quality or utility of the item?

 _The idea of a professional woman bringing a Jansport bag to the office is totally unthinkable._

Again, you are comparing the items on intangible benefits which are clearly little more than an emotional feeling telling you that brand A is inherently better than brand B (regardless of the actual item in question).

Promoting an item that is 10x more expensive than another based solely on intangible properties like _it has design credibility_ or it's from an in- fasion brand and that using anything else is simply _unthinkable_ is no better than having me pay 10x more on a game than the average player does.

I, for one, find telling me that I have to buy a certain brand or design that's currently in fashion because not doing so would be unthinkable or I would lack some kind of credibility or the items _just don't compare_ (even though the items actual tangible properties are not even discussed) as exploitative when these items cost so much more than the tangibly-comparable items.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER19> This article has to be one of the most honest, rational, and clear eyed review of what it takes to be successful, long term (10+ years), as an independent game developer. While 4-6% of the talented game developers might be able to be successful playing the hit-game increasingly backloaded with more expensive collateral, the other 95%+ would be well advised to read Daniel Cook's article. And then read it again.

<comment><USER20> I only wish entrepreneurs doing any social/mobile/web app would read it. (I think the lesson, evaluating different sources of income, applies to more than games.)

<comment><USER21> The ones that think about how closed source software is evil should read it as well.

All forms of software development are fine, as long as the developers manage to have some form of sustained earnings from it, which is not so easy as many think.

<comment><USER22> So it pays a salary, therefore it's moral? Seems a terrible argument to me.

<comment><USER21> So now closed source software is immoral?

I really love first world problems.

<comment><USER22> That's irrelevant to the quality of your argument.

<comment><USER23> I think I can be of service here...

pjmlp stated "All forms of software development are fine, as long as the developers manage to have some form of sustained earnings from it, which is not so easy as many think." .. in which, in context, he likely meant that those who are inclined to look askance at closed-source companies should realize that there is much sustained value to be derived from such activities. Our community tends to frown on people who advocate the Jim Gray[1] closed- source perspective, so pjmlp was naturally inclined to be defensive.

icebraining was simply taking issue with the portion that reads "All forms of software development are fine, as long as the developers manage to have some form of sustained earnings from it" which, if taken literally, suggests that extreme cases like software that kills kittens is morally good as long as someone makes a buck from it. I am pretty sure that pjmlp did not mean it in exactly this way.

[1] [http://www.infoworld.com/t/platforms/microsoft-exec-open- sou...](http://www.infoworld.com/t/platforms/microsoft-exec-open-source-model- endangers-software-economy-582)

<comment><USER21> My point is that open source software usually only works with types of solutions where you can build consulting services with, or force the clients to use some kind of software as service.

In many markets that require packaged software like the desktop, usually only closed source software offers a sustainable business.

In the end, if you are able to earn money with closed or open source software depends on the target market of your solution.

<comment><USER22> What I think you don't understand is that such considerations are irrelevant to someone who considers the distribution of closed source software to be wrong.

Let's change your argument:

 _Safe driving advocates should understand that safe driving only works with types of commuting paths are relatively short._

 _In many places where the commuting is rather long, usually only reckless driving offers a way to get to work._

 _In the end, if you are able to maintain a job by driving safely or recklessly depends on your commuting path._

Does this offer a valid argument for driving recklessly and putting other people in danger?

Of course, I know you find this ridiculous because you don't consider distributing closed source software to be wrong, therefore it's stupid to compare reckless driving to it. But if you're trying to appeal to the people who do find it wrong, that argument simply doesn't make sense.

<comment><USER24> So what you're saying is that it's pointless to argue with such people because they're not arguing logic but rather dogma? I agree.

<comment><USER22> Would you support slavery if I showed you that it's much more efficient than paying people?

It's not about being illogical. It's about attributing different values to different things. You may call it dogma if you want, but it's not different than any moral principle.

Maybe your morality is purely based on logic, and if so I'd be genuinely interested in knowing more about it. Or maybe you're amoral, I don't know. But most people have some core guidelines in which we base our decisions (and build logical moral codes upon) which can't be explained logically.

<comment><USER24> >Would you support slavery if I showed you that it's much more efficient than paying people?

No.

>It's not about being illogical. It's about attributing different values to different things.

No, it's about extremism. Dogma. Closed source is the ultimate evil and will destroy the world! It's not practical. Really, why would absolutely everything need to be open source? The percent of people who actually read the source or actually _change_ something based on it being open source is line noise. Practically speaking, there's little difference in the freedom because it's not exercised in most cases. And in the cases it would be, access to the source code can be (and is, very often) bought.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER25> The business model should fit the design of the game, not the other way around. If you try to force a freemium model into a traditional game, you cheapen the whole thing. The quality of your game design should be your selling point, not cheap in-game nags and enticements. It's like if Apple subsidized MacBooks with on-screen advertising. Sure, it could make a buck, but if your core vision is a quality product experience, this goes totally against that, and it defines your brand into something you may not have hoped for.

On the other hand, if your priority is to create a profitable entertainment product, and you'd like to capitalize on the enticement of a well-designed in- game purchasing system, then you should go all the way. If it's to succeed financially, the purchasing aspect of the game has to be the core in which all major design decisions are measured against. If you want to switch to a traditional single-sale system, you have to alter the game design in extreme ways.

Business models are not interchangeable within games, because a freemium system is inextricably tied to the game design.

As someone who hopes to see more games that are made first as a game, and second as a product, I'd like to say that a quality-first focus can carry your game to success, if you have the ability to execute. As long as you don't overextend yourself, like the blog post stated, you should be able to continue making hits if you can maintain quality in design and execution.

</comment><comment><USER6> I checked out Triple Town, curious what sort of game someone looking for both strong ties with players and recurring revenue would produce. What I found was a game with a single $4 purchase that unlocked everything. That definitely suits me as a player, but I don't see how it constitutes recurring revenue. It looks and feels like an option to just buy the game. If it turns out not to be, I'll feel betrayed.

Am I misunderstanding the model here? Is the 'recurring' aspect supposed to be from players as a group--a certain percent converting on a monthly basis, without publicity events? Is what clearly looks like a 'purchase game' to me not intended as such? Will I sit down to play some evening only to find a warped experience that's grindy and lame without an infusion of coins? Or is all this talk of free to play really about fully functional trials--asking me for $4 after I'm sure I like the game rather than $1 on a hope? (Something which seems sensible, but I don't see how it would help with a boom/bust cycle.)

<comment><USER26> I'm not super familiar with the game either, but since you can buy $5 worth of coins, I doubt the $4 actually unlocks everything.

<comment><USER6> Oh! I completely missed that you can buy coins.

I really ought to switch my default association with coins in games from "game mechanic" to "real cash". The times, they are a' changin'.

</comment></comment></comment><comment><USER27> Lovely, insightful article.

Tiny nitpick; I think his characterisation of Minecraft is missing the cult aspect:

> (And before you say 'Minecraft', let's give it another decade. :-).

And immediately after:

> Imagine free-to-play games as practiced by a private company that makes > games with long term retention for passionate players in a tightly knit > community.

Now simply snip the very first part of the first sentence:

> > Imagine <snip> a private company that makes games with long term retention > for passionate players in a tightly knit community.

.... that's Mojang, right?

<comment><USER28> >.... that's Mojang, right?

Not really. Mojang could and should do a _lot_ more to leverage Minecraft. I get the impression that Notch unexpectedly wound up with a huge infusion of cash and didn't know what to do with it besides hire a few friends and make an MMO based on programming microchips, complete with its own assembly language.

The amount of torture they put the Minecraft Coder Pack guys through is atrocious. There is no reason why MC should not be "source available" with some creative licensing and host a Steam Workshop-esque mod management center, play Valve and take a cut of each purchase.

All the community has to go on is the Twitter accounts of Mojang's employees and /r/minecraft. Minecraft is awesome, but it's painful to think of the potential that's wasted there.

<comment><USER29> As a involved member of the Minecraft community. I can tell you that there is work being done on a Minecraft API, but I have no clue on a ETA. Also, I don't think they really have any plans on how to monetize things.

</comment></comment></comment><comment><USER30> Let's have a look at the immoral gameplay checklist:

Timed energy: Check

 _Triple Town is free to play forever. Eventually, you will run out of moves, but they replenish for free if you wait a while, and you can also buy more moves with free coins that you earn in-game._

Incentivized ads in-game: Check (wrong for both the player and the advertiser)

 _Update: we've added a 2-minute mode that you can play free, forever, as much as you want, by watching advertisements in between play sessions._

This is the real price of the game:

 _If you want to eliminate the move counter altogether, there is a one-time fee for lifetime unlimited moves._

Sorry to be blunt, but make a game with real value - not a casual puzzle game with a limited move energy - and the players will buy it.

For some nice mobile packaged games see Avernum and Avadon, Silversword, Mission Europa or The World Ends With You and Ghost Trick.

<comment><USER31> "Sorry to be blunt, but make a game with real value - not a casual puzzle game with a limited move energy..."

Have you played Triple Town? You can argue about the ethics of how the developer is making money, but the gameplay is ridiculously solid. Casual or not, it's a genuinely good, original game with a reasonable amount of depth to it.

</comment></comment><comment><USER32> His points are well taken, but as I player I refuse to participate in this business model. On the other, I _would_ buy this game for more than one dollar, because it looks like it's worth more than that. Too bad.

<comment><USER33> My objection to this model is that the way it's usually implemented means that I can circumvent any challenge in the game by spending more money. This completely upends the effort/reward equation for the game and makes me feel like I'm just a monkey playing a slot machine.

<comment><USER34> It really hinges on whether the game is a discrete artwork, kind of like a book or a movie, noone wants to have to pay to see the ending(pay $10 to defeat the boss), or whether it is a developing story and the Pay to play choices are analogous to something which makes sense, i.e. pay your taxes or else you become an enemy of Captain Hector.

</comment></comment></comment><comment><USER35> I don't work in the mobile-games space myself, but it feels to me like the real problem here is the massive collapse in accepted prices that market has seen.

If people were willing to spend $10 on mobile games -- which is still 80% less than what AAA titles on console and PC cost! -- the "hit-driven" model he describes would be much more tenable. But when everything has to cost 99 cents there's just no way for anything other than a truly massive, once-in-a- lifetime hit to be worth it financially.

<comment><USER36> Blame Rovio, Tiny Wings and Whoever makes Wheres My Water etc.

They had hit games, made sequels and therefore had the power to push the market value back up again (even by some small increments) but instead they chose to sell for the smallest amount Apple allows again.

<comment><USER37> No publisher singlehandedly has the power to push prices up.

If they raise the prices, they'll sell fewer copies. Given that the number of downloads is the primary way to get exposure on the app store, free games have an edge over paid games, and cheap games have an edge over expensive games.

It's my belief that you'll sell more than 4x the copies at $1 than $4. This higher revenue coupled with the increased chance of exposure in the app store makes it a no-brainer.

<comment><USER17> > It's my belief that you'll sell more than 4x the copies at $1 than $4.

That's a horrible thing to believe without testing. There are many experience reports of profit boosts when changing price from $1 to $3, for example.

</comment></comment></comment></comment><comment><USER38> I find this discussion very interesting. I have been working on a series of educational apps (game-ish) for children, mostly for iOS now. I can't bring myself to place ads on these apps or otherwise monetize other than simply selling them for a fixed price. One approach I have taken is to have some of the apps available for free while the others are not. The theory being that the free apps might drive customers towards the paid apps. Too early to tell if this is a good strategy.

In reading this my concern is almost exactly that of the author. I am interested in creating reasonable long-term revenue sources. They don't have to be hits, all they need to do is trickle in a reasonable level of income per month at a reasonably consistent rate. I'd be interested in hearing from others who have done this and their opinions on the best approaches to making this happen.

</comment><comment><USER39> This dev is 100% right. Games as a service are probably a more sustainable way to go than a $1 sale and you're done. Most great businesses survive on repeat business - Apple customers tend to buy multiple iphones, ipods, ipads, and macs. Microsoft customers tend to buy multiple PCs or copies of Windows and Office. Google customers tend to keep buying ads and users tend to keep clicking them.

A single sale, whether its $1 or $50 means you have to keep making new things to make more sales, vs. a service where you get paid in microtransactions or subscriptions or both allows you to keep selling to existing customers. The LTV is probably higher per customer and it's cheaper because you don't have to keep advertising or advertise as much to get the next sale from an existing customer.

</comment><comment><USER40> Too bad he only mentions Minecraft in passing, because in some ways I think it tries to learn from the same problems: It tries to stay fresh to be able to attract new buyers, and it's so open-ended that it has a lot of replay value. So it still sells quite handily (the speed seems to have slowed down somewhat, but a few days ago, it was announced that they had sold 8 million copies for PC - and that doesn't count the millions of XBox 360 copies at all).

Yet it is quite different: It costs money once, and you get updates for free - and there's no in-game market of any sort, whereas the OP wants no money upfront and tries to get people to buy in-game stuff.

<comment><USER41> But he DOES mention Minecraft, by saying to see what it's like in a decade. Now, if there were 10 examples like Minecraft, then I don't think he could dismiss it so freely. But with a single exception... it is reasonable to consider it an outlier.

</comment></comment><comment><USER42> So... what's the business model? Do his games have ads in them? Upsells? Something else? "Free-to-play" doesn't sound like a compelling long-term standalone strategy, given my (non-gamer) assumptions about that term.

<comment><USER43> F2P means you don't pay upfront for the entire game but instead pay for in-app purchases (items for your character etc).

<comment><USER44> Exactly. Check out Jetpack Joyride on iOS or Android to get an idea of what the business model looks like.

<comment><USER7> There are really two types of F2P models (possibly more). One where by paying you can actually unlock things that affects game play. For example, League of Legends. You can pay to unlock champions and that obviously affects your gameplay. Or, Eagles in Angry bird. You can use an Eagle to get over a difficult level.

There there is - TF2 and Dota2, F2P model. Where you pay to buy cosmetic items, but it does not affect game play one bit.

<comment><USER45> I would say a 3rd type are games like Dead Trigger and most of the "-Ville" type clones.

In those games, you can play without spending real money, but it's going to suck and not be as fun. These are the types of games that have the most backlash because they just seem so "greedy".

In games like League of Legends and Angry Birds, you don't need to spend money to get the real game experience. You can still play just fine as a free player and spending money seems more like a bonus instead of a necessity.

</comment></comment></comment></comment></comment><comment><USER46> To nitpick just a little, didn't Blizzard have significant success producing packaged hits for over a decade before WoW?

<comment><USER47> Yeah, and he seems to ignore Id Software too

<comment><USER48> didnt Id make most of their money with the licensing of their engines (id tech 1-5)?

<comment><USER49> Interesting question. According to this site: <http://doom.wikia.com/wiki/Sales> between 1993-1999 Doom and Doom II sold a combined 4 million units (gross over $120 million worldwide). Not sure what they made from licensing.

</comment></comment></comment></comment><comment><USER50> At some level you have an average revenue per user.

If you charge up front some reasonable multiplier of the net present value of that average revenue per user, what is the difference if it's spread out over 10 years or immediate?

I guess my point with that is that as a user, I see free to play in general as being somewhat duplicitous. If it has a price tag on it, I can buy it or not. Even DLC, bad as it may be, has that sort of thing going on. But 'free to play' really means 'I won't tell you how much this will cost you up front'.

The bottom line is that your game has to be _really_ good to make money, because there are so _many_ games out there and many people want to make games, going so far as to spend large amounts of their free time doing it.

Competing with 'free labor' is hard to do. There's no silver bullet, and no business model magic will change that.

It's the same as being a rock star musician, or a professional athlete.

</comment><comment><USER51> There is a lecture about Triple Town's monetization model that is available online, where they discuss what they did wrong with Triple Town and what they learned from it: <http://www.youtube.com/watch?v=UH0-9url3KY>

</comment><comment><USER52> Everything he says is spot-on, but what's unfortunate is I'm not sure how applicable it is to Triple Town.

I adore Triple Town. It's the perfect combination of casual "pick up and play"-ness with meaningful and deep gameplay, layered with a fantastic visual aesthetic on top. It's one of the only F2P games I've happily spent real money on.

That being said, it doesn't strike me as an evergreen, "I want people to be active players for ten years" game. Its match-3 mechanic is fantastic, but once you get tired of it you stop playing. When it first came out a lot of my friends were spending hours a day on it for a solid week or two, but I don't know a single person who didn't essentially lose interest and completely give it up within a month.

Spry Fox is clearly trying to combat this fatigue by adding in new gameplay modes, but anecdotally that hasn't done anything to overcome the fundamental problem of people getting tired of the core mechanic. It's still a great game, and I still recommend it zealously to friends asking for iOS game recommendations, but I find it hard to believe that it'll be able to accumulate and sustain a highly-engaged userbase in the long term.

</comment><comment><USER53> I was interested he didn't point out that having a hit free game != having a hit paid game and the conversion rate form free players to paid is like catastrophically small. additionally free games spread via word of mouth way more virulently because they are free, everyone can try. to spread a paid game you need EACH damn person to pay for it, the word of mouth won't even spread as far. I think anyone who even thinks a 1% conversion rate of fans is insane based on no data. Based on data I'd bet its much much less than 1%. Which is why most paid games have to drop a metric fuck ton of $ on advertising. Building sized 10 storey starcraft 2 poster ads aren't free nor are super bowl tv slots for WoW ads. Same for books and media which is how we then end up in the publisher model system. Publishers front a ludicrous amount of money and pump ass loads into advertising to get the word out. That replaces all the free word of mouth and at least the idea of the game reaches a more optimal maximal audience. Still small conversion but yeah.

</comment><comment><USER54> This sounds like a slight-of-hand argument.

How is "free to play" design anything other than a lottery ticket of another kind? Sure, if you _get_ a free-to-play hit, it's likely easier to quit your day job while resisting the siren call of "grow the company". (because the revenue doesn't all show up at once)

But what are the odds of having a free-to-play hit? What are the odds of keeping it going? Are they even as high as the odds of having a traditional game hit so big that its revenues could support a developer for several years? (if one judiciously sat on the up-front revenue and refused to grow the company)

And by using the broad term "free to play" he's casually conflating the worst of in-app practices ("pay to win", "pay for moves") with the defensible corners that just graft on-going revenue onto largely packaged games ("pay for digital hats", ad-supported gaming).

I've never played Triple Town. I don't know where it falls on the spectrum of "digital hats aren't hurting anyone" to "nice skinner box you've got there". But it seems to me these are very different things and the sins of the latter can't be excused by allusions to the harmlessness of the former.

And beyond all that: The hit-driven nature of game development is no different than in any other medium where people try to create for a living. "One Hit Wonders" are the vast majority of writers, musicians, artists, moviemakers -- even toymakers. Are all those industries "anti-creator" too?

And while free-to-play may not be anti-creator, it incentivizes the worst aspects of creation: stagnation, repetition, pandering, conditioning, etc. And while maybe that makes it easier to run a business, it looks anti-art to me.

Which is to say: in saying it enables developers to provide a lifestyle hobby for their players, it looks more to me like it's going to kill the hobby for everyone.

</comment><comment><USER55> You can make a good living off of fixed price games - micro-transactions have only become popular in the past 5 years or so (at least in the US). The game industry was very profitable long before micro-transactions. Does not matter if you are doing mobile, PC, etc. You probably will not make _as much_ money, but you at least can feel guilt-free about your work (if micro-transactions do make you feel guilty). Many fixed-price games have made millions of dollars on mobile (for games that cost a few hundred thousand to produce, at most).

All that said, I am not against micro-transactions. I am against them when there is no other reasonable way to play the game though, or they are psychologically manipulative. I have probably spent a few hundred dollars on micro-transactions, and the experience left me feeling empty (not unlike a washed up drug addict)...which is why I refuse to buy any more games that use this method in an exploitive manner.

</comment><comment><USER56> On a wholly irrelevant side note, Daniel Cook looks like my identical twin. I didn't make the connection with Triple Town and got a nasty fright when I clicked on the link.

</comment><comment><USER57> I'm surprised Guild Wars (especially 2) hasn't been brought up. I don't know about a game like Triple Town, but ArenaNet's sort of hybrid model seems promising: up front fee for a great, complete game, and more opportunities with the "coin model" (gems). They also have e-sports going for them, which is one of many things that encourages the long term relationship that Daniel mentions.

</comment><comment><USER58> Most of the games I make are free to play and have a resource that can be earned as well as paid for. This allows the player to buy time. Time that would have been spent earning the resource. So, if you are a patient player you can play free with ads, if not, buy some of the resource, and I'll remove the ads. This model has worked very well.

</comment><comment><USER59> For a well thought free-to-play model generating tons of money, I would nominate World of Tanks, a MMO PC game.

</comment><comment><USER60> Well, I wanted to try Triple Town, but on facebook I see this: "This app may post on my behalf, including your high scores and more." Sorry, that's not something I'm willing to "pay".

<comment><USER17> It is spyware on G+ too:

""" Triple Town is requesting permission to: View a list of people from your circles, ordered based on your interactions with them across Google """

</comment></comment><comment><USER61> And people said developers would not make money on OUYA since it only allows the free-to-play model, when in fact these type of games have been topping the charts in grossing income for a while.</comment>


Are great programmers hired or made? - <AUTHOR> http://rc3.org/2009/04/22/are-great-programmers-hired-or-made/

<comment><USER2> Self-made

And if you don't like doing something, you won't invest yourself in getting better.

And if you love doing something, you won't really mind the drudgery of getting better.

</comment><comment><USER3> People are great programmers when they're working on something that they're interested in and the feel like they're making progress on something, and learning things from other great programmers. Hiring is part of this, because not only should the employer (meaning the team members) be evaluating for this but the potentially great new programmer should also be trying to determine if this is somewhere they can be great.

</comment><comment><USER4> Having been in the "real world" for a while (graduated college recently), it's been striking to me just how many people in the world aren't self-motivated. My memory of the Googlers I've worked with suggests that Google tends to end up with more self-motivated people than average, and maybe that's at least part of what they're filtering for?

</comment><comment><USER5> Made.

Smart. Motivated. Works well with others. Has passion. Good problem solver. Detail oriented. Able to focus.

In order to be a great programmer, how many of these are important? All of them.

How many are necessary? None of them.

I once had a calculus professor who said, "Many students are simply unsuited for the sciences."

I disagreed with him then, and after many years of work experience, I disagree with him more than ever. I firmly believe (with some exceptions) that almost anyone can become great (or at least very good) at almost anything. I've seen it over and over again.

I have worked with hundreds of programmers over the years and screened thousands of others.

Almost all of them consistently delivered substandard work. Not because they weren't smart or motivated or capable. More likely because they weren't taught properly and were in terrible environments.

Teach someone how to do the job properly, give them an environment in which they can thrive, give them a chance to do quality work, and treat them like human beings. Then watch what happens.

But companies are too stupid or lazy to do this, so they think they'll just hire talent and dump them into their already sour environment. Fix the environment and let regular people become great.

Made.

<comment><USER6> But from the side of the company, how do you determine if an applicant is unmotivated or incapable as opposed to just unchallenged and stuck in unproductive environments?</comment></comment>


Ask HN: How should i decide which JavaScript module to go with for my Product? - <AUTHOR> Hey we are trying to create an enterprise grade product and the Stack we are going on with is : Node (Express) for backend, Angular JS for front end and MySql as database.
Now the thing thats eating us away is which modules from npm libraries to choose, whether they would be availible for long run or not.
For example, we have decided to work on SequelizeJS as ORM for MySql database.
Now while creating authentication service for Facebook, Google we again face this problem for which module to go. We have some choices like Passport.js but we are unable to decide and find a metric based on which we can take a decision. If you guys have any experience then please consider helping us. <comment><USER2> One useful metric is simply the number of downloads it has on npm, and passport has a lot of downloads there: [https://www.npmjs.com/package/passport](https://www.npmjs.com/package/passport)

</comment><comment><USER3> Passport.js (mostly by word of mouth, I only used it breifly) seems like a robust sign in solution.</comment>