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?
My first thought is to just get another job, one that I already know how to do. But that's outside of my control, this is my only client and will be for a few months.
Any advice is appreciated.
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!
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).
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.
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.
In the end I just said fuck it and looked for a full time job, I took a pay cut in terms of hourly rate but when you average everything out across lean and fat times I'm only about 20% down over a year for working 37.5hrs instead of 60+ every week, week in week out.
I'm a year into that now and mentally I'm in a much better situation than a year ago but it's taken nearly the entire year to get even close to feeling 'normal' again.
In terms of learning stuff quickly, change you scenery - Go read the documentation on a laptop in a coffee shop instead of at home (or a local library if money is really that tight) :- When I really need to grok something I get out the house and do it, two cats and the boy makes it hard at home.
Am I overestimating how much you're working? Or is the income being consumed by something?
I'm author of the San Diego Homeless Survival Guide and Pocket Puter:
https://sandiegohomelesssurvivalguide.blogspot.com/
Best of luck.
Downsize your spending, get rid of expensive mobile plans, subscriptions for stuff like Netflix. Get cheaper house/apartment, learn how to cook.
Work on your confidence. Attend local meetups and talk with people. Chill out and stop whining. There plenty of people that would swap places with you. You are a healthy white male with a family living in the US.
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.
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.
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.
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=) 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
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.
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.
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.
https://medium.com/trafficandcopy/the-learning-curve-is-kill...
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.
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.
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.
Good luck, I hope you find an answer that works for you.