Programming vs Go

General conversations about Go belong here.
User avatar
LokBuddha
Lives with ko
Posts: 180
Joined: Sun May 16, 2010 10:15 am
GD Posts: 0
Has thanked: 6 times
Been thanked: 4 times

Programming vs Go

Post by LokBuddha »

Which one is harder, Programming or Go, in term of learning progress and time to become competent say 1d amateur in Go as in Programming? from the perspective of programmer and non programmer.
Kirby
Honinbo
Posts: 9553
Joined: Wed Feb 24, 2010 6:04 pm
GD Posts: 0
KGS: Kirby
Tygem: 커비라고해
Has thanked: 1583 times
Been thanked: 1707 times

Re: Programming vs Go

Post by Kirby »

There is no "1d" in programming. Can you make a more specific bar for competency in programming? That would make it easier to answer the question.
be immersed
User avatar
emeraldemon
Gosei
Posts: 1744
Joined: Sun May 02, 2010 1:33 pm
GD Posts: 0
KGS: greendemon
Tygem: greendemon
DGS: smaragdaemon
OGS: emeraldemon
Has thanked: 697 times
Been thanked: 287 times

Re: Programming vs Go

Post by emeraldemon »

I think the most important difference is that playing go is ultimately one thing, where programming is many things. Once you progress beyond the basics there are a wide variety of tasks and concepts in programming, and becoming an expert in embedded systems, for example, won't necessarily give one that much of an advantage in creating a GUI (or formal verification, or scientific computing, or databases or networks or security or algorithms or). There are some deep concepts that can be helpful in a wide and surprising set of problems, but it's pretty different from go, where there is almost no variation in what it means to play (maybe you can specialize in blitz vs slow games or something).
Kirby
Honinbo
Posts: 9553
Joined: Wed Feb 24, 2010 6:04 pm
GD Posts: 0
KGS: Kirby
Tygem: 커비라고해
Has thanked: 1583 times
Been thanked: 1707 times

Re: Programming vs Go

Post by Kirby »

emeraldemon wrote:I think the most important difference is that playing go is ultimately one thing, where programming is many things. Once you progress beyond the basics there are a wide variety of tasks and concepts in programming, and becoming an expert in embedded systems, for example, won't necessarily give one that much of an advantage in creating a GUI (or formal verification, or scientific computing, or databases or networks or security or algorithms or). There are some deep concepts that can be helpful in a wide and surprising set of problems, but it's pretty different from go, where there is almost no variation in what it means to play (maybe you can specialize in blitz vs slow games or something).



Maybe I'm playing devil's advocate, but could you make an analogy between having specific Go knowledge (opening patterns and/or joseki) to being an expert in different programming areas? For example, if you study a particular variation of the mini-chinese opening, you could consider yourself "an expert" in that particular variation. It might not win you games, but it would be something to add to your tool belt as a go player.

It might then be said that it is not tidbits of "go knowledge" that make you a good go player, but rather reading ability, etc. Perhaps the same argument could be made for programming - good programmers are good at logic and solving problems, regardless of their expertise in that area... Maybe?
be immersed
schawipp
Lives in gote
Posts: 420
Joined: Mon Nov 12, 2012 1:13 am
Rank: EGF 4k
GD Posts: 0
Has thanked: 75 times
Been thanked: 58 times

Re: Programming vs Go

Post by schawipp »

IMHO the main difference is that in Go mistakes make you lose a game while in programming they make you start a debugger.
John Fairbairn
Oza
Posts: 3724
Joined: Wed Apr 21, 2010 3:09 am
Has thanked: 20 times
Been thanked: 4672 times

Re: Programming vs Go

Post by John Fairbairn »

There may be a parallel in martial arts. It has been claimed that when weaponry reached an unsurpassably high standard in the Far East (e.g. the Japanese sword), martial artists turned inward and tried to improve themselves - the Way of the Warrior. This led not just to being able to do tricks with qi and so on, but to longevity of masters. In the west, once a weapon reached a supposed peak, people still tried to improve it, or invented something new and much more devastating.

Until very recently go was seen as the Way of Go, in which personal improvement played a very big part. Those who mastered themselves and so were able to have not just glittering careers but long ones (among modern players: Go Seigen, Sakata, Cho Chikun, Cho Hun-hyeon, Chen Zude...).

The very latest players, in contrast, appear to be nine-day wonders. At the very least, it's clear that they have entered the gladiatorial arena too early to have had time for personal improvement. Go as a profession is becoming "westernised" - too much emphasis on PR, TV and the internet - and players have become disposable commodities.

Programming for the most part is like the western arms race. It's no coincidence people talk of the "next killer app" or the next big language. No doubt someone will put forward a counterexample, but I've seen very little evidence that programming improves (or perhaps "tempers" is better) the inner individual in the way that go can.

Not saying I believe all that, but there's maybe food for thought there.
Uberdude
Judan
Posts: 6727
Joined: Thu Nov 24, 2011 11:35 am
Rank: UK 4 dan
GD Posts: 0
KGS: Uberdude 4d
OGS: Uberdude 7d
Location: Cambridge, UK
Has thanked: 436 times
Been thanked: 3718 times

Re: Programming vs Go

Post by Uberdude »

schawipp wrote:IMHO the main difference is that in Go mistakes make you lose a game while in programming they make you start a debugger.


Programming (or rather software development and testing process) mistakes can make people lose lives:
https://en.wikipedia.org/wiki/Therac-25
schawipp
Lives in gote
Posts: 420
Joined: Mon Nov 12, 2012 1:13 am
Rank: EGF 4k
GD Posts: 0
Has thanked: 75 times
Been thanked: 58 times

Re: Programming vs Go

Post by schawipp »

Uberdude wrote:Programming (or rather software development and testing process) mistakes can make people lose lives:

Yes you're correct. With my short comment I wanted to say that in strategy games such as Go the punishment of mistakes (either due to correct play of the opponent or due to time control) is a process which happens automatically and mainly out of your own control (unless your opponent makes a bigger mistake afterwards, but that's merely good luck then). In programming, you have always the possibility to test your code and refine it within several iterations. It is in your own control and responsibility (and resource limitation) to decide when a code is in a state that it can be released. As you already mentioned, a mistake in the code development cycle can ruin your colleagues, the company you're working for and many of the users and even threaten their life under special circumstances, while in Go it can only cost you the title and price money (and last but not least your Dan/Kyu rank... :shock:). Therefore, programming can be much more challenging than playing strategy games, which seems not surprising at all.

A Go-related activity more similar to programming seems analyzing a complicated Tsumego, where you sleep over your first solution and try to verify and/or find a better one the next day.
User avatar
LokBuddha
Lives with ko
Posts: 180
Joined: Sun May 16, 2010 10:15 am
GD Posts: 0
Has thanked: 6 times
Been thanked: 4 times

Re: Programming vs Go

Post by LokBuddha »

What about the time to master programming vs go? Like becoming pro level or high Dan amateur
User avatar
joellercoaster
Lives with ko
Posts: 230
Joined: Mon Sep 16, 2013 5:50 am
Rank: OGS 2k
GD Posts: 0
OGS: Joellercoaster
Location: London
Has thanked: 288 times
Been thanked: 65 times
Contact:

Re: Programming vs Go

Post by joellercoaster »

That's tough.

"Master" is tricky.

I would say that I am a Pro level programmer (I do it for a living, I started learning when I was about 8 years old (32 years ago) and I have achieved a high level of professional success) though not 9p. I'm not famous - maybe 7p based on many accumulated wins, teaching young pros and long graft rather than winning glamour tournaments and going toe to toe with the great champions of the age.

I am at best a mediocre Go player, so my knowledge of how hard that level of Go is to achieve is almost zero. In particular, the level of competition to achieve Pro status (based on the available funding economically, vs the number of people wanting to achieve it) is hard for me to understand based on comparison to programming. You can make a living as a pretty crappy developer - certainly much less than what I'd think of as amateur 1d - but achieving the respect of one's peers and amateur participants... that is an interesting question.

But I would say that what the two activities have in common is that they constantly reveal layers of understanding. It's possible to play Go at 20k and enjoy it. A series of epiphanies, whole structures and layers of knowledge, reveal themselves gradually as you become more skilled. Are you enjoying it more? Maybe, maybe not, but you are definitely getting deeper. These things you had no idea existed are appearing. You gain strength.

This process continues, apparently forever, though the epiphanies at my level of programming maybe happen only every several years now and they are maybe more subtle. Is this like gaining a stone? Maybe that's a long bow to draw.

Interesting question.
Confucius in the Analects says "even playing go is better than eating chips in front of tv all day." -- kivi
User avatar
Solomon
Gosei
Posts: 1848
Joined: Tue Apr 20, 2010 9:21 pm
Rank: AGA 5d
GD Posts: 0
KGS: Capsule 4d
Tygem: 치킨까스 5d
Location: Bellevue, WA
Has thanked: 90 times
Been thanked: 835 times

Re: Programming vs Go

Post by Solomon »

I think the only way this can be made somewhat comparable is if we look at, say, TopCoder ratings and Go ratings and ask, for example, whether achieving 2000 TopCoder rating is harder than achieving 1d in the AGA or something along this line. Of course, TopCoder skillz != programming (but maybe TopCoder skillz ⊂ programming?), but 'programming' is too broad to be compared with a board game.
Polama
Lives with ko
Posts: 248
Joined: Wed Nov 14, 2012 1:47 pm
Rank: DGS 2 kyu
GD Posts: 0
Universal go server handle: Polama
Has thanked: 23 times
Been thanked: 148 times

Re: Programming vs Go

Post by Polama »

Kirby wrote:
Maybe I'm playing devil's advocate, but could you make an analogy between having specific Go knowledge (opening patterns and/or joseki) to being an expert in different programming areas? For example, if you study a particular variation of the mini-chinese opening, you could consider yourself "an expert" in that particular variation. It might not win you games, but it would be something to add to your tool belt as a go player.

It might then be said that it is not tidbits of "go knowledge" that make you a good go player, but rather reading ability, etc. Perhaps the same argument could be made for programming - good programmers are good at logic and solving problems, regardless of their expertise in that area... Maybe?


I would equate joseki to familiarity with a general technique or library, let's say websockets or functors or the MVC design pattern. If a problem calls for a parser, I know I could reach for YACC. Like joseki, it might be the wrong solution for the board. And like joseki, a good programmer can reason out moves in unfamiliar territory. But a professional programmer can solve a lot of problems just from memory.

Something like sabaki or fighting ability or positional judgement I'd equate to a subfield of programming. Sometimes I have to get deep into math heavy bit-fiddling, using masks and shifts and such to do high efficiency calculations. Other times it's very high level how do I lay out these classes to keep everything as simple as possible? Writing code is nothing like debugging it. As in Go, each programmer has strengths and weaknesses, but a 'professional' is adept at all of them, perhaps really shining in one area. As in Go, you can make up for deficits in one skill set with strengths in another.

The opening is like designing a program: you choose a few joseki/technologies and think very abstractly and broadly about the whole board, trying to forsee problems and balance plans against each other.

Most of programming is like the early middle game, except more open: You've got tons of choices as you lay down the code, two approaches can both take you to the end, but along very different paths.

Very logical/mathematical code and debugging are like the late middle game and end game. You need to understand what's been written already very well, and you're looking for 'correct' solutions.

Which one is harder? I think it just comes down to which one you're more excited about a long session of. I found the 30kyu-10kyu curve much easier in Go, but once I got past that, I've found it much easier to continue being dedicated enough to programming to keep improving towards mastery.
User avatar
Bantari
Gosei
Posts: 1639
Joined: Sun Dec 06, 2009 6:34 pm
GD Posts: 0
Universal go server handle: Bantari
Location: Ponte Vedra
Has thanked: 642 times
Been thanked: 490 times

Re: Programming vs Go

Post by Bantari »

To me, the are big difficulties in comparing programming skills to Go skills.
There are several factors which make it quite different.

  • Time:
    As a professional programmer, I have spent many years doing what I do every day, virtually 10 hours each day, sometimes more. I cannot even imagine putting that much time into Go. I am not sure even pro players do that consistently, year after year after year... I suspect that if I put the same time and dedication into Go, I would have been a pro player by now, easily. Unless I am just not smart enough, which is very possible.

  • Knowledge:
    In terms of knowledge, Go moves from broad concepts to increasingly narrow ones, until at some point the nitty-gritty is too fine for my mind to grasp. I guess everybody comes to this point eventually, maybe in different places. In programming, however, the process as I see it is completely different. The basic concepts remain largely the same, (or at least the same depth) - but you need to keep re-learning the technology. In that sense, the difficulty is not as much refining the concepts as adjusting them to work in different environments.

  • Dedication:
    Programming pays my bills and puts food on my table, it supports my family (especially since my wife is a programmer as well.) I cannot say the same for Go. Thus, I will always treat these two activities differently - Go will never even approach the seriousness with which I treat programming. Go is only a hobby, and will never be anything more for me. Programming is my life. And what's more, to those of us who think Go is their life, I say this: you are either very young, or very naive, or doing great injustice to yourself and your family. Unless you are a pro, of course.

    Anyways, in this context, the only sort-of meaningful comparison could be done by an ama Go player and an amateur programmer (or pro Player who is also pro programmer.) I think that Kageyama said something like: amateurs play the game, pros lagour in it. It is a huge difference! Speaking from personal experience, I have not met many amateur programmer who were competent. Including myself - since I used to be ama programmer and ama Go player at some point long time ago...

  • Mentality:
    From my very limited understanding of Go, I can see some differences in the way I apply my thinking to Go vs. to programming. It is hard to explain in a few words... Go is a lot about psychology, very artistic, but also logical. Ideas do not always need to be correct to work well, sometimes it is enough for them to be surprising... or tailored to specific player. Ideas and moves are very fluid in their evaluation - evaluation might change with the opponent, game type, time of day, etc. Programming is much 'colder' and logical than that - there are still ideas and artistry, but their evaluation is much more binary: they work or they don't.

  • Comparison:
    In programming, I say that western "civilization" don't need to hide behind nobody! Many programmers I know (of) are among the absolute top of the world - and these are the people I compare myself to (not very favorably, mind you, but still - that's my yardstick.) When somebody says "I am a good programmer" - I assume it is in this context and with respect to the best in the world, even if they come short. Now what about Go? What if somebody in US says "I am a good Go player" - who do they compare themselves to? Local club members, the best of which might be 3k KGS? People talk about "mid-dan level" (I assume KGS) - what does that mean? Is that good? Or would they be laughed out of any asian Go club with that attitude?

    In short, if we have a scale of 1-100, with 100 being top of the world, we might be comparing 1-50 on Go scale with 1-100 on programming scale, and asking "how does 25 on Go scale compare to 75 on programming scale?" - not a good or meaningful comparison at all!

All in all, I believe Go and programming are completely different animals. Evaluation is subjective. Its like people asking "what is tastier, appes or oranges?"

Having said the above, there are certain metrics which can be reasonably compared, not sure if it is meaningful, though.
For example:

  • Support:
    How easy it is to make a living with Go vs, with programming. In this light, programming is infinitely easier. I think this goes both for the West and the East and everything inbetween.

  • Enjoyment:
    How many hours of learning does it take for a person to start enjoying it? And in this light, Go is infinitely easier - from my experience. I enjoyed Go from the first stone I ever placed on a board, while programming I had to learn for some time before it became truly fun.

  • Personal:
    What do you, personally, like more? But what does it mean to anybody else if you say you prefere one over the other? Not much, I would say. For the record, I enjoy both, but programming more often. Although there are times when I am tired and I like Go better. However - there are times I like WoW more than both of them, heh...

  • And so on...

So I think that before asking such questions, a person should narrow the parameters a lot, and then wonder if the answer will really reaveal anything of value.

PS>
For what it's worth - I think that to become the best in the world, in any field, is equally difficult. But this is all I can say with any conviction, I'm afraid. And even that might be subjective. ;)
- Bantari
______________________________________________
WARNING: This post might contain Opinions!!
Kirby
Honinbo
Posts: 9553
Joined: Wed Feb 24, 2010 6:04 pm
GD Posts: 0
KGS: Kirby
Tygem: 커비라고해
Has thanked: 1583 times
Been thanked: 1707 times

Re: Programming vs Go

Post by Kirby »

Bantari wrote:And what's more, to those of us who think Go is their life, I say this: you are either very young, or very naive, or doing great injustice to yourself and your family. Unless you are a pro, of course.


Why? Doesn't this simply mean that such people have different priorities than you?
be immersed
User avatar
Bantari
Gosei
Posts: 1639
Joined: Sun Dec 06, 2009 6:34 pm
GD Posts: 0
Universal go server handle: Bantari
Location: Ponte Vedra
Has thanked: 642 times
Been thanked: 490 times

Re: Programming vs Go

Post by Bantari »

Kirby wrote:
Bantari wrote:And what's more, to those of us who think Go is their life, I say this: you are either very young, or very naive, or doing great injustice to yourself and your family. Unless you are a pro, of course.


Why? Doesn't this simply mean that such people have different priorities than you?

Yes, this is exactly what it means. And in my book, if you put higher priority on your hobby than on your own family and your own future, your priorities are wrong. And you will hear me say (or at least make me think) what I said above: you are either young, or naive, or whatever... selfish maybe?

But this is only my personal opinion, and you should feel free to live your life any way you please. Just be prepared for people judging you by the choices you make and actions you take.
- Bantari
______________________________________________
WARNING: This post might contain Opinions!!
Post Reply