Hacker News new | ask | show | jobs
by theWold 3838 days ago
I would second a therapist/counselor/etc. Did that during college (thanks to the couseling services my Uni provided), and it helped me just not feel too crazy.

I spent a long while, and still do, thinking about what am I heading towards. I know a lot of people don't know this and there is no way I will ever know all the details to make a decision, but I prefer the 'fail to plan, plan to fail' montra. Thus I plan, but am willing to scrap my planes in the wink of an eye, contingent on new infromation.

This is what I did and maybe you'll find something helpful in this method. Find what makes you tick. Make a list of things you enjoy doing. Try to be specific as you can. (You like novelty. Okay then maybe something like 'I like to learn a new trade skill (wood carving, stained glass, etc.) every 6 months.') Try to begin to boil it down to a long list. Keep adding things to the list, and take a break from the list every now and again (just to bring a fresh pair of eyes to it). If an idea seems broad, try to break it down (when I did/do this, I try to be able to tell someone the idea and they would be able to go out and do it exactly how it is in my head).

Then next to the list make columns like 'Financially sound ideas' (buying 32 Raspberry PIs to make a large cluster computer is not as financailly sound as Learning how apache2 works), 'Speed of doing' (you can learn how to write C at a basic level in an afternoon, but learning how to weld may take you longer), 'Practical for you to do' (if you weigh 400lbs and wanting to go backpacking through the Rockies is not as practical as learning how to write better on a whiteboard), 'It would bring me immediate gratitude', 'it would bring me long term gratitude', etc.

After you make a large list rank each column with 1-5 or some other ranking system (I liked the 1-5 because I could say I really hate, sort of hate, neutral, like, love an idea). Then you can hopefully start to see things that rank high in each category you made. (e.x. I really want to take a trip around South America (drive for two weeks or so through the Andes). It isn't practicle, it isn't quick to do, it isn't finacially sound, but it would be one hell of a memory. It is something I want to strive towards and go one day.)

1 comments

I can write good code in Java, Scala, Python, Perl, MATLAB, Javascript, and now learning Go. I can configure Apache, nginx, Ansible, Docker... I worked with nearly every favor of Linux, OpenSolaris/OmniOS, CoreOS, etc. I learned how to do things in big data, business intelligence, algorithmic trading. Learning new things is not a problem, this is what I enjoy. Most of them are marketable.

What's killing me is inability to stop learning and start focusing on doing, intensely and persistently. When I have a job, I can't focus on the job. When I try to run my business, I can't focus on administrative side and routine (and successful routine is the essence of every business). I only want to learn, even if it is self-destructive, even if there are many more urgent and important things to do.

I can't say that I'm affected by this sort of thing to the same extent that you are, but the feeling of 'suddenly losing interest after gaining understanding' is easy to relate to. I have no problem keeping focus for hours trying to understand how a particular bug could possibly be happening, continuing to work after hours until I figure it out. When I'm still in that 'learning / understanding' phase, there's no effort required. I want to know what's going on here and it will bug me until I get it. And hopefully, the end solution is a couple line fix.

And very often, it is. But sometimes it ends up being the type of problem that requires a much more involved architecture change to solve correctly. It's not just a one line change, but something the whole team will have to sign off on. Which will require at _least_ 100 times the work of the usual two line fix. By this point, I already 'know' how to solve the problem, and it could be very easy to lose interest. But the error emails keep on coming. And they're easy to ignore because "they're just those weird errors we get from that 3rd party API we use so there's nothing we can do about it."

But these emails are really annoying. So I find I have to reframe the problems from understanding how to fix the issue to how to get buy in and get the fix actually deployed, and I haven't run out of these types of problems at any company I've worked at, and that works for me to keep my attention.

I can relate to your situation. While I have not completely figured it out, one thing I realized is that, even though I shelve many of my side projects, occasionally I come back to some of them, with fresh enthusiasm and move it forward another step or two (before loosing enthusiasm again). I realized that given enough "cycles" at least some of them are bound to be completed.

So a new approach I am trying is the "GPU Pipeline of side projects". First, I choose to trim my list of side projects to a few important ones (4 is a number I like, so four). I work on them in a parallel pipelined fashion. So I have one that's more advanced, one that is being setup, one that is being fleshed out, one still in ideation phase (you get the idea).

Secondly, I realize that when building things, the novelty can come from "recursing down to the details". For example, setup a AWS pipeline for code deployment would mean, learning how to setup an Ec2 deployment, then a Chef or Puppet instance, then easy config management of them, best way to document our setup (gitbook etc) and so on.... So if we use our boundless curiosity, which is both a strength and a weakness, to look a little deeper, we will find enough novelty to keep going even in a "single" project.

What I realized is that one single project is like a LISP S-Expression. (project). You (eval project), and it returns (list sub-project1 sub-project2 interesting-research3 wonderful-idea4) All you have to do is keep eval'uating the sub-expressions till you hit an "atom" of truth to share with the world.

Your conclusions regarding "GPU pipeline of side projects" and "recursing down to the details" resonate with my personal experience a lot. Great s-expression analogy!
How deep do you feel your learning is? Are you comfortable with SOLID concepts for example? I find a lot of intermediate developers who aren't, or the implications of it despite a lot of different toolsets being conquered.

I would suggest you set up with a consulting firm - Thoughtworks for example tend to try out a lot of new things across the entire company. This means that getting from 0 to somewhere, quickly, is something they can really sell. The downside is the poor bastards like me who have to deal with no one wanting to throw out the 'prototype' version of the solution.

You sound like me, (also adhd). Jack of all trades.

So, novelty seeking, I do this: - work part-time on something i'm passionate about as it's products that help others. Research based, which brings more novelty naturally. Also, passion for me was the most important thing to keep my focus, not "interesting" as "interesting" gets boring. - spend rest of the time mostly building random side-projects that won't be finished, but I don't care, that's not the point.

Seems to be working well.

I agree with some of the other comments that advise you to look into jobs which involve novelty, instead of swimming against the current.

With your generalist skills, you may make a great developer evangelist who can give overviews and demos of new technologies at developer talks, internal corporate trainings, or online trainings. They get paid well and I have come across some right here on HN.

You say you write good code in a number of languages but honestly I highly doubt it. If you really haven't stuck it out on any project for the long haul how could you possibly know that your code is any good? In my opinion one of the most important features of good code is long term maintainability.
My Scala code: https://github.com/atemerev/FXCore/blob/master/src/main/scal...

My Java code: https://github.com/atemerev/pms/blob/master/src/main/java/co... (saved me probably man-years in my consulting projects).

Code samples for Javascript, Matlab, Haskell and Go available on demand. :)

I think you missed my point entirely. Code looking pretty, being nicely formatted, and having comments is certainly part of but not nearly the whole picture in what makes good quality code that is easily maintainable through the ages. If you've never really stuck it out long term on a project, you have never felt the pleasure or pain of your previous work.
This particular code serves me well (in my consulting efforts) since 2008 and 2011. As for maintainability, I still clearly understand it and it can be immediately used everywhere.

If, by maintainability, you mean "looking at the mess I did some years ago in some large project and see how it turned out", then yes, I avoided such projects and large teams. Most of my code was written either by me alone or as a part of 2-3 persons team.

Honestly, with the skills you list, you can definitely find something that is rewarding, both intellectually and financially. You view your attraction to novel technologies as a downside, but it's kept you remarkably up to date and you probably have a much wider (though may be a little more shallow) knowledge base. Have you considered pursuing things like project management, marketing, developer support, QA, etc? Or maybe freelance? There are jobs where you can still apply your knowledge, but on smaller project.
Finding jobs is not really difficult (even in Switzerland without knowing any local languages, I can usually land something in 1-3 months). Staying there is another story.