Live data from Hacker News

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

news.ycombinator.com

101–110 of 114 posts

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

#101
post #71

Earlier quoted context omitted.

First of all, you should know that there exists an A* , and what it can be used for. Second, you should know when to use A* or something else, the trade-offs etc. Third, you should know how to implement A* , when needed, with reference material (you'd be surprised how many programmers can't read/understand the reference material even when its given to them, or don't know enough programming to put it in code). Of cour…

Aside from as a learning experience or display of prowess, what's the point of implementing A* yourself? In my experience, knowing which prebuilt algorithms and data structures to reach for matters more than being able to implement them myself. Not saying there isn't value in learning or that it doesn't help flex the problem solving muscles, but in most software domains, I think that practically speaking there are mo…

Time an Space complexity are moving targets too. The rapid change of the importance of memory locality will soon make a lot of the hard and fast data structure advice useless. At least if you program in something like C. Those n's are a lot bigger then they used to be.

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

#102
You already have a job so I'm guessing you have the practical skills needed to get paid, otherwise I would recommend sticking to one stack.

Personally I feel Norvig's advice wins out here, even if you just run through books to get some of the basic ideas and never build anything with the additional languages (you should though!). The point is to get out there and try new things and maybe something will get your imagination firing on all 12 cylinders and help you decide.

I'm not even sure what Hickey is getting at as he's stripping out all of the things that we use to communicate between one-another about programming and putting some nebulous concept (that isn't explained) as the core of programming mastery. 'Late game' paradigms, building blocks, and platforms ARE the advanced skills!

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

#103
Breadth and depth are both very important. Too much breadth and you have a hard time getting any non-trivial job done. Not enough breadth and you use the wrong tool for the job. If you want to be the best dev possible, it's probably good to keep up with the latest in terms of adding those alternative solutions into your own conceptual framework, but it's distracting to spend too much time with them unless they truly are the best tool for the job at hand (and marginally so in terms of time invested).

I suppose it's like reading non-fiction books. As soon as you believe you understand the author's perspective in sufficient detail, it's often best to set the book aside and move on to the next one. You are under no obligation to read every page.

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

#104
post #93

Earlier quoted context omitted.

Respectfully I disagree with most of what you're written, wrt to growth. When I see my friends 3 year old daughter playing Geometry Dash on his phone, I know that the PC can't compete with that. PC ports are still and after thought. Games use a lobby system instead of dedicated servers. Only a few companies (Valve being one of them) target the PC market first. Pretty much every other AAA publisher looks at the PC mar…

The problem with your original statement is that you have combined Mobile and Console together VS PC, which is a pretty bad basis in my opinion. PC vs Console vs Mobile would be a more reasonable competition. From some reports PC gaming market seems very healthy indeed from monetary perspective. http://usfinancepost.com/pc-still-gaming-market-is-double-co... http://www.gamesindustry.biz/articles/2014-01-28-pc-gaming-…

> In my opinion all the platforms have their pro's and con's, and none of them are going to disappear anytime soon.

I wasn't suggesting that PC gaming will disappear. However, it's clear that PC gaming isn't a growth sector. Given that is where Valve dominates, where does that leave them?

Valve may not consider themselves a growth oriented company, but they do look for opportunities to innovate.

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

#105
post #39

Rich Hickey is one guy and this is what worked for him. That does not mean that his experience generalizes to all developers. Listen to lots of people, perhaps weight their opinions based on their success and your admiration of them, and then make your own decisions.

I am not quite sure how to express it precisely, but the fact that in our field the phrase "Rich Hickey is one guy and this is what worked for him" doesn't sound ridicules, makes me a little sad. Mathematicians don't say "Pythagoras is just one guy and it worked for him."

On the contrary, I think exactly the same thing is true in mathematics; not everyone works or learns the same way, and assuming that imitating the path of one person, no matter how brilliant or successful, is the only way to succeed, is very shortsighted.

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

#106
post #18

Whenever a question like this comes up among the people that I am mentoring, I like to show them the "T-Shaped Employee" section of the Valve Employee handbook [0]: "We value “T-shaped” people. That is, people who are both generalists (highly skilled at a broad set of valuable things—the top of the T) and also experts (among the best in their field within a narrow discipline—the vertical leg of the T). This recipe is…

This is exactly why a lot of people want to do a start up, or at least start a side project that solves a specific problem. You get to to be the expert in that domain, and in order to get the complete product out, you need to be a generalist. Another meme that's been thrown around is: "You are not the complete developer if you've not written a compiler." I don't necessarily buy that, but there is some merit: there is…

> This is exactly why a lot of people want to do a start up, or at least start a side project that solves a specific problem. You get to to be the expert in that domain, and in order to get the complete product out, you need to be a generalist.

Hm, funny thing you mentioned startups. Apart programming related startups, I don't think that startup-ers are "great programmers". I get the feeling that most startup programmers (not all of them, but most of them) are somewhere between average and novice level.

I get the feeling that most "great programmers" are not that interested in startup (making money, living the thrill or whatever).

Most famous programmers, work in big corps for medium-to-huge salaries and (most of the times) even getting paid to work on their side-projects (Dropbox pays G.V. Rossum for Python-dev, Heroku pays Matz for Ruby-dev, etc.).

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

#107
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 programming in high level OO languages, which have ready algorithms and data structures are pretty-much standard, what's your use-case of algorithms?

I've seen entire projects which do not require specific knowledge or application of any algorithm. Even when they do, one can google and find "best algorithm for XYZ", then find a library which has the algorithm implemented and off you go.

I understand the use of algorithms in low level languages and specific domains, but when you need to sort a ruby array you just "array.sort" and a default (IIRC the default in ruby is a version of quick-sort) sorting algorithm is applied, which 9 out of 10 is the faster solution you'll get given the language constrains.

Can you offer an example of specific situation, in any OO-language with reasonable amount of available libraries, where deep knowledge of design and analysis of algorithms is actually required?

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

#108
Theoretically both works - the single system depth will allow you to encounter new issues / see how the stuff you developed panned out.

But that's too slow a process IMHO due to how organizations work and i wouldn't do it unless the field, you are in, is really deep to start with eg gaming/distributed computing etc. You also face the risk of being in the same rut over and over again and all of a sudden the rug could get pulled from underneath you (hopefully so that you will learn new things).

I would say stick around until you gain expertise (and actively do so) in the domain and know its problems and its typical solutions and then move on 3-4 yrs ?

I was shoved around due to market forces ... its the best thing that happened to me IMHO

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

#109
post #107
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 programming in high level OO languages, which have ready algorithms and data structures are pretty-much standard, what's your use-case of algorithms? I've seen entire projects which do not require specific knowledge or application of any algorithm. Even when they do, one can google and find "best algorithm for XYZ", then find a library which has the algorithm implemented and off you go. I understand the use of a…

> Can you offer an example of specific situation, in any OO-language with reasonable amount of available libraries, where deep knowledge of design and analysis of algorithms is actually required?

Interviews :)

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

#110
post #107
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 programming in high level OO languages, which have ready algorithms and data structures are pretty-much standard, what's your use-case of algorithms? I've seen entire projects which do not require specific knowledge or application of any algorithm. Even when they do, one can google and find "best algorithm for XYZ", then find a library which has the algorithm implemented and off you go. I understand the use of a…

"Can you offer an example of specific situation, in any OO-language with reasonable amount of available libraries, where deep knowledge of design and analysis of algorithms is actually required?"

You won't get very many good replies because you are asking the wrong questions. The truth is you don't even need a decent understanding of OO for most day to day dev. You will just produce suboptimal work.

A better question is: "...where reasonable knowledge of design and analysis of algorithms allows you to do a better job?"

And the answer to this more reasonable question is: Every single project I've worked on as an enterprise developer over the last 10+ years. Being able to say "hey actually this problem we are working on can be formulated as a graph problem" can turn a 3 month problem into a 3 day problem.

For example we recently had a rules engine rule dependency issue that turned out to be expressable as graph problem and was then easily solved. If nobody in the team had a good knowledge of algorithms we still could have solved the issue but it just would have taken a lot longer.

And unfortunately until you can phrase the problem in the right way you can't just google "find best algorithm for XYZ".

Post reply on HN