
Ask HN: How do you get past difficulty learning what's needed for a new job? - _diyu
I have one client right now who pays me out of pocket, but the work he&#x27;s asking is beyond my understanding. It&#x27;s dealing with a new system that has a lot of parts. It&#x27;s well documented, but when I read the documentation, it&#x27;s just not sinking in, I&#x27;m not &quot;getting it&quot;. My eyes just gloss over and I re-read the same sentence over and over for 3 minutes without any progress. This is the same thing that happened when I tried to learn Rails about 8 years ago.<p>Is it possible to push past this and force my mind to learn new things? Is being 32 years old and in very poor health a show-stopper for learning new complex concepts?<p>My first thought is to just get another job, one that I already know how to do. But that&#x27;s outside of my control, this is my only client and will be for a few months.<p>Any advice is appreciated.
======
jmercouris
I know you, I recognize your username. You wrote the tool for OSX: phoenix,
hydra, mjolinr, etc. I think you are a very talented developer. I think you'll
definitely be able to get a job in Chicago easily. There is no shortage of
tech jobs.

If it is too much stress for you to work as a freelancer, just get a full time
job. There is no shame in that!

~~~
kovrik
Yep, recognized the name too!

My advice would be: fake it till you make it.

Relax, try to split the whole thing into small pieces, try to understand how
they interact with each other, try to understand the dataflow.

Also, in my experience you can never actually grok the whole system at once.
It is a slow process.

And what always helps me: separate things that _actually_ matter for your work
and everything else (the power of abstraction!). Not sure how to explain it
properly. Basically, when I start working on a new project, the number of new
things (new words, terms, abbreviations and other domain-specific stuff) is
often overwhelming. But in most cases it doesn't matter. Most systems are
pretty much the same: data flows here and there, this thing validates stuff,
this thing calculates something, this thing stores results etc. They just have
different names and use different words, but in reality they are the same
thing.

Finally, it's just a job. Take care of yourself, your health (including
mental), relax, take it easy.

UPD: also, really, take care of your health! Eat healthy food, do exercises/go
to gym, daily walks (it makes a huge difference!), sleep well.

Also, some supplements help me a lot: vitamin D3 + K2, Zinc, Fish Oil,
Magnesium + Calcium. For me it made a huge difference! You can also try
L-Theanine (with coffee).

~~~
stunt
I don't like the idea of "fake it till you make it." Sorry but that is
horrible. Just think a second if everybody starts doing that!

Just for a second, consider a different job, and think what will happen if
everyone start doing that. If your doctor does that, a truck driver does that,
if an engineer does that when building a bridge.

I'd say, you should be honest and direct. Just tell your employer/manager: I
don't know that, and I need x amount of time/resource to learn it if we need.

You shouldn't fake it. They should know the real cost, the actual capacity.
Either they will support you to learn it as part of your job, or they know
that it works better if they think about alternative solution/design base on
actual capacity/resource.

Nobody can blame you for not knowing something as long as you are willing to
learn and they are willing to support you.

"fake it till you make it" also doesn't help you with your stress condition.
it will make it even worst as you and your employer don't have real
expectations.

Don't build that kind of culture in your job market and society.

~~~
kovrik
But everyone already does that. When you get a new job, you can't just merge
in seamlessly like you've been working there for ages.

Of course, saying 'fake it' I don't mean 'just pretend that you know stuff,
but don't actually learn and don't work hard'. You have to learn, you have to
work hard to really understand the project etc.

------
DoreenMichele
_in very poor health_

Do some care-taking first, then try to sit down and work.

Daily hot baths in the evening can help.

Upping the cleanliness of your abode can help.

Getting pickier about your diet with an eye towards good nutrition can help.

A daily walk can help.

Sometimes, coffee or another source of caffeine can help you concentrate.

Bonus: If you regularly work on your health, it can get better.

~~~
_diyu
I'm not in a position for any of that. We're living literally week to week,
and every single hour that I'm awake I need to work. Our bills are past due
and we're overdrawn $50 in the bank right now. I'm making $25/hour with this
one client, and it's barely enough for the life we have. I would downsize our
lifestyle if I knew how but we can't even afford to move to a cheaper city. As
it is right now, the only choice I have right now is to just work on this
client project every hour that I'm awake, and sleep no more than 7-8 hours per
night.

~~~
tbabb
Something doesn't add up. Assuming "working every hour you're awake" means
something like 12 hours/day 6 days a week, that'd be a $90k/yr salary at your
stated rate of $25/hr. A more realistic (but still severe) schedule of
10hrs/day 6 days a week would be $75k/yr-- even in an expensive city, far from
the brink of homelessness.

Am I overestimating how much you're working? Or is the income being consumed
by something?

~~~
_diyu
I've only been a consultant for 2 months, and the reason I say every waking
hour is because we are only just now getting caught up with bills, but we're
still pretty far from being stable, and this weighs heavily on my
concentration, so while I may work 12 hours in a day, I only get maybe 6-8
hours out of this work that I can actually justify billing for, because the
rest of it was just spent staring at a screen and not really knowing what to
do. And besides that, I have several children who need at least some of my
help and attention throughout the day, and my wife who needs my help with
them. So there goes another 2-4 hours. So even though I'm trying to get to a
computer and type stuff in to count for billable hours throughout the day,
this or that kid comes in needing something, or it's suddenly lunch or dinner
time, or like basically everything breaks up the day and ruins any productive
flow I could get into.

~~~
tbabb
It sounds like you need to manage your time, including making time to take
care of your life, especially if you're spending handfuls of hours every day
simply stressing. If that time is going to be not-work, then it might as well
be time spent managing your life and your future.

If you can convert three hours of "sitting and stressing" time to two hours of
"self and family-care" and one hour of "productive work", then that is an
increase of productivity and pay.

Also, as others have mentioned, reading and learning a system is billable
time. Programming is thinking, not pushing buttons. (Staring off into space or
stressing or distracting yourself with social media is not, however).

It would probably do you well to find a way to clearly separate work and life
time/space. Work in a library or a coffee shop away from distractions, and set
aside time during the day to be focusing on work and work alone. Take
responsibility for controlling what you spend your time doing.

~~~
ScottBurson
I mostly agree, but staring off into space can definitely be billable time. In
fact, I think even time spent off-task can be billable, at least partially, as
the brain needs time to digest what it has been presented with; I frequently
find a short break can get me unstuck on a problem.

I think Patrick McKenzie recommends contractors bill by the day instead of the
hour, partly to get them to consider necessary break time as billable. Of
course, if you get to the end of a day and realize you really have been very
distracted all day, you don't have to bill it as a full day.

Family distractions can be a big problem, though. You have to have blocks of
several hours — I think the ideal might be two 3-hour blocks in a day — where
you _know_ you're not going to be interrupted, short of a true screaming
emergency. Getting this across even to one's spouse, never mind a young child,
can be very difficult. Getting out of the house might be the only way. As Paul
Graham once observed [0], even the _prospect_ of an interruption can be enough
to keep one from getting into a flow state.

[0]
[http://www.paulgraham.com/makersschedule.html](http://www.paulgraham.com/makersschedule.html)

~~~
_sdegutis
This is where I get stuck actually. I try to digest some information, but then
I start worrying that I'm taking unreasonably long, that my client is
definitely going to ask for a justification for why something that should have
only taken 1 hour ended up taking 3 hours (because it could take him 1 hour or
even less), and I won't have a good answer.

~~~
ScottBurson
Does the client actually ask for such a justification?

Anyway, let's say that you're right: something that would have taken him only
1 hour takes you 3 hours, because you're still learning about the code. I can
tell you, speaking as someone whose time is valuable and who has to delegate
tasks to people who don't know the code as well as I do, that I know it's
going to take them longer, but it's an investment we have to make to get more
people up to speed.

I understand that in your circumstances, "relax a little" is not easy advice
to take, but it might be the best advice I can give you — along with making
sure you have enough uninterrupted work time. It does sound like you need to
get out of the house.

------
Terretta
My guess — the kind of thought you need to “grok” that system (slow deep
understanding) is unavailable to you when dealing with the kind of thought
caused by your situational stressors (fight or flight survival).

Doesn’t mean you’re unable to learn new things. It means your cave-man brain
doesn’t think learning system docs is as important as slaying predators and
fortifying your cave.

Ironic, since the way out of the stressors is doing the one thing your brain
doesn’t think will help. You have to get your subconscious to believe that.
Tell it to yourself constantly, Thoreau prayer and ‘this too shall pass’
style, ‘meditate’ on the idea that you have a clear path to no stress because
you have a developer’s mind, and by using that developer’s mind, you will slay
the predators, fortify the cave, and protect your family.

Give yourself the permission to let the urgent stress go, so your subconscious
can work on the important thoughts.

------
vorpalhex
You are in burn out. It's not that you aren't intelligent or capable of the
work, but it sounds like you just haven't clocked out in a long time.

You can fight burn out for a short period but you can't delay it forever. You
resist burn out by working out hard, engaging in stimulating non-job work (eg
a hobby) and engaging in intentional relaxation.

Ultimately you need to find a way to take time off.

------
nickls
I had a similar problem at one of my first jobs, I was given ownership of a
few different highly complex and lightly documented codebases: sshd, kerberos,
ntp, netsnmp, etc.

Other commenters are giving great advice around burn out, depression and
health -- I'll leave that to them.

On the technical side, two things helped me with understanding complex code
bases:

1\. Write and draw on paper the object model, stack, protocol, interface,
anything you can glean from the code or docs. Start small and keep adding to
it. This helps you "chunk" the new information and have somewhere to attach
new insights.

2\. Run the system (or parts) in debug mode with maximum logging. Save the
output and then start stepping through it line by line from the top. Find the
source of each output in the code, try and understand the general area and
then move to the next line. This will start to give you a good understanding
of program flow.

Combined these two techniques will make it much easier to understand what is
happening and when -- all you have left is to figure out why.

------
potta_coffee
I'm 34, I've recently had to learn a ton of new stuff, some that I really
didn't want to learn (asp.net? From the early 2000's? Yuck). Also lots of more
complicated things - I'm flooded with information daily and it's a chore
keeping up.

I almost always have the feelings you're experiencing in the beginning. The
trick is to sidestep the mindfuck and keep trying. Ignore that dissonant
feeling that comes with not understanding. In my experience, success is a
function of grit more than anything else.

Also, a practical strategy that helps me to push through issues like this, is
to get out a spiral notebook and a pen and to break the problem down into
small chunks, and try to tackle those one at a time. If I'm really stuck, I'll
write a list of all of my problems, with a space underneath. Then I'll think
about the problem a little, and write a possible tactic to try for solving the
problem. It sounds stupid but it really helps (I'm just applying the [Feynman
Algorithm]([http://wiki.c2.com/?FeynmanAlgorithm=](http://wiki.c2.com/?FeynmanAlgorithm=))
here).

Finally, 32 years is not old. You're just barely hitting your stride. I'm 34
and I've recently discovered that my experience is valuable, and gives me an
edge over my younger peers. You're only as old as you feel. If you stop
believing in yourself, it's a self-fulfilling prophecy.

Good Luck

------
thecolorblue
It sounds like there is a financial aspect to what you are looking for help on
so I would like to comment quickly on that.

You may have some options to adjust your debt/finances to lower your costs. If
you do have credit card debt, there are services to consolidate them. If you
have reliable income, even if it is freelance type work, you can use that to
get a small business loan which could be less expensive then putting expenses
on a credit card. If the income is not reliable try to make a deal with your
client to make it a longer term contract. Guaranteed income is more value in
the long run than big chunks of money at unknown times.

There are some things you might want to try to expand your current business:
If you feel like you have a working model for completing work, look for a
business partner, whom you trust, to help turn that into more business. If you
know your client well, think of other products or services you could provide
them that would be valuable to them (that they would pay for) but would be
less time consuming.

Right now, it sounds like your time and money are your most precious assets,
but you have a wealth of knowledge and a working relationship with a client.
Think of ways to exchange your knowledge and social capital (relationships)
for more time and money for you.

------
raguilera
The free coursera course "Learning How To Learn" really helped shape the way I
learn and practice new coding concepts/languages/frameworks, etc. Here's a
pretty good summary of it: [https://medium.com/learn-love-code/learnings-from-
learning-h...](https://medium.com/learn-love-code/learnings-from-learning-how-
to-learn-19d149920dc4) Barbara Oakley (from the course) also wrote a book
called A Mind for Numbers if that's more of your style. A tip from the book
for your problem of "My eyes just gloss over and I re-read the same
sentence..." would be to stop and break that sentence down into fragments, and
understand each fragment before you try to comprehend the whole. I would often
just reread the same paragraph over and over, but that one little tip has
really helped save me time and aided my comprehension of the subject.

------
shoo
i appreciate that it sounds like you're in a stressful situation in terms of
your family's cash flow.

is it possible to switch your arrangement with your client to daily billing?
in a way that doesn't leave you worse off financially, compared to what your
average daily revenue is currently based on hourly billing. i dont have
experience with pitching this to people who had previously agreed an hourly
rate, but some of the other folks here might have suggestions for how to frame
such a conversation so it comes across as a win for your client as well (focus
on the output of your work rather than measuring your time inputs, maybe?).

if you can do so, it might make it easier for you to justify timeboxing some
time every day for self-care and non work stuff rather than feeling the need
to bill hours, and help you produce better work in the long run.

------
nickthemagicman
Honestly, I'm in a similar boat where I work constantly and gave alot of
external stressors.

You're a knowledge worker. All the work you do...you do with your mind.

You NEED to separate from your distractions.

If you have more pressing needs that you can't get out of your mind it will be
impossible to learn.

My suggestion is figuring out how to get your mind in a place where its 100%
focused on your work and you are able to find that flow state where you tune
everything out and can work and learn.

Things that help me are

1> Managing your real life like a project manager. Get the most stressful
priority things finished as fast as possible. Or at least in a place where you
understand and feel more in control.

2>Automate as much as possible(autopay bills etc.) In your life and outsource
tasks to your family that they are capable of. You pay their bills they can
chip in..

The goal of this step is to get rid as many trivial physical and external
stressors so you can get your head focused on work.

2> Distraction free place to work. This is critical. Coffeeshop, coworking
space, private home office....all it takes is a single distraction and your
mind is out of the game.

3> Carve out large blocks of time where you can just...work. No appointments,
no meetings, no interruptions...this may require scheduling meetings in the
morning and working in the afternoon. Also, beware of friends and family..they
will try to cut into this time...and it's very difficult to say no to people
you love.

4> Do practice excercises in your mind and compare them to real world. I've
found when Im having problems focusing on things it's because it's too
abstract sometimes. And I have to bring it down to earth. Like start run a
chunk of code thru a function in your head and then run it on the computer to
see if your mindmap is correct. Like a poster in this thread said it's active
learning which helps alot I think.

5>Physiological hacks: Some people say Yoga, antidepressants, nutrition,
and/or excercise help. I typically dont practice a single one of those
regularly but do notice I'm deff able to.focus more after I excercise. I think
just getting your mind at peace is way more useful than Physiological hacks
but these do help. Studies have shown that excercise is as efficacious as anti
depressants. So take that however you want.

Anyway good luck sir.

------
georgecalm
There was a thread not so long ago about approaching large codebases. I think
you might find some of the advice there useful:
[https://news.ycombinator.com/item?id=16299125](https://news.ycombinator.com/item?id=16299125)

------
mabynogy
I think you're just in a local bottom of the learning curve. Tell your
customer you need time to understand his product. If he complains, say someone
else than you would probably take more time.

[https://medium.com/trafficandcopy/the-learning-curve-is-
kill...](https://medium.com/trafficandcopy/the-learning-curve-is-killer-be-
aware-of-it-31404ce0d398)

------
hnarayanan
First off, do not give up. This is a struggle for even the most experienced
people when dealing with a sufficiently complex new system.

Try to focus on small, noticeable wins. Focus on a narrow part of the system
that seems relevant, and try to start fiddling with and see what happens. If
the system has tests, try going through them as it is often easier to
understand how a system ought to behave than the details.

------
notburnt
Try to write out difficult sections (pen & paper) to get started.

I've found that gives my brain the time it needs to get a handle on overly
complex or boring texts.

Assume it's going to take you time so don't aim for completing too much the
first few times. Don't worry about how much time it's taking, just worry about
getting a couple of conceptual wedges in place. Follow pomodoro method.

------
hsienmaneja
Take care of your health separately but as a first priority. Take it easy and
don’t put too much pressure on yourself.

See if you can get hands on with the system, preferably a staging/dev clone.
Break it, try changing a feature, adding a feature, dig in anywhere that’s
comfortable. Just reading docs even excellent ones isn’t always the most
efficient path to grok a new system.

------
danso
When dealing with a code base that has tests, I try to write a few of my own
and run them successfully. No matter how trivial, at least it feels like more
active learning than just reading.

------
RickJWagner
I find that drawing pictures helps. (Especially if I use a tool like Libre
Office draw, which lets me easily keep electronic copies.)

Good luck, I hope you find an answer that works for you.

