Live data from Hacker News

Ask HN: How do you keep improving?

news.ycombinator.com

81–90 of 92 posts

Re: Ask HN: How do you keep improving?

#81
Many great answers, and many of them encourage people to try new things, and go and try to build new things and try stuff you don't know.

I like somewhat different approach, I would take some project I think its done well, and where I no longer see obvious room for improvement.

Then I would to go github and find same or similar kind of projects, ideally created by companies with strong engineering culture (e.g. Google) and compare how I did stuff to how they do it.

You would be VERY surprised to learn just how much other people would differently solve same problems you have been facing, and you can learn a lot from comparing other people solutions to something you are already comfortable with.

Re: Ask HN: How do you keep improving?

#82
post #54

Earlier quoted context omitted.

> People have to do tons of repetitive, boring stuff. A good programmer will automate this stuff and will not bother with it again. Maybe aderall is incentivizing the wrong behavior here.

You can automate homework and tests for your classes? That's news.

I was referring to programming work only

Re: Ask HN: How do you keep improving?

#83
post #64

Earlier quoted context omitted.

You wouldn't recommend Adderall (a drug with extensive(!) safety research) but instead you would recommend weed and shrooms? Also speed != adderall.

Why on earth would you trust substances humans have been using for thousands of years in favor of something brewed in a lab by a pharma company with quarterly goals and a decade (or two?) of tests (perhaps with incomplete test coverage). Difficult choice.

Just because humans have been using something for thousands of years doesn't mean its a safe choice.

Re: Ask HN: How do you keep improving?

#84
post #82

Earlier quoted context omitted.

You can automate homework and tests for your classes? That's news.

I was referring to programming work only

How do you automate arbitrary programming assignments without cheating by having someone else do them? There were piles of little problems I had to do in programming. It being mundane was obvious when contrasted to better options like having people build a neat app or game piece-by-piece as they go through lessons. Land of LISP comes to mind. Also has amusing artwork.

Re: Ask HN: How do you keep improving?

#85
I find asking this question to be just slightly misunderstood. I am currently in my 35th year as a developer, and the learning and improving is easy with one simple ingredient: interest. Pursue what interests you, do the research, write your own versions of the latest research, and when stuck contact the authors you're following. You'd be surprised at who responds, and coming from a perspective of interest the response may be more than expected.

I've been doing C/C++ for my entire career, but have also done full web stacks, embedded systems, VFX for feature films, 15 years as a game developer, OS engineer on first PlayStation team, and reaching way back 80's 3D graphics research and Macintosh beta tester and launch developer. All from simply having enthusiasm and a combination of the stupidity to try it myself and then contacting the leaders and asking them what they did about some nit picky point. Next thing, I'm working there.

That type of easy access is only at new technologies. When I was contacting people the digital entertainment industry was yet a dream. EA was maybe 1 year old. I guess my advice is to find something that you find exciting, but is not yet a reality. There are giant industries to be created around software controlled aircraft, everything from IronMan to skytrains, fer christsake. What interests you? Augmented Reality is going to be saturated, but that area is wide open. Hell, everything is interesting. Just be sure to focus. There is success in consistency.

Re: Ask HN: How do you keep improving?

#86
There are two simple mental habits required to improve in anything:

1) Recognize blind spots in your knowledge or skill set. Even without acting upon them, knowing what you don't know is a quantum leap ahead of complete ignorance. Anytime you catch yourself accidentally bullshitting an answer at work, it's because this awareness hasn't been grown enough.

2) Fill in those gaps in your knowledge / skillset in small, low-pressure sprints. Make it easy on yourself. People tend to completely avoid things that make them feel uncomfortable or incompetent, so spending even a small amount of time trying to grasp something is a quantum leap ahead of completely avoiding it. After some time, this is how people seem to "know everything": it's not because they're an expert in all things, it's because they spent the 20% of time it takes to get 80% of the results.

Consistency is key. "Most people overestimate what they can do in one year and underestimate what they can do in ten years" - Bill Gates

Re: Ask HN: How do you keep improving?

#87
post #67

I actually wrote a tool that takes a screenshot of my desktop every five seconds: https://github.com/JesseAldridge/screen_recorder Once in a while I go back and review some of the work I did that day and look for ways to improve.

How do you use this tool? What have you learned from it?

The tool is launched on boot via launchctl on OS X and runs all the time. (https://developer.apple.com/legacy/library/documentation/Dar...) It automatically deletes screenshots older than four days. I use it in conjunction with Workflowy and a web app I wrote called Task Ranger (http://taskranger.com) to keep track of how I spend my time and to come up with improvement plans.

Task Ranger gives me the big picture -- e.g. learning new things is my biggest time sync and takes 25% of my working hours. The screenshots + workflowy give me the micro level view -- e.g. studying unfamiliar codebases is 1/3 of this 25% timeslice.

So now that I know learning new codebases takes a lot of time, how can I get better at that? Well one thing I've started doing is creating a txt file containing basically a manually generated tree of the function calls made by a program. It might look something like this:

    /new_user
      validate_form
      create_new_user
        User(...)
      send_welcome_email
        load_email_template
        pass_to_email_service
That's a toy example of course -- real-world call trees are huge. After I generate this once I can quickly see how the whole program fits together. And I can use it with this feature in Sublime Text where you right click on a function name and then pick "jump to function".

That's just one small example of something I'm trying. It's an ongoing improvement process that I try to allocate time for. The screenshots are just a helpful view toward understanding where my time goes in more detail.

Re: Ask HN: How do you keep improving?

#88
post #75
post #35

I work on progressively larger and larger apps. This teaches me more and more about coding in the large, in a very practical sense. Every time I learn about something new, my learning is explicitly motivated by the problems that I ran into while implementing the large app. I started by making a reasonably conplex TODO app, which took a few months. This taught me about the importance of declarative (popularized by Rea…

If you don't mind sharing, what's the big app you're warming up for? :)

It's going to be a game.

First I made the IDE... then the art editor... :)

Re: Ask HN: How do you keep improving?

#89
post #63

Earlier quoted context omitted.

Not if you do it right.

How do you study mundane, endless trivia "right" where it's not boring or wearing you out? I managed to do what studying I needed to do but it was far from fun. The only times it was fun was when the material itself was fun. It was still work but at least interesting work. Most weren't, though.

Good question. I think a lot of it starts with motivation. If you are just studying something for fun then the boring stuff does get really tedious. But if you are studying for something beyond the subject, eg, in my case it was acing my degree to prove something to myself, then the competitive side takes over.

There are people out there that devote themselves to memorizing decks of cards or arbitrarily long numbers. Cards or random numbers are not particularly interesting, so these folks invent mind games. They may take each card to represent a particular object and then make up some crazy story involving these objects. Suddenly to them what was mindbogglingly dull becomes tantamount to some epic screen play.

You can employ similar tricks to studying any subject. When studying for my degree there were a few things that really helped. Note taking, notes had to be as vivid as possible. I would always have multiple coloured pens and highlights as possible. Pictures, various sized and coloured text and lots of arrows. My notes became art. Mnemonics and stories were important for the long lists of things.

Also managing energy levels is pretty important. Regular sleep cycles, exercise help maintain focus. Environment makes a big difference. A library is much better than the common room.. Also, slightly controversially, I find the often given advice to take regular breaks when studying was highly damaging. If I allow regular breaks, then my focus shifts to watching for when my next break is. Also in the breaks I would get time to think about how dull this stuff was. So I would find maintaining pure focus for about 4 hours at a stretch much easier. It helps to have a variety of studying techniques to move around in. So moving between reading / note taking, mnemonic memorization, doing exercises, visiting tutors, discussing with study partners helps keep things flowing.

Re: Ask HN: How do you keep improving?

#90

Occasionally, a couple of times a year, I will challenge myself to learn some new technology and I will utterly immerse myself in that technology until I have a working basic knowledge of it. It is how I learned Emacs. It is also how I learned Vim when I grew tired of Emacs' shenanigans.

I'm not seeking a flame war, but what Emacs shenanigans were those? I mostly use Emacs, so I am just curious. Thanks!
Post reply on HN