Ask HN: How do you stay sharp?

113 points by taigeair ↗ HN
I feel like I've stopped rapidly learning after university and plateaued in my career in the last 1-1.5 years. How do you stay sharp and continue to climb in your career?

I'm a product manager at a tech company. I read. I work on side projects. I learn new programs like Sketch, take classes on Udemy and Coursera, but do not feel like I'm learning as much as I'd like. I'm not learning that much on the job anymore, just adding value to the company.

Update: wow, thanks for all the advice. I'll definitely read through all of it. But beyond advice, I'm also curious what do smart people (like you) do to continue growing in terms of activities.

86 comments

[ 2.9 ms ] story [ 135 ms ] thread
1) Go to, present at, local meetups, unconferences. 2) Get involved in OSS projects. 3) Find a mentor. 4) Job hop to something that challenges you and probably pays you more as well.
Find a bigger pond. Big fish in small pond is a good way for short term benefits, but it limits the growth.
(comment deleted)
Try something new outside of software. You will learn some new things that will kick-off new learning in software.
What are your side projects? IMO learning is only useful is it lets you build something.
Currently, I'm working on this idea... Not sure if it's ready for attention yet, but I guess it doesn't hurt. www.littlequest.me/secret

My main concern is I don't feel as sharp as I did in high school, university, and first years after grad. And I want to continue to have that mental sharpness, not just be good at my job and do it day in and day out.

Love the testimonials section.

Are you working on this alone?

Thanks! I thought that would be a fun way for people to tweet about the product :)

I'm working on this with a friend. I'm really curious where this goes. It should be ready in 2 weeks.

If you are doing things right you won't feel as sharp when you are further in your career. In high school and college many feel like they understand everything and that things are so easy, but that is really because they haven't started to see the bigger picture.

The more you learn the more you will feel that you don't understand everything and never will. Focus on learning whatever is most relevant to you and your career and don't get bogged down by impostor syndrome.

So it's a social network for going on chores with friends?

""Now here's an app that has me by the balls."" as your tweet prompt is uh.. imho not professional.

Take on more responsibility at work, either do it on your own or ask for more from your boss, say you want to do more, you feel you can do more.

Or start contributing to meetups, be out there, and get another job that is a step up.

Or try and make a product on your own, even if it is a silly idea, until you launch it. Do it again.

1-1.5 years isn't a plateau don't stress too much, that you want to do more is nearly all you need to climb, there are countless people that don't want anything more

Surround yourself with people far smarter than you are. Bring up interesting topics that you want to learn about but can also contribute to, let them fill in the gaps. Ask them what they are most interested in at this moment. Ideally do prior steps while buying them drinks.
How do you find these people? I found lots in London but not so many where I am currently.
Interest groups, forums, even IRC.
Any interesting channels?
You might need to travel to find them: I've found conferences are a good way to find interesting people. And not necessarily programming conferences, it's good to know smart people in other fields.

Also, as patio11 once suggested, just contact people you think might be smart / interesting and invite them to chat over coffee or drinks. I did that while I was travelling through Berlin and invited folks I'd talked to here on Hacker News. I got some really useful advice from it personally, and they at least got free drinks & snacks from me (and hopefully interesting advice / ideas too).

Check out Patrick's standing invitation for ideas on how to connect with people: http://www.kalzumeus.com/standing-invitation/

Cool, thanks! I should start doing that.
Sounds like you're doing all of the right things. Try reading material from outside your primary interests: biology, pure maths, civil engineering, electronics, chemistry, etc. Ideas are not born in a vacuum and over-specialization can sometimes give you the illusion of progress. I find digging into a new subject exciting and it often gives me new connections or angles to programming and maths that I wouldn't have otherwise encountered before.

As for commercial applications... well software for business is usually dry and boring grunt work. Interesting, innovative, and challenging are, paradoxically, antithetical to commercial software. You want reliable, boring, and simple. Perhaps you need to look for a research position or take a risk and start a venture based on one of your ideas.

>I read. I work on side projects. I learn new programs like Sketch, take classes on Udemy and Coursera

Sounds like you are already doing more to improve than most!

>I'm not learning that much on the job anymore, just adding value to the company.

Do you feel like you are often the smartest person in the room where you currently work? If so, time to move some place where that isn't the case. I find working with people more skilled than myself is the fastest way to improve. Sure, your ego will take a hit, but it is worth it for the self-improvement benefits.

However, short of places like Google, I'm not sure how to go about finding a place with more skilled people. Can't know for sure until you are actually working there.

What if you're the smartest person in the room and also highly paid? It may be more strategic to stay put, save as much as possible, and spend your time getting intellectual stimulation outside of work.
I don't necessarily disagree. However, it sounded like OP was already doing a lot to get intellectual stimulation outside of work. He specifically mentioned not learning much on the job any more so that's why I recommended looking into a new job.
Start your own company: you'll learn a ton, and be forced to stay sharp, since your survival depends on it.
Destroy your marriage and social life! Ruin your financial situation for decades to come!

No. Just no.

It takes a certain breed of individual to take on this kind of challenge, to throw caution to the wind and just do it, plus a whole lot of tenacity and sheer luck to make it work out.

If you want to learn new things, this is the worst possible advice. It's akin to saying "If you want to learn how to fly, throw yourself off a building."

Having been through the start-up cycle many times, I'll tell you one thing: You won't learn a whole lot about technology compared to learning business. As a founder you'll spend far less time coding than you do wrangling spreadsheets and worrying about payroll.

The OP asked how to stay sharp - not how to obtain ultimate happiness, or how to obtain the best balance of everything. Being a founder is probably the best way to learn and stay sharp. Of course it's not for everyone. Of course you're going to fail (at least a little, most likely a ton).

And why is it decades of ruin? I could argue that running and failing your own company for 2-3 years will work better for you financially than going to work for a big tech company straight out of school (or at any point in time really).

There's no need to "throw caution to the wind". Just be on top of what you're capable of, where your priorities are, and what your financial situation is (stay sharp on all these things).

> I work on side projects.

I'm intrigued this is here, because when I read the title this was my immediate suggestion.

In my experience there's no better way to learn than working on side projects that explore technologies that you don't already know. Is this what you do?

Writing an app on the same framework/languages as you use at work is also definitely valuable, it'll give you more depth of knowledge that's then directly applicable at work (in fact when starting a new job I recommend doing exactly this) but it won't stretch you much intellectually. To do that you kind of have to force yourself to use completely new stuff.

I kept learning til 30. Now i'm still learning at 33 but it feels different. Once you learn enough is more about the ability of connecting dots.

I.e. I know a load of libraries and built a fair deal myself, including a orm and a crud framework from ground up, and I know many of the pitfalls (I fell for many of them but I was young and foolish) however I also learned the why stuff grlets built a certain way and now it's ten time easier to pick up new things (yeah ember does this and that because it solves the problem x in a way I already saw done here and there, which is better than this other way under these conditions)

Another example I've been around to see the latency/bandwidth problem arise so many times it's not even funny anymore. and each generation solve it's time solution (initially it was the terminal because bandwith was the problem, then the thick client because latency, then it was again dumb data screen within browser, then ajax become viable so code moved back to the browser, last framework are so bloated latency is an issue again and they are moving templates back server side once more)

Learn enough new thing about solving the problem yourself, and basically you'll know every class of library that tries to solve that specific domain. Then you are free to learn higher level stuff. If you start too much high then it's easy to be lost in a flurty as technology shift without understanding the whys.

Seconded...learning is not a linear-time experience...or, it shouldn't be at least.

I didn't learn much during and right after university. But after a few years on the job as a reporter, I started getting ideas about how to apply my programming experience. One of my first programming-on-the-job experiences was writing a scraper for the local sheriff's website, so I didn't have to manually click through the inmate list.

(this seems to be a common idea among programming journalists; someone wrote a tutorial about it: https://first-web-scraper.readthedocs.org/en/latest/)

To reiterate LoSboccacc's point...with every new thing I wanted to explore, I had many excuses to try out new languages and tools...early on, many of my ideas were dumb (Drupal was my first concept of a website backed with a database)...but after enough misguided, but not crippling efforts, you get much better at being less misguided. And learning new technologies becomes less of a chore :)

To expand about university: it's my personal experience so ymmv

Almost nothing in my curricula mapped to anything I worked afterward, and I am very glad of that. They forced me to learn how to think, how to solve problem, and gave me a set of analytical tools to understand the software world.

True, I had to figure out java and javascript and aLl the other stuff on the gritty nitty details of programming myself, but I learned a lot faster than people attending work skill universities how to not work by coincidence and how to solve the real problem of software development of which coding is actually the very minor part.

I'm amazed when I see people lost in coding while that is actually the less relevant part of the job.

Go outside your comfort zone, learn a functional language and give a talk on it. Learn higher-level maths. (IMO) There's satisfaction and clarity to be found there if your current path isn't challenging you. You might find that it takes you into new roles too.
For me, staying sharp was never an issue because I have an addiction to 'toys' and learning.

By Toys, I mean new concepts and tech-stacks.

Unfortantely, I don't control it. It could be the most useless thing, or something valuable. I haven't figured out what 'actuates' it.

Been everything from replacing FSM with Behaviour Trees, to learning game development, A*, Steering Forces[0] to just toying with Redis and Obj-C.

[0] I really, really, really recommend http://natureofcode.com

Careers and jobs and employers and technologies all come and go.

Figure out what interests you yourself, whether you want to go somewhere or do something, and how you might get there. What's important to you.

If your current job can or does line up with that, great. If not, then start working toward your target and toward a different role at your employer, a different employer, or self-employment.

Have enough cash and/or short-term assets available to operate for at least six months without a job. Maybe longer, depending on what the job market looks like in your area.

As for yourself: diet, exercise, regular sleep and regular meals, and working sane hours. Work on your own mental, social, and physical health. Your finances and your cash flow and your sleep and your meal schedules are all part of this health, too.

Schedule time for yourself. Outside of your job. Both to learn and grow, and for socializing. Seek out folks that will challenge you — either at work, at university, at a Maker's event, or outside. Seek out and talk with folks of different backgrounds and interest areas and any of the different genders and of different personal histories and experiences. Learn a new language.

Once you have pondered on these and have your plans underway, then you can start working on the technologies and the tools and the online courses and classes and the rest. If they're applicable, and how you best learn.

While your employer will certainly like the focus on your career, life is more about yourself.

Excellent advice, this should be handed to kids as soon as they graduate from HS, and constantly referred back to.
How do you seek out folks that challenge you?
For me, moving to the bay area was a big deal. Was easy to be the "big fish in a small pond" in my old town. If moving is not an option, contributing to an open source community you respect may be a good analog.
Thanks, very good advice.
> I learn new programs like Sketch, take classes on Udemy and Coursera, but do not feel like I'm learning as much as I'd like

Maybe you're not challenging yourself sufficiently. Try to find something that will be very difficult for you and start to attack it.

Are you enjoying your work? Is it challenging you? It might help if your "day job" was the primary driver of your learning, vs fringe efforts
Could it be that you've exhausted the easy things to learn? I feel that at some point it gets hard to keep the same learning velocity as the knowledge you are acquiring gets more complex and difficult to grasp. Also major breakthroughs are much rarer. While learning things similar to previous subjects seem trivial. Learning new programming languages for example. Once you've accumulated enough of then pattern start to repeat and learning the next one becomes more and more trivial to the point where it doesn't feel like learning the same amount of stuff as previously.
I try to work through hard technical material. Personally, I enjoy both technical books and MIT OCW lectures. There were a number of courses in school that I was interested in and didn't have time for, so I've been looking at the online equivalents.

"Working through" means doing exercises and projects. Reading or watching material without applying it doesn't help.

I aim to spend an hour a day on this. It doesn't always happen, but it's a reasonable enough goal that I can find time for it most days. Occasionally, I'll take a full day to study on the weekend.

Some specific recommendations:

  books:
    SICP (https://mitpress.mit.edu/sicp/)
    K&R
    The Art of Computer Programming (if you have lots of time)
    On Lisp (http://www.paulgraham.com/onlisp.html)
    Learn you a Haskell
    Types and Programming Languages
    CLRS
    The Dragon Book (Compilers, http://www.amazon.com/Compilers-Principles-Techniques-Tools-2nd/dp/0321486811)

  OCW Courses:
    6.172 (High performance engineering)
    6.046 (Algorithms)
This is just what I've been interested in and is by no means comprehensive. Outside of CS, math is great to learn if you haven't studied it formally.

I've found it's best to pick a topic you know enough about to be motivated to study it, but haven't done serious work in.

Just out of curiosity, how much of TAOCP have you worked through in terms of exercises? I'm currently working through Concrete Mathematics and while it's a very good book, I'm also finding it very challenging, so I'm a little hesitant to even think about working through TAOCP...
I've only used TAOCP for reference. Working through it is on my to-do list, but I'm not sure when I'll get there.

The problems are ranked by difficulty, so you might be able to work your way up to the harder ones.

Part if the plateau might be not knowing the new stuff cold. There are times when it's hard to progress if your base understanding is kind of shaky. as you actually use the new stuff it'll gel, and open up new avenues for inquiry.

I'd also suggest Haskell. compare this: http://www.joelonsoftware.com/articles/LeakyAbstractions.htm... to abstractions from math. mathematicians ensure the abstractions never leak. they make the rules, there is no way out of the game. this kinda points in that direction: http://conal.net/blog/posts/denotational-design-with-type-cl...

I think the most important thing is just keep trying.

Since I left University, I have gone through a few periods where I felt that I had plateaued and stopped climbing, both in my career and in terms of learning. To snap out of this, I found the following helpful:

a) I changed my perspective. In University, learning was broken up into easy to digest semester long chunks. In four months, I would write papers, write exams and receive marks which sort of indicated what I had learned. Since University, I have had to change my expectations, both in terms of chunks of time and in terms of feedback. I try to remind myself that I am learning, but sometimes I just learn in chunks that are almost too small to notice.

b) I keep a journal about what I am learning and what I am working on. This journal tends to be long on opinion. Every few months, I go back and read how far I have come. For me, there is no better way of seeing how far I have come than to read how wrong I used to be. Hacker News helps with this, since there is no shortage of extremely smart people who are willing to tell me that I am wrong.

c) I added hobbies. When I was in University, learning was my job and all of my hobbies and social interactions were built around this. Since University, I have picked up some hobbies. For me, lifting weights and jogging started off as a way to solve a serious health/stress problem and evolved into a bonafide hobby. I may not be learning as much as I was in University, but I can bench press my weight now and run 10km at will. Progress (of any sort) is addictive for me and it forces me to keep finding ways to progress.

d) I got into public speaking. In University, I belonged to a Toastmasters chapter, but after University, I not only joined another chapter, but I started seeking out speaking opportunities. Not only did my public speaking improve, but I have learned an immense amount through speaking in public. The old adage that you never really know something until you can explain it to someone who knows nothing is 100% true.

Right now, my biggest challenge is to incorporate meditation into my day to day routine. I love meditating and I know that it makes me a better, more mindful person, but it is hard for me to incorporate it. My hope is that a little more mindfulness will keep me from obsessing about the big picture (where change is so slow) and keep me in the moment.

Good luck, my friend and if you need anyone to talk to, my email is in my profile.

I like your journal idea.

It occurs to me that I just assumed you meant a physical journal, when that wasn't in the post. I feel like that would help me a fair bit compared to a digital one (I find physical books easier to focus on. Something to do with the spacial consistency, I think).

I thought training doesn't increase intelligence. Does it?
Even if that is the case, what you are basically saying is: "Why try getting better at anything?". I can't see that as a functional path through life.
Well, I meant different things. He probably should apply a right tool to the problem? Like take a vacation, skiing or something, read non-technical book, sleep more etc?
It may not directly increase intelligence but it will solidify what you know. Explaining something to others requires a deeper level of understanding in my experience. It will also show you what areas you don't know and give you opportunity to learn those things as well.
The brain is plastic, why wouldnt intelligence also be so? https://en.wikipedia.org/wiki/Neuroplasticity

>Neuroplasticity involves the higher cognitive functions as well as memory and motor and sensory functions. No part of the brain is an exception. IQs of retarded individuals have been raised. Even thought and imagination, as brain scan technologies have clearly demonstrated, can change the structure of our brains.

http://www.nas.org/articles/Education_and_Intelligence--Part...

Try teaching other people. It's amazing what you find you don't know by explaining things to others. If there aren't people who want to learn what you know then post on a blog or forum and get feedback from those who are interested.
I must second this. I worked as a TA for 2.5 years while pursuing my Master's degree, and I learned a whole lot more by teaching than by studying. The most amazing thing is to be able to tell students that you have absolutely no idea of the answer to their questions, but that you're going to find out together.
Do you have any suggestions for starting to teach?
First, teach something you are interested in. This will keep you going when something is challenging. Even if you don't consider yourself a "pro" in the subject, you can always get to that level.

Find somewhere you can teach and receive feedback. I teach piano to students and several times I've been caught with a question I had to look up. The best thing you can do is say "I don't know but I'll figure it out for you". Plus, this way you also have to figure out a way to explain it in a simple method to those you are teaching.

Feedback is really important because it will be how you can affirm what you know and also give you opportunities to branch out. If you aren't getting feedback on a blog, forum, or wherever you may just need to find the right place to share your knowledge.

Great answer, I will add to this that you need a lot of patience. So yeah, if you are not interested in the subject, this gets a whole lot difficult.
Apprenticeship Patterns[1] was linked in a thread a while ago and its got some good ideas.

I think that learning a lot can hurt the overall effort, Focus on one or two things at a time and use them to do stuff. Try and get to the 'know what you don't know' stage for each thing, even if you cant do something at the moment knowing what steps you should take to get there is a good feeling.

[1]: http://chimera.labs.oreilly.com/books/1234000001813/index.ht...

I want to say this to my Product Manager, and if aren't doing this already try investing 10-20% of your time on doing hands on work. Details matter.
I wasn't interested in studying at a university, so I have plenty of things to learn. I usually work from home and I learn a ton every day. That's primarily because I always have a book or two around and read about new stuff on HN. Luckily, the world of programming is huge, so there's always something to learn. In my opinion, at least reading a book on general programming is beneficial to everyone, especially managers.
- Write prose. I find my verbal fluency (and my inner monologue) become far more dull when I haven't written anything in a while

- Keep alcohol consumption to a minimum, even a single glass of wine impacts memory formation and recall.

- Get lots of sleep

On the booze: Alcohol's effects on memory are indeed severe, but mostly at high doses and with chronic consumption. Also, this is very individual and varys from person to person, as most things in bio do[0]. Additionally, OP mentioned that they want to stay sharp, and alcohol does have a positive effect on creativity in low doses, something we all know in coding[1]. In the end, OP should trust themself and drink as deemed appropriate (check with a Doc of course).

Sleep though, yeah, try to get more of that. Exercise too. Oh, also eat right. Hmm,... maybe should lawyer up and quit FB too, or so I am told... :P

[0]https://en.wikipedia.org/wiki/Effects_of_alcohol_on_memory

[1]https://xkcd.com/323/