Live data from Hacker News

Ask HN: Thoughts on Rich Hickey's advice on becoming a better developer?

news.ycombinator.com

51–60 of 114 posts

Re: Ask HN: Thoughts on Rich Hickey's advice on becoming a better developer?

#51

Wow, I'm quite literally floored by what is completely and utterly missing from this entire discussion: The User. It doesn't matter what or how you program, as long as you have: The User. If you have to spend your time competitively learning some new-fangled slippery, slidey, pretty little ball of tangled chains of bits and pieces of - whatever - it doesn't matter for a fig if you don't have: The User. With The User…

Question was how to get better as a developer and engineer--relying on The User is the worst possible way of solving that problem, because they don't care anything about the tech...they just want results.

Your advice is correct about how to get better serving users, but that was very much not the question being asked.

Re: Ask HN: Thoughts on Rich Hickey's advice on becoming a better developer?

#52
I think the missing piece is here:

"I am not questioning the many benefits of broadening or learning activities, just the premise that they lead to any sort of mastery." - Rich Hickey (from the same gist).

Norvig is speaking about becoming a better developer by becoming exposed to tools that solve problems in different ways, so that you can internalize those different problem-solving techniques and apply them when appropriate. But exposure alone has only a limited benefit - at some point being able to write a quicksort in a new language is going to produce diminishing returns. At some point understanding the advanced techniques offered to you by a programming paradigm is going to require studying that one paradigm to a greater level of detail.

Hickey is speaking about becoming a better developer through 'mastery' in the sense of thoroughly understanding a system, having the ability to acquire new information, identify and solve problems that comes only through extensive experience.

These are two different ways to become better as a developer. Hickey's point is that the 'skill ceiling' for the former is very low - once you've been exposed to a number of different paradigms, you can either continue learning even more languages for little marginal benefit, or you can begin to master one or more of the paradigms you've seen. And that mastery builds a whole different set of skills that will make you a better developer no matter what toolset you end up using.

> I can't help not getting excited by React or not spending a month learning OCaml or building side-projects tangential to my 9-5 line of work...it is a sure fire way to level up as a developer.

Do you feel the side-projects you've worked on in the past have made it easier for you to work on your job, or your current side-projects? Have they given you more insight? Do you come across solutions more easily because...

* you've seen and solved a similar problem before?

* the month you spent working on OCaml gave you insight into a functional way to reframe the issue?

* your exploration of react.js gave you a better appreciation of client-side engineering issues?

* something else?

If you can honestly say 'yes', you are almost certainly leveling up as a developer. Otherwise, you might want to examine whether your side-interests amount to more than dilettantism and whether you might be better served spending some time focused on a single topic.

Re: Ask HN: Thoughts on Rich Hickey's advice on becoming a better developer?

#53
Both are right, and they agree with each other. But you have to understand what they are talking about to get it.

The point of Peter Norvig's advice is that once one has learned 3 different ways to do one thing, it is easier to abstract out the fundamental principles and think about when to take one approach or another. Which makes it easier to understand the actual game.

Which leads into Rich Hickey's advice. Recognize that the game you are in is programming. Which is the art of keeping software doing what we want to it to subject to various constraints including timelines, changing requirements, and so on. This is not the accumulation of esoteric information. This is not the accumulation of prebuilt solutions. Those are necessary, but not sufficient. You need both a skill set and a mind set.

I used to like chess so I'll use a chess analogy. In chess, and many other games, there is a clear difference between tactics and strategy. Tactics is, "I do this, he does that, I respond like so..." Strategy is the abstraction across tactical situations to recognize things like the importance of controlling the center, that attacks naturally proceed along the line of pawn chains, and what affects the relative value of pieces in different situations.

You cannot learn strategy without knowing tactics. Because the accumulation of strategic advantages is useless without the tactical skills to notice and use the opportunities that arise. And mumbled slogans do not a coherent strategy make. So learn tactics first. But to become a great chess player, you will need to master strategy.

The same applies to programming. Programming tactics include languages, paradigms, platforms, building blocks, open source, conferences etc. These do not constitute strategy. Learn strategy. But you cannot do that without learning programming tactics first.

Re: Ask HN: Thoughts on Rich Hickey's advice on becoming a better developer?

#54
post #49
post #37

Earlier quoted context omitted.

They also haven't put out an entirely in-house game since the Orange Box. The management failures at Valve have been pretty spectacular, and expensive, of late, it's just that because they are a private company, and because Steam makes all of the money, they can continue to have large expensive failures like the VR or the Steambox until doomsday. Valve is not other companies, and their position is such that it's not…

Any links describing the management failures?

Jeri Ellsworth has been quite vivid about the actual, rather than the idealized, version of how Valve actually works; there's some thoughts here: http://www.develop-online.net/news/valve-s-perfect-hiring-hi...

Besides shelving the VR project that she was reportedly working on, there's also the Steambox which still doesn't exist (the only hardware to even pass prototype stage eventually had to abandon SteamOS and release on its own), the utter crapshoot that is their attempts at virtual economies (TF2 hats: prints money, trading cards: useless boondoggle, everything involving Counter-Strike: possibly lucrative now, but PR disaster after PR disaster with their fans).

Valve spins the utopian image, and generally keeps the veil down enough that goodwill and fandom manage to sustain the myth, but I suspect the cart's been off the rails for sometime, and if it weren't for Steam we'd have long seen a very public failure by now.

Re: Ask HN: Thoughts on Rich Hickey's advice on becoming a better developer?

#55
post #22

Programming languages matter some, but algorithms and data structures matter a hell of a lot more. While it is true that learning different programming paradigms can help you evolve as a programmer, I strongly believe (I have been programming professionally for about 20 years) that that is far from the best way to evolve as a developer, and learning algorithms and data structures will help you "level up" faster and b…

When people talk about learning algorithms, what do they mean?

I recently spent a few hours reading about and implementing A* for the NPCs in a video game I'm working on.

Are you talking about being able to write A* and other algorithms from scratch with no reference material?

Re: Ask HN: Thoughts on Rich Hickey's advice on becoming a better developer?

#56

Wow, I'm quite literally floored by what is completely and utterly missing from this entire discussion: The User. It doesn't matter what or how you program, as long as you have: The User. If you have to spend your time competitively learning some new-fangled slippery, slidey, pretty little ball of tangled chains of bits and pieces of - whatever - it doesn't matter for a fig if you don't have: The User. With The User…

Question was how to get better as a developer and engineer--relying on The User is the worst possible way of solving that problem, because they don't care anything about the tech...they just want results. Your advice is correct about how to get better serving users, but that was very much not the question being asked.

Well, I really mean that in spite of whatever you do to improve yourself as a developer/engineer, it doesn't mean a thing if you don't have a User. Ever.

And even if Developers can themselves be Users, in the sense that they gain some sort of joy out of consuming the developer tools of the trade, its still just navel-gazing until there is actually some sort of use out of the activity.

Real developers build things for users. It doesn't matter how good or bad they are, as developers, if there is a User: win.

Re: Ask HN: Thoughts on Rich Hickey's advice on becoming a better developer?

#57
post #26

In the venerable 'well actually' StackOverflow tradition of not answering the question: as a developer, don't consciously invest too much of your time trying to become a better developer. Instead, set aside time to become a better marketer. If you're a solo developer you will need to get the word out to investors and customers about yourself and what you can do. Working for someone else, you'll additionally have to s…

If the OP's goal is to make more money, this might be good advice. But if their goal is to become a better programmer, it won't.

Re: Ask HN: Thoughts on Rich Hickey's advice on becoming a better developer?

#58
WRT Norvig if you learn clojure to learn functional and parallelism, you'll win, but if you learn clojure so you can write visual basic in clojure you'll lose. He's giving a necessary but not sufficient option for each broad field you need to understand.

WRT Hickey if you "gain advanced skills" by using the best language for the job, then the language mattered with respect to the learning process. But once you understand the "fun" of concurrency, the language you used is no longer relevant. You can talk ACID compliant transaction using clojure STM as a vehicle or your favorite SQL, the language just doesn't matter any more.

The point of a reading primer "see spot" "see spot run" isn't to learn about dogs, and once you can read, you don't need the primer anymore. There are learning techniques and textbooks that are better at learning than others... the the mastery, if it ever comes, came from sweat, not the book itself.

Re: Ask HN: Thoughts on Rich Hickey's advice on becoming a better developer?

#59
post #32
post #28

Earlier quoted context omitted.

It just sounds to me like they're saying they only want engineers who already know everything about everything. Sure, I'd want that too if I were hiring, but it doesn't seem very realistic. It also makes me wonder about their ability to manage people with different skill levels and areas of expertise. And of course, having used Steam, I'm not at all surprised.

Not to me. It sounds like they want people who have a wide variety of shallow-ish knowledge (but still an actual understanding of whatever area it is), while also having very deep knowledge in one or two areas in particular. > It also makes me wonder about their ability to manage people with different skill levels and areas of expertise. And of course, having used Steam, I'm not at all surprised. Weird that that's th…

> (Half-life, Counter Strike, TF2, Left 4 Dead, Portal, DoTA2... it's actually hard to name them all).

Actually, it's not that difficult. Of what you listed, only HL was original IP.

Valve put a lot of work into digital distribution, and have pretty much owned the PC digital distribution market.

With console and mobile gaming dwarfing the PC market, and big publishers like Ubisoft and EA getting into their own digital distribution, I'm curious to see how Valve continues to grow.

That said, I admire them as a company.

Re: Ask HN: Thoughts on Rich Hickey's advice on becoming a better developer?

#60
post #22

Programming languages matter some, but algorithms and data structures matter a hell of a lot more. While it is true that learning different programming paradigms can help you evolve as a programmer, I strongly believe (I have been programming professionally for about 20 years) that that is far from the best way to evolve as a developer, and learning algorithms and data structures will help you "level up" faster and b…

When people talk about learning algorithms, what do they mean? I recently spent a few hours reading about and implementing A* for the NPCs in a video game I'm working on. Are you talking about being able to write A* and other algorithms from scratch with no reference material?

Some aspects of this in the culture are disturbingly binary and the world has WAY too many people who don't know the engineering application of A* so they just make something up. Knowing that it exists and has certain (detailed) characteristics is probably 95% of the use. Why didn't you use B* (rhetorical question, whats important is you have an answer not what it is) Folks who don't know path algos probably think I'm making up B* but it really exists and was invented just before I started programming and I have a memory for "new" stuff vs old.

Its useful to have a steel beam and know how to apply it to construction. Knowing how its made and the metallurgy and how that impacts the application levels you up. Then there's a whole sea of lower level construction vocational laborers who don't know steel beams exist and they'll just bodge something together with stuff from the junk yard and when it collapses, well, there's no guarantees in life and it was cheap and the academics never know anything anyway so stop complaining, and last but not least the social butterflies who heard the Jones's next door, who are billionaires, built their wall out of recycled plastic so we'll use that to hold up the roof instead of proletarian wood or even this steel beam stuff.

Post reply on HN