{"exhaustive":{"nbHits":false,"typo":false},"exhaustiveNbHits":false,"exhaustiveTypo":false,"hits":[{"_highlightResult":{"author":{"fullyHighlighted":false,"matchLevel":"partial","matchedWords":["jev"],"value":"<em>Je</em>trel"},"comment_text":{"fullyHighlighted":false,"matchLevel":"partial","matchedWords":["deer","flow"],"value":"Yeah, speaking as an increasingly older developer, &quot;resistance to interruption&quot; is probably one of the cardinal skills you can learn as a developer.  The ironic thing about it is the actual skill you're developing when you do this is extremely valuable even when doing &quot;solo, uninterrupted work&quot;, because, ironically, one of the greatest sources of distractions is your own mind's brainstorming.<p>In doing &quot;solo, meditative work&quot;, the hardest skill you have to develop is keeping your mind trained on the direct thing you're trying to accomplish, and not letting other parts of the problem intrude on your though process.  If you've got any drop of ADD/ADHD (which by the &quot;any drop&quot; definition basically includes everyone), your mind will constantly get pulled away from the &quot;task at hand&quot; and start thinking about other parts of the problem.  You'll be working on subsystem A (i.e. the task at hand), and you'll start thinking about how it interacts with subsystem B, and start thinking &quot;oh gosh, I didn't realize this will also impose some constraints on subsystem C&quot;.<p>One of the key reasons this is a mind trap is because these side-things are genuinely useful;  you'll run into caveats as your mind starts exploring &quot;the interaction of subsystem A and B&quot;, and start to realize B's actually going to impose some hard constraints on A.  The naive thing to do is to assume &quot;well, there's no point in designing A because of what I just discovered - I better figure out all those constraints first&quot;.  What happens then is a sort of writer's block - no matter what you end up thinking of, you constantly get distracted with caveats and gotchas, and rarely manage to have a session where you can fully &quot;think through&quot; subsystem A and draft a complete design.  If this tendency isn't policed, you'll have a tendency in all of your &quot;<em>deep flow</em>&quot; sessions to have your mind start the session by thinking about the real thing you're trying to build, but then aimlessly wander off onto the paths of all the ways your thing interacts with other stuff.  Don't get me wrong - it's a useful thing to be able to do, but it needs to be deployed &quot;at will&quot; rather than being a gravity well your mind gets pulled into by compulsion.<p>Ideally, even though you know some of it will violate some constraints, it's a hugely useful skill to be able to keep your mind on target and fully think through &quot;subsystem A&quot;, any constraint-violations-be-damned.  Sure, it won't work, but at least you'll have a mental sketch of the whole thing which can then be amended.  Usually you'll find that the sketch is still mostly right, and more importantly, you'll now be able to conceptualize &quot;the whole thing&quot; instead of always getting stuck on the first third.<p>---<p>The skills to maintain - and <i>reestablish</i> this &quot;mental target lock&quot; seem IME to be identical with the ones you need to stay in a flow state even with people around you constantly distracting you.  Even if no &quot;other people&quot; are distracting you, and you're in a private office, you'll still be distracting yourself, so \u2014 I've found that a bulk of the improvement has to come from you, yourself, developing mental discipline on this, rather than from you having a favorable environment.  Otherwise you'll have a private office to just daydream about development, rather than constructively thinking through things.<p>A favorable environment can be great to have, but the ability to rapidly recover from distractions is something that makes a developer extremely effective even if they've got a favorable, external-distraction-free environment, rather than being a skill that becomes worthless if the external distractions are removed."},"story_title":{"matchLevel":"none","matchedWords":[],"value":"The Generational Divide in Software Developers"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"https://hackernoon.com/the-generational-divide-in-software-developers-bco354a"}},"_tags":["comment","author_Jetrel","story_27947157"],"author":"Jetrel","comment_text":"Yeah, speaking as an increasingly older developer, &quot;resistance to interruption&quot; is probably one of the cardinal skills you can learn as a developer.  The ironic thing about it is the actual skill you&#x27;re developing when you do this is extremely valuable even when doing &quot;solo, uninterrupted work&quot;, because, ironically, one of the greatest sources of distractions is your own mind&#x27;s brainstorming.<p>In doing &quot;solo, meditative work&quot;, the hardest skill you have to develop is keeping your mind trained on the direct thing you&#x27;re trying to accomplish, and not letting other parts of the problem intrude on your though process.  If you&#x27;ve got any drop of ADD&#x2F;ADHD (which by the &quot;any drop&quot; definition basically includes everyone), your mind will constantly get pulled away from the &quot;task at hand&quot; and start thinking about other parts of the problem.  You&#x27;ll be working on subsystem A (i.e. the task at hand), and you&#x27;ll start thinking about how it interacts with subsystem B, and start thinking &quot;oh gosh, I didn&#x27;t realize this will also impose some constraints on subsystem C&quot;.<p>One of the key reasons this is a mind trap is because these side-things are genuinely useful;  you&#x27;ll run into caveats as your mind starts exploring &quot;the interaction of subsystem A and B&quot;, and start to realize B&#x27;s actually going to impose some hard constraints on A.  The naive thing to do is to assume &quot;well, there&#x27;s no point in designing A because of what I just discovered - I better figure out all those constraints first&quot;.  What happens then is a sort of writer&#x27;s block - no matter what you end up thinking of, you constantly get distracted with caveats and gotchas, and rarely manage to have a session where you can fully &quot;think through&quot; subsystem A and draft a complete design.  If this tendency isn&#x27;t policed, you&#x27;ll have a tendency in all of your &quot;deep flow&quot; sessions to have your mind start the session by thinking about the real thing you&#x27;re trying to build, but then aimlessly wander off onto the paths of all the ways your thing interacts with other stuff.  Don&#x27;t get me wrong - it&#x27;s a useful thing to be able to do, but it needs to be deployed &quot;at will&quot; rather than being a gravity well your mind gets pulled into by compulsion.<p>Ideally, even though you know some of it will violate some constraints, it&#x27;s a hugely useful skill to be able to keep your mind on target and fully think through &quot;subsystem A&quot;, any constraint-violations-be-damned.  Sure, it won&#x27;t work, but at least you&#x27;ll have a mental sketch of the whole thing which can then be amended.  Usually you&#x27;ll find that the sketch is still mostly right, and more importantly, you&#x27;ll now be able to conceptualize &quot;the whole thing&quot; instead of always getting stuck on the first third.<p>---<p>The skills to maintain - and <i>reestablish</i> this &quot;mental target lock&quot; seem IME to be identical with the ones you need to stay in a flow state even with people around you constantly distracting you.  Even if no &quot;other people&quot; are distracting you, and you&#x27;re in a private office, you&#x27;ll still be distracting yourself, so \u2014 I&#x27;ve found that a bulk of the improvement has to come from you, yourself, developing mental discipline on this, rather than from you having a favorable environment.  Otherwise you&#x27;ll have a private office to just daydream about development, rather than constructively thinking through things.<p>A favorable environment can be great to have, but the ability to rapidly recover from distractions is something that makes a developer extremely effective even if they&#x27;ve got a favorable, external-distraction-free environment, rather than being a skill that becomes worthless if the external distractions are removed.","created_at":"2021-07-26T18:55:41Z","created_at_i":1627325741,"objectID":"27963657","parent_id":27962297,"story_id":27947157,"story_title":"The Generational Divide in Software Developers","story_url":"https://hackernoon.com/the-generational-divide-in-software-developers-bco354a","updated_at":"2024-09-20T09:05:58Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"Lio"},"comment_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["deer","flow","jev"],"value":"That sounds very useful and it's not something that vim gives you out of the box but I'm not sure that anything you're describing is not possible via LSP plugins and extensions.<p>Running a server to automatically search for duplicate code sounds exactly like the kind of task that LSP can handle.<p>Since VSCode has tools for <em>deep flow</em> analysis (although I can't say how they compare to Intellij) then I'm pretty sure I can access them from neovim.<p>Maybe if I was a Java developer something like Intellij would look more attractive but I've never really been impressed with the rest of the <em>Je</em>tBrains IDE family.<p>Horses for courses I guess.  If there's some tool you want that's only available in Intellij then that's what you'll use."},"story_title":{"matchLevel":"none","matchedWords":[],"value":"How Did Vim Become So Popular?"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"https://pragmaticpineapple.com/how-did-vim-become-so-popular/"}},"_tags":["comment","author_Lio","story_23689091"],"author":"Lio","children":[23702388],"comment_text":"That sounds very useful and it&#x27;s not something that vim gives you out of the box but I&#x27;m not sure that anything you&#x27;re describing is not possible via LSP plugins and extensions.<p>Running a server to automatically search for duplicate code sounds exactly like the kind of task that LSP can handle.<p>Since VSCode has tools for deep flow analysis (although I can&#x27;t say how they compare to Intellij) then I&#x27;m pretty sure I can access them from neovim.<p>Maybe if I was a Java developer something like Intellij would look more attractive but I&#x27;ve never really been impressed with the rest of the JetBrains IDE family.<p>Horses for courses I guess.  If there&#x27;s some tool you want that&#x27;s only available in Intellij then that&#x27;s what you&#x27;ll use.","created_at":"2020-07-01T15:09:44Z","created_at_i":1593616184,"objectID":"23702253","parent_id":23700564,"story_id":23689091,"story_title":"How Did Vim Become So Popular?","story_url":"https://pragmaticpineapple.com/how-did-vim-become-so-popular/","updated_at":"2024-09-20T06:29:19Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"The_Colonel"},"comment_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["deer","flow","jev"],"value":"There are things like refactoring which technically are supported by vim extensions, but are just utterly inferior to the dedicated IDEs.<p>For example - you know &quot;extract method&quot; refactoring. Pretty basic thing and I assume vim can do that. But on top of that when you extract the method, Intellij will go through rest of your code and try to figure out if some other parts could be automatically refactored to use this new extracted method as well. It will offer to change the method signature if needed to do that as well.<p>Intellij will - as you type - notify that the code you're writing is structurally duplicating an existing code and offer an intention to automatically refactor the code to remove the duplication.<p>Intellij offers an integration with databases - in my code I use a lot of SQL queries - intellij can connect to the data source and scan the schema. When you then type queries into strings, Intellij recognizes them as such, offers autocomplete to the tables/column and validates the query for correctness (also allows you to click through to the actual data view). It understands like 20 SQL dialects and things like JPQL as well.<p>Another example is the <em>deep flow</em> analysis which can point out logical mistakes as you type (things like NPEs). This is very helpful in daily programming, extreme example of that is shown here: <a href=\"https://blog.jetbrains.com/idea/2019/11/intellij-ideas-static-analysis-vs-the-human-brain/\" rel=\"nofollow\">https://blog.<em>je</em>tbrains.com/idea/2019/11/intellij-ideas-stati...</a><p>Most of the time when people showed me a &quot;vim IDE&quot;, it looked like IDE from the 90s - highlight was that it showed you the list of class members, had a snippet manager and could sort of rename a variable. State of the art is much farther since the 90s though ..."},"story_title":{"matchLevel":"none","matchedWords":[],"value":"How Did Vim Become So Popular?"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"https://pragmaticpineapple.com/how-did-vim-become-so-popular/"}},"_tags":["comment","author_The_Colonel","story_23689091"],"author":"The_Colonel","children":[23702253],"comment_text":"There are things like refactoring which technically are supported by vim extensions, but are just utterly inferior to the dedicated IDEs.<p>For example - you know &quot;extract method&quot; refactoring. Pretty basic thing and I assume vim can do that. But on top of that when you extract the method, Intellij will go through rest of your code and try to figure out if some other parts could be automatically refactored to use this new extracted method as well. It will offer to change the method signature if needed to do that as well.<p>Intellij will - as you type - notify that the code you&#x27;re writing is structurally duplicating an existing code and offer an intention to automatically refactor the code to remove the duplication.<p>Intellij offers an integration with databases - in my code I use a lot of SQL queries - intellij can connect to the data source and scan the schema. When you then type queries into strings, Intellij recognizes them as such, offers autocomplete to the tables&#x2F;column and validates the query for correctness (also allows you to click through to the actual data view). It understands like 20 SQL dialects and things like JPQL as well.<p>Another example is the deep flow analysis which can point out logical mistakes as you type (things like NPEs). This is very helpful in daily programming, extreme example of that is shown here: <a href=\"https:&#x2F;&#x2F;blog.jetbrains.com&#x2F;idea&#x2F;2019&#x2F;11&#x2F;intellij-ideas-static-analysis-vs-the-human-brain&#x2F;\" rel=\"nofollow\">https:&#x2F;&#x2F;blog.jetbrains.com&#x2F;idea&#x2F;2019&#x2F;11&#x2F;intellij-ideas-stati...</a><p>Most of the time when people showed me a &quot;vim IDE&quot;, it looked like IDE from the 90s - highlight was that it showed you the list of class members, had a snippet manager and could sort of rename a variable. State of the art is much farther since the 90s though ...","created_at":"2020-07-01T12:19:54Z","created_at_i":1593605994,"objectID":"23700564","parent_id":23699838,"story_id":23689091,"story_title":"How Did Vim Become So Popular?","story_url":"https://pragmaticpineapple.com/how-did-vim-become-so-popular/","updated_at":"2024-09-20T06:28:58Z"}],"hitsPerPage":20,"nbHits":3,"nbPages":1,"page":0,"params":"query=deer-flow+jev&advancedSyntax=true&analyticsTags=backend","processingTimeMS":27,"processingTimingsMS":{"_request":{"roundTrip":22},"afterFetch":{"format":{"highlighting":1,"total":1},"merge":{"total":2},"total":2},"fetch":{"query":11,"scanning":12,"total":24},"total":27},"query":"deer-flow jev","serverTimeMS":29}
