Ask HN: How do you stay sharp?

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.

  • 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.

  • 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.

  • 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.

  • Learning new programs like Sketch, or taking classes on Udemy and Coursera makes no sense to me if you don't apply it.

    You don't really know unless you apply it. I grew up disassembling and competing cracking programs, then I learned c because assembler was too slow for creating things like compilers that I wanted to create.

    Then I had to learn c++ in order to create graphic interfaces for my programs.

    Then I needed python in order to develop faster... java, objective c, c sharp, they provided me with things that I needed.

    Then after years of programming I created a company and felt behind. We were so f*ching slow. We needed something else: we discovered metaprogramming in Lisp. Much better then, things improved.

    We modified the CLang compiler in order to do much better than anybody else what we did. We were pretty successful.

    But it is not enough. We want to change the world. We want people of the world understanding each other using their own languages. We want to understand DNA and end cancer and aging. We want robots that drive and cook. We want to understand nuclear fusion. We want to improve battery technologies, to remove the salt from sea water cheaply. We want to make inexpensive LED plant growing so we can travel to Mars or Venus.

    And all the technology that we have is not enough for solving those problems. When you face those problems you became humble and you met the best people you could ever imagine.

    Surrounding yourself with really smart people you will learn in a year what you will in your entire life if you only face trivial problems.

  • >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.

  • Battlefield 4. Laugh if you will, but playing this game (or games like it) against other humans is an incredible mental exercise. There is little downtime and twitch does win the day. Interestingly, I usually only play when I'm too tired to code productively anymore - and playing brings me wide awake.

    It's amazing to me when watching others play how they miss cues I can now see. Or how my mind has subconsciously optimized where to aim in a heated firefight depending on the gun I'm using (sometimes sternum, sometimes head - I more notice I'm doing it as opposed to actually doing it).

    Plenty of good advice here, but high-speed mind activities should be included in any advice of "staying sharp" (i.e. Battlefield, RTS computer games, iphone brain games I suppose)

    (relevant: Starcraft performance factored by age: http://journals.plos.org/plosone/article?id=10.1371/journal....)

  • 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.

  • 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.

  • - 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

  • 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 don't particularly enjoy online courses. The density of technical information is very low. I prefer reading papers and then doing a nose dive on related papers to fill in the knowledge gaps. Papers are like nodes of knowledge with edges to relevant information (references). For things usually not covered in universities, papers are pretty much crucial. For example, I found it a lot more useful to read the original or early b-tree and octree papers as opposed to looking them up in text books. And these directly affected my code. The DynamoDB paper was another one that affected my work thinking, even though we don't do a lot of distributed systems.

    There are many famous papers out there (search on HN, the topic gets posted frequently). I highly recommend you choose a topic, and just look up the important papers in that topic (google scholar is a great tool for checking citation numbers).

  • 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...

  • Workout, eat smart and get more than 7 hours of sleep a night most nights. It's absolutely amazing how much these three things affect everything in your life.

  • Work at a smaller company. Like 10 people. The smaller the company, the more roles each person does.

  • Find a bigger pond. Big fish in small pond is a good way for short term benefits, but it limits the growth.

  • 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.

  • I think the reason for this is not only the obvious "young brains learn faster" but also different hormone levels, ego and so on. When you are younger, you overestimate your skills and take on things that are actually above your level. Once you get older you start thinking more realistic about your skill-set and realize that other people are smart, too. You become better at estimating how much time a given task might take and you realize that you have other things to do.

    The problem is, you cannot grow if you do not push yourself to the next level.

    Practising something you already kind of know how to do will mainly optimize speed and avoiding mistakes and will let you plateau slightly above your current level. To really advance at something you have to take on tasks that are out of your comfort zone. You can then reapply the learned skills and concepts back to other areas.

    I think you have to actively massage your brain to prevent it from stagnating and freezing the algorithms it applies the most. It think we are blessed to work in a field that is conceptually challenging enough that we can actually observe this. In another area you would just wake up one day saying stuff old people say :D

  • From the above description, it seems like you might be trapped at a local maxima. Try expanding your horizons in other areas. You will gain perspective including ways to get "unstuck". You will find other maximas, and realize that you have a long way to go. For example, try reading about medicine or art - that can give you a perspective on "how" to think and "why" and connect the dots, rather than the "what" of the latest framework. To give you a more concrete and prescriptive example you can apply, let's say you are learning Sketch and teaching yourself UI/UX. How about exploring color - the science and art behind it? Pick up a color palette program, and look at famous works of art and good UIs - what palettes do they use and why? Can you come up with your own palettes? Why did you choose what you chose? Can you use a palette from some apps like Slack or Monument Valley and build your own UI? Basically try to go in an adjacent or even orthogonal direction. You are on the right path... you seem intellectually curious and a lifelong learner. Just shake things up a bit and that can pay dividends. HTH.

  • Have you considered the idea that you are still learning but just not things that you care about/appreciate?

    When I left school and started working I also felt like I wasn't learning, but when I sat down to think about it, I actually was learning a great deal. I just didn't feel like I was learning because I didn't care for anything I was learning.

    You will almost certainly learn new things on the job but those things are likely things aligned to your employer's interests and not your own. I think you might want to see what interests/excites you and try to dive into that material instead of learning things that other people think are useful or suggest.

    Even in the comments here you can see people recommending learning new frameworks and others recommending classical texts like SICP or even learning functional languages. Clearly each of these groups of people thinks what they are learning is useful or important. On the other hand, they might not think what the other group is learning is very useful. I certainly don't feel very happy learning a new language or framework, but other people don't like learning theory unless they can use it to build something.

  • I find that having a voracious appetite to explore as many associated fields and topics to your area of work or interest is not only interesting and enjoyable but gives your mind some pause on the close-at-hand stuff while you gain the very important pieces that inform a big picture view of what you are doing. Plus, you can often get new outside-the-box ideas this way.

  • 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.

  • Start your own company: you'll learn a ton, and be forced to stay sharp, since your survival depends on it.

  • 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.

  • 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.

  • What are your side projects? IMO learning is only useful is it lets you build something.

  • > 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.

  • 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.

  • 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

  • > 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.

  • 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.

  • 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

  • Concentrate on things that you suck at or avoid; technology or not, building a good stone wall is as enjoyable as an elegant RAILS deployment.

  • Concentrate on things that you suck at or avoid; technology or not, building a good stone wall is as enjoyable as an elegant RAILs deployment.

  • I find my time limited but I have a 35 minute commute to work and a 35 minute commute back home. So I download podcasts and listen to them.

  • If you're challenged, you're learning more and staying sharp. Stay challenged.

  • Open-source projects, specially the ones out of my comfort zone.

  • I thought training doesn't increase intelligence. Does it?

  • Meth, mainly.

  • No rebate ...

  • Start a startup

  • I think it's possible that people who tend to over-intellectualize, possibly are missing some tenderness in their lives.

  • Open source projects are a free and self-reinforcing way to be on top of the latest tech, build a resume and give back.

    You can do so pretty easily via GitHub. Sign up to a few mailing lists, not every important project is on GH.

    Consider a daemon you use really often. Familiarize yourself with the code until you master it.

  • Try something new outside of software. You will learn some new things that will kick-off new learning in software.

  • 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.

  • I work as a consultant so I am always getting exposed to new industries and technologies. Sometimes I am learning because I absolutely have to in order to be successful on the project I have signed up for, or otherwise I find my self learning new things because I have either heard of a topic through a friend/colleague or I have a general interest. I usually have 2 or 3 topics i.e. Ruby, Systems Thinking, Presenting, that I want to focus on.

    For each of those focus topics I then: - Read a lot! I try and get a book done each week, maybe a second on the weekend. I have worked hard at improving my reading speed and if I really focus when I read (sit down at a desk, remove any distractions, get a nice coffee) I find I can get through material very quickly. While I am reading I take notes, I use these notes later on for writing (see later point) - Listen to podcasts/audiobooks, I like to put on an audio book and do a repetitive form of exercise or just walk around, I live in a city with lots of great places to walk so heading out for a 4 hour walk in the evening is easy and I can easily get through an audiobook, I take notes while I walk too. - Write about it, if I am learning about something I like to write about it too, this helps me cement the topic I am learning. - Do a course or workbook on the topic

    Apart from the focus topic areas, I am subscribed to the Economist, Bloomberg Business week and various mailing lists, I like to scan through these articles and read any that catch my attention, I feel that having these taps on broader interest areas keeps me from getting too bored or narrow in my field of specialty (which is software).

    I think the thing that helps me the most though is that I work as a consultant. I move industries (banking, retail, government, biochemical) and technology (c#, java, ruby, javascript) every few months so I am constantly finding myself in the deep end in new fields - this drives me to be on top things and is a good motivator to rapidly learn.

    I have learned more in my 4 years as a consultant then I did in the 4 years at uni and 3 years working for other software shops.