Ask HN: What to do when there isn't fluidity in coding?
I've been coding on and off for over 10 years. I can get stuff done by banging my head against the wall but it's never been fluid. I still am always fixing silly bugs and forget the tools I'm using if I don't use them on a daily basis etc. So I don't have side projects or after work projects. Anyone ever experienced this? Is it fixable?
15 comments
Now, I would estimate the chances of this being your issue somewhere below 20%. But for me, there was a time when coding was a joy, I was completely in the flow writing efficient code, tweaking data structures to squeak out more performance, and generally loving building stuff and learning stuff, getting a thorough understanding of how things work from Maxwell's equations to high-level languages.
Then after spending a few years in employment, the environment getting more and more toxic (and less and less about technical excellency and more and more about dirty politics), you can lose sight of how that stress gradually eats away at you. Ultimately, I just couldn't work anymore, I couldn't focus. I started having panic attacks. I was completely lifeless, fatigued all the time. I would later find out that my endocrine system had become completely out of whack. Long story short, it took me well over an year to get to be barely functioning again. I had a lot of anxiety symptoms, and clearly fit 100% most technical descriptions of burnout (but don't put too much weight to it, after all burnout is just a label attached to a set of symptoms). But worst of all, you become very cynical. Your brain gradually gets rewired to model the world as a cold, harsh, evil environment, where most everyone is against you. You end up in a state of learned helplessness, you fall victim to avoidant behavior to sooth this permanent state of doom that you're feeling.
The way out is learning to relax. Learning to rewire your brain, to have fun again. Learning to solve your anxiety problem. Following the steps from a book like "Anxiety & Phobia Workbook" by Edmund-Bourne is almost mandatory. Exercising regularly is mandatory. Depending on how deep you are in the hole, how much social support you have, this may be one of the hardest thing you achieve in your life (keep in mind that most drug addicts never make it out alive - see "In the Realm of Hungry Ghosts" by Gabor Mate).
In short, it may be that you stress yourself too much. Life can and should be a joy. What I've described above is my experience, which is closer to one end of the spectrum, but even if your issues are much more minor, the same rules apply. But again, the chances are small that anxiety is the source of your issues, given the limited information in your post.
Then after spending a few years in employment, the environment getting more and more toxic (and less and less about technical excellency and more and more about dirty politics), you can lose sight of how that stress gradually eats away at you. Ultimately, I just couldn't work anymore, I couldn't focus. I started having panic attacks. I was completely lifeless, fatigued all the time. I would later find out that my endocrine system had become completely out of whack. Long story short, it took me well over an year to get to be barely functioning again. I had a lot of anxiety symptoms, and clearly fit 100% most technical descriptions of burnout (but don't put too much weight to it, after all burnout is just a label attached to a set of symptoms). But worst of all, you become very cynical. Your brain gradually gets rewired to model the world as a cold, harsh, evil environment, where most everyone is against you. You end up in a state of learned helplessness, you fall victim to avoidant behavior to sooth this permanent state of doom that you're feeling.
The way out is learning to relax. Learning to rewire your brain, to have fun again. Learning to solve your anxiety problem. Following the steps from a book like "Anxiety & Phobia Workbook" by Edmund-Bourne is almost mandatory. Exercising regularly is mandatory. Depending on how deep you are in the hole, how much social support you have, this may be one of the hardest thing you achieve in your life (keep in mind that most drug addicts never make it out alive - see "In the Realm of Hungry Ghosts" by Gabor Mate).
In short, it may be that you stress yourself too much. Life can and should be a joy. What I've described above is my experience, which is closer to one end of the spectrum, but even if your issues are much more minor, the same rules apply. But again, the chances are small that anxiety is the source of your issues, given the limited information in your post.
I feel much the same way. But let me start off by saying that I think being able to get into "flow" or "fluid coding" is actually a rarity, something I need to plan for. It means things like working from home for a few days in a row to really get into things, and I can make huge progress (velocity at least double for those days).
The office environment just isn't a place for good flow. Too many distractions, emails, slack, meetings, people, commuting, etc. This isn't to say that I don't get some work done at work, but it's certainly not efficient. Sadly most people I have worked with don't care that I'm not being efficient, they care that I'm working on whatever they want me to work on (which may or may not be the right thing).
My suggestions on this are to try to automate your tools, like writing scripts, and writing notes about your development procedure, even if they are only for you. I have a alias for a file that has all sorts of commandlines that can run anywhere and really helps me remember what it is I needed to run.
Many times, these notes have eventually gotten pushed to something like confluence, and are useful for other people, so they love them. They aren't copious, or descriptive, but the bare minimum to help me remember what I need to do.
Context switching can also make you associate your work environment with being distracted. Then even when you aren't being interrupted every 15 minutes you worry you might be, which becomes a problem of itself.
Despite what every growth hacker / struggle porn story tells you, you don't need to have side projects or after work projects to be successful. They are supposed to grow out of interesting things you care and have passion for, not be another job on the side. Don't worry about that at all. Spend that time to de-stress and enjoy life.
The office environment just isn't a place for good flow. Too many distractions, emails, slack, meetings, people, commuting, etc. This isn't to say that I don't get some work done at work, but it's certainly not efficient. Sadly most people I have worked with don't care that I'm not being efficient, they care that I'm working on whatever they want me to work on (which may or may not be the right thing).
My suggestions on this are to try to automate your tools, like writing scripts, and writing notes about your development procedure, even if they are only for you. I have a alias for a file that has all sorts of commandlines that can run anywhere and really helps me remember what it is I needed to run.
Many times, these notes have eventually gotten pushed to something like confluence, and are useful for other people, so they love them. They aren't copious, or descriptive, but the bare minimum to help me remember what I need to do.
Context switching can also make you associate your work environment with being distracted. Then even when you aren't being interrupted every 15 minutes you worry you might be, which becomes a problem of itself.
Despite what every growth hacker / struggle porn story tells you, you don't need to have side projects or after work projects to be successful. They are supposed to grow out of interesting things you care and have passion for, not be another job on the side. Don't worry about that at all. Spend that time to de-stress and enjoy life.
If there’s no way to reduce the number of tools, languages and environments you use. Then perhaps a memorization tool like shortcutfoo (https://www.shortcutfoo.com) could be of help.
And if you’re using many different editors, then maybe learn VIM and use a vim plugin in all of them.
And if you’re using many different editors, then maybe learn VIM and use a vim plugin in all of them.
Context switching is computationally expensive, a lot more so in brains. You should set aside a few days to work on a project when you feel like it, we 're not machines. It can be a weekend or part of a holiday, but in my experience banging against the wall and unable to achieve flow is very unproductive.
> forget the tools I'm using if I don't use them on a daily basis
Looks like you answered your own question. The more you do something, the more fluid it becomes.
Looks like you answered your own question. The more you do something, the more fluid it becomes.
For me it always depended on the language. LISPs help me a lot because it's easy to iterate on real code in the repl. I'm not too great at just writing out a large program before running it. I have this need to test out every little bit of code. With verbose OO languages sometimes it's faster to google than to actually run the relevant code so that kills my fluidity.
I work in lots of different languages and what I do is I try to keep most of my tools consistent between languages.
For example I try to stick to the Idea suite of IDE’s. I use it for java, ruby, Go, Rust, JavaScript, and some others. This way my editor and shortcuts are always the same, debugging is mostly the same, etc.
For example I try to stick to the Idea suite of IDE’s. I use it for java, ruby, Go, Rust, JavaScript, and some others. This way my editor and shortcuts are always the same, debugging is mostly the same, etc.
Are you constantly switching languages and environments? Maybe try to focus on the ones you're best at.
Old. I've thrown monitors across the office, broken phones (landline), been moved across the office. It's part of the process. I've learned to control and use. Flow is a rare - but a beautiful thing you have to earn.
If it’s any help, I’ve been using anki (spaced repetition software) to keep my useful-but-not-frequently skills sharp. I feel it’s effective for programming languages and shortcuts.
How do you do that for programming languages? Are there existing cards for that?
I've found that using pre-built decks of flashcards is not useful. I at least need the experience of building the deck in order to make it useful.
No, I make my own, but it’s nothing special. Short snippets of code with “what does this do”, “what’s the syntax for _____ in LANG” or “best too for X in standard lib”.
> forget the tools I'm using if I don't use them on a daily basis
I've found Anki flashcards useful too.
I've found Anki flashcards useful too.
What tools are you using?