14 ms·
What do you really get from IDE-driven development?
- rektide 5y ago> How much effort, in the non-mathematical sense, are you willing to expend to discover if there is a lower minimum? Go over the hill to your left and you discover a minimum that is greater than the one you were just in. Go over the hill to the right and you find a lower minimum. > This happens in just about anything you can imagine, but let’s consider IDEs. You start using an IDE and it makes one particular thing particularly easy, and it makes it so easy that you don’t go looking for something even easier. You can’t spend all of your time wondering if there’s a slightly better way of doing things. This argument resonates fairly well with me. I generally view IDEs as low commitment, a rapid learning curve to completion, with very hard caps on what you are going to find. You'll understand what the tool gives you, and then you'll be done. There's some trading/collecting hooks to keep you feeling like you can improve, to collect all the best plugins to improve the base system, but you're still a consumer, hunting for solutions, and you never really gain intimacy, understanding, or general prowess, evaluating your gains from a position of general ignorance as to what you're really buying/using. Being an end-user is being stuck at some minimum, having milked the curve you're at, until someone else comes disrupts your world for you. You make no real gains on your own, develop no only superficial mastery, mastering of the pane-of-glass atop the environment you dwell in. It's really really hard to make a stronger better pitch for the school of lifelong learning & struggle. Often IDEs are a great way to understand what is possible, what tools to expect, but once you have a baseline, getting back into the command line, the terminal, the console & re-learning the hard way how to re-enact many of the things your IDE does for you is really hard. The learning curve is super slow, it takes ages to get out of the bottom reaches & start to feel ok. But you're gaining mastery not just of the programming job, but of the operating system, of the shell, of the real genuine honest environment of computing. Your ability to understand & see what is happening is so much higher, has such a more real connection than the pane-of-glass interface. Your ability to evaluate & direct yourself grows & amplifies over time, only if you invest in yourself & think of yourself as someone seeking a truthful engagement. In general, I feel like the world has a lot of "what is the use case"/"what is the business value" thinking, and there's kind of an aggressive anti-exploratory value system that hates geekiness, that hates learning, that despises the enrichment of humankind, that rejects possibility. To insist on fast immediate obvious worth is to miss the big picture, is toxic to healthy ecosystems & diversity's neandering, exploring many many many tentacles. I want to see a world culture that believes in honest, genuine interactions, not fancy indecypherable veneers of things. Papert's Constructivism/Constructionism is a spiritual boon, one essential to what humanity became, and we should cherish, protect, & grow this light. https://en.wikipedia.org/wiki/Constructionism_(learning_theory) https://en.wikipedia.org/wiki/Constructionism_(learning_theo...
- dmitriid 5y ago> getting back into the command line, the terminal, the console & re-learning the hard way how to re-enact many of the things your IDE does for you is really hard. So, if the IDE gives us those tools, what is the exact benefit of "going back and learning the hard way"? > To insist on fast immediate obvious worth is to miss the big picture, is toxic to healthy ecosystems & diversity's neandering How much time do I have to spend in the good old hard learning command line to replicate, say, 5% of Intellij Idea's refactoring capabilities and code navigation?
- rektide 5y ago> So, if the IDE gives us those tools, what is the exact benefit of "going back and learning the hard way"? Becoming a person of unlimited potential. Being capable of understanding & tackling anything, understanding the world you live in, not living like a marrionette shadow puppet your life. > How much time do I have to spend in the good old hard learning command line to replicate, say, 5% of Intellij Idea's refactoring capabilities and code navigation? Two afternoons learning CodeMod would provide a lifetime of infinite capabilities, versus some very limited preset scripts. You would be vastly vastly vastly greater, for a tiny amount of dickering around on your own.
- throwaway675309 5y ago"Becoming a person of unlimited potential." that's a very prosaic way of essentially saying nothing. It all depends on what you want out of the system that you're using, for me personally the programming language, the IDE, the library that I incorporate, are all a means to an end, the goal to bring a unique idea into reality. I value the creation of new ideas more than the implementation itself and thus your suggestion is unsuitable for those of my kind.
- rektide 5y agoI want to improve & grow, get better at computing. This idea of being good enough, embracing mediocre capabilities for life & only focusing on shirt term output forever is exactly the local minima this post is warning against. Selling yourself a compromised future, being a passive consumer of technology, is anathema to the greater objectives of life & computing, in my view. Selling yourself on comprimise, swearing you have served yourself, also seems hollow when one is deliberately snubbing trying to raise themselves to a perch where they are capable of evaluating. The anti-elite pitch is easy because it doesnt even have to get good enough to assess the merits & values of the school of lifelong learning & struggles. As for your precious output, it might be totally different & better if you had opted to invest in yourself & see technology as less than a lever you know how to crank.
- kcb 5y agoNo. IDEs are a tool that makes programming more efficient. If you somehow fail at using that tool it's on you.
- pvorb 5y agoI'm not sure I buy his argument. I see many programmers who produce inferior code with an IDE and many programmers who produce excellent code with an IDE. I'm in the Java ecosystem, where IDEs are pretty much ubiquitous. But I've used plain editors in the past mostly for other languages. All in all, I don't see the link between using an IDE or not and the quality of the outcome. But I do see the link between using an IDE and development speed, where refactoring is just so much faster and less error prone if you have a decent IDE. I haven't tried copilot yet, so can't say much about it.
- zem 5y agohis argument is pretty specific: 8x-------------- He’s a really good programmer, but that’s not why his solutions were better. Since he didn’t have suggestions to guide him, he read the docs and by simply perusing them, was aware of methods and other features that the IDE did not suggest. There were better ways in the libraries they were using that weren’t apparent in the IDE. And that makes sense: in the interface for a suggestion in an editor, how much complexity can you really manage? 8x-------------- it makes sense to me - if the API is large and complex enough that you can discover good ways to do things via serendipity, IDE autosuggestions will stick you in a local maximum.
- sockpuppet69 5y agoIs the 8x meant to be scissors? 8<——————— Looks nicer. Never seen it before. Good idea. Gonna use it from now on instead of quotes or > on every line!
- zem 5y agoyeah, it's a habit I picked up on usenet! useful for sites that manage quoted text awkwardly.
- rendall 5y agoI usually format it this way. I like the scissors, though. Interesting. > "He’s a really good programmer, but that’s not why his solutions were better. Since he didn’t have suggestions to guide him, he read the docs and by simply perusing them, was aware of methods and other features that the IDE did not suggest. There were better ways in the libraries they were using that weren’t apparent in the IDE. And that makes sense: in the interface for a suggestion in an editor, how much complexity can you really manage?"
- jrc2022 5y agoLet's all just start writing code on a typewriter... I remember the 90s IDEs. They were not fun. But still better than nothing! Thanks to Copilot, etc bad programmers can now get a lot further, and perhaps it would be good for them to struggle so that they can become better, but don't lay bad code at the feet of an IDE.
- Koshkin 5y ago> not fun In the 90s IDEs were all the rage, from Turbo Pascal to Visual Basic - the pinnacle of usability IMO.
- slowmovintarget 5y agoPeak IDE was Delphi 2 Professional, IMHO.
- alkonaut 5y agoThe benefit of an IDE is integrating compiler/editor/debugger/test runner/linter/profiler/source control/etc If these things somehow prevent you from writing code that is as good as it would be without these integrations then what on earth were you doing? Apart from the “copilot” like things (which almost no one uses and which is orthogonal to the concept of IDEs, any editor can have that) what is “IDE-driven development”? Taking the first autocomplete suggestion after typing a dot in Java? instead of what? Reading docs? It’s not like the IDE having autocompletion for valid method names is forcing your hand to blindly take the first one or the wrong one? This reads a bit like that rant against syntax highlighting making developers bad.
- jolux 5y agoThis is an argument against programming by autocomplete, not an argument against programming with IDEs. IDEs make this method of programming possible, but they don't make it mandatory. The primary thing I use autocomplete for is to insert method calls that I already know that I want. Secondarily I use it like a documentation browser to read the documentation for every function that I could call if I'm trying to figure out a better way to do something. If you program by just selecting functions at random without taking the time to figure out the problem you're solving and the easiest way to solve it with the tools at your disposal, eschewing the IDE will not save you. I do plenty of programming without autocomplete as well and it doesn't bother me. But it's certainly nice to have, it reduces a lot of the friction of finding documentation and putting code on the page when you already know what you want.
- ardit33 5y agoautocomplete is a memory multiplier.... it allows developers to be able to use vast/larger array of languages without having to remember every detail of the syntax. As long as you know the concepts, autocomplete helps fills the details. This is especially useful if you are switching between multiple languages, from Java to Swift to Objective-C in one project. Autocomplete helps you keep productive and makes context switching much easier.
- lmilcin 5y ago> This is an argument against programming by autocomplete, not an argument against programming with IDEs. Exactly. IDEs fulfil an important function of removing repetitive and mundane tasks. The goal is to be you, the programmer, to know what you want to do and the tool, IDE, to make it happen as efficiently as possible. That can happen through parsing code, showing documentation, showing references, alerting to obvious bugs, etc. But it can also be fulfilled by generating code (esp. in environments that like boilerplate) and possibly also by finding pieces of code to achieve the operation you need. Sure, by using autocomplete constantly I may impair my memory same way that using Google Maps impairs my ability to drive without navigation. So what? I care that the task is completed and my mind is available to thinking about higher level problems rather than how to exactly search the code for references or locate the documentation. Isn't the goal of software development actually building something rather than obsessing about the process?
- Ozzie_osman 5y agoThere's a common argument from craftsmen embedded in here. When something decreases accessibility of something difficult, the people who already know how to do the difficult thing criticize it, because from their eyes, it brings the average quality down. But ease and accessibility always win. This goes for IDEs, programming languages, frameworks, etc. Think of a language like PHP, which made it so easy to code that countless shitty websites were made, ridden with spaghetti code and security issues. But, I was amongst probably tens of thousands of script kiddies who cut our teeth on PHP and eventually learned how to "properly" build web products. My first startup's MVP was a giant functions.php file and a bunch of templates, FTP'd onto a VPS. Probably wouldn't have gotten into it if instead I had needed to learn something like C++ or Java. Yes, making something easier to do decreases the quality on average. But even skilled professionals can benefit from better accessibility. And it's hard to quantify the full benefit to those who wouldn't have been able to do the work without the lower barrier. Personally, yes, I know if I blindly use Github Copilot I'll prob write some shitty code. But it just makes everything easier/faster to do. So I use it and put in a tiny bit of extra effort to make sure I'm not abusing it. And it's game-changing. I'm also sure tools like Copilot will improve at a pace that is much faster than people expect. It will recognize deprecated calls, misused calls, errors, security holes, etc.
- Ozzie_osman 5y agoA more eloquent way of putting this: lowering a barrier to do X will result in lower average quality of X, but more of it. Usually this is good, and lower barriers win. Unless it's like lowering the barrier to becoming a surgeon or something where the risk is high.
- nyanpasu64 5y agoRust's Send/Sync made multithreading easier, teaches people to write proper multithreaded code, and results in more reliable programs with less data races and race conditions. Rust's dependency managers makes dependencies easier, teaches people to add dependencies and transitive dependencies, and results in programmers not understanding their own programs. I think that building tools to teach better programming (eg. teaching memory-safe programming or safe languages, teaching patterns immune to SQL injection or parsing exploits) is a great thing. But given the choice between bad and no code, I feel that it's almost better for people to not complete projects, than to release code with serious functional errors (memory leaks and segfaults and dozens of runtime race conditions that each show up every month or so, requiring herculean effort to debug, or more often go unsolved and haunt users indefinitely) or security defects (eg. https://lukeplant.me.uk/blog/posts/wordpress-4.7.2-post-mortem/ https://lukeplant.me.uk/blog/posts/wordpress-4.7.2-post-mort...). It's obviously better to teach good coding than to discourage people doing bad coding, but it's a lot harder (Send/Sync was a non-obvious innovation, and Rust required immense effort to push to 1.0 and build an ecosystem) and I don't think I can do it. And I'm opposed to the principle of trading off your understanding of a program to get more functionality from leaky abstractions (complex languages, optimizing compilers, big library trees, and GPU drivers all leak, whereas out-of-order CPUs and cache hierarchies are a mostly non-leaky abstraction).
- deehouie 5y agoTitle is totally misleading. I use Rstudio, which is an IDE, and there's none of those "terrible" features in Copilet. Does it make my code terrible?
- deleted 5y ago[deleted]
- steve76 5y ago
- avl999 5y agoI can't speak for Github CoPilot as I don't use it nor intend to ever use it but I find this article extremely unconvincing. He is basically considering an IDE as an autocomplete suggestion automaton. For me the features of an IDE that I use and value (fast code browsing both across my code and the code of my dependencies, refactoring support and taking care of mundane stuff like code formatting and import statements) have very little to do with autocomplete method suggestions. I also find the workflow that author is describing where people blindly probe around until autocomplete suggests them a method that does what they want extremely unrealistic. Most developers will look up various libraries and options to accomplish a thing, indeed the only way you can get autocomplete to even work is if you kinda know what library/tooling you want to use. For example if you want to use a b-tree for something the IDE can't read your mind, you're gonna have to go on the internet and see the options available in the language of your choice, weight them out, decide on one, add the library to dependency management file in your language and only then will the IDE be able to provide any help.
- mikewarot 5y agoI've been using IDEs since Turbo Pascal came out. Delphi 5 was the most productive thing I've ever used for building GUI programs. Python and languages that support lists, dictionaries, etc. natively have an advantage as far as expressivity. Generics and other support in Lazarus, the Delphi clone I use, lag far behind. However, for building GUI programs, it's still the best option for me. Something even better for non-gui programs is IDLE, the python REPL... it lets you experiment with the data interactively, the make a program out of it, once you've figured out your algorithm, etc. Better support of REPLs inside the IDE would be the way to go, I think.
- zwieback 5y agoI learned programming before IDEs existed so I think I can join the author's crotchety old elitist club. As such I'm also a sceptic of anything AI-driven or crowdsourced. On the other hand, I recently allowed Visual Studio to use whatever their version of AI autocomplete is called and holy smokes - it can read my mind! Sure, you can complain about how things were better before the latest crop of tools allowed the unwashed masses to trample your domain but if you're smart you take advantage of the good parts while being aware of the bad ones.
- jart 5y agoI've always thought Lars Andersen's archery did a pretty good job making this point. https://youtu.be/BEG-ly9tQGk https://youtu.be/BEG-ly9tQGk What will the crossbow wielding programmers of the future look like and who will be selling the crossbows?
- throwthere 5y agoOn the theory level the article talks about I don’t really have a problem with IDEs Not always suggesting the sort of optimal solution so long as it reduces my cognitive load and gets the job done. Regarding copilot, I’d say it guesses the exact code I would write or code that is very similar to it over 50% of the time. My main complaint there is sometimes it oddly miss places a parentheses and sometimes it seems to block the code completion function of VS code. This is with typescript/jsx. Other than that which I assume is going to be fixed eventually copilots been a very pleasant experience for me.
- 999900000999 5y ago>We end up knowing less than we should and get less than we deserve. Speak for yourself. When I program it's to get things done, I need to read a text file. Auto complete me a solution. C# would be impossible without an IDE. Maybe you can write something in JavaScript, but any language with a large standard library is impossible sans IDE
- killingtime74 5y agoWhy stop there, why not go back to punch cards. If there are tools that save time why not use them. We aren’t at University sitting exams anymore
- dmitriid 5y agoAll these anti-IDE rants strike me as coming from people who have never actually used an IDE beyond "oh it's an editor with an autocomplete".
- thrower123 5y agoThey take pride in their masochism
- userbinator 5y agoIt's called exercise. Plenty of people do a lot of physical exercise when they could be content to stay still, but it's good for health. In this case, mental exercise keeps the brain healthy.
- dmitriid 5y agoTime you spend fiddling with tools trying to replicate a tiny portion of what an IDE offers can be spent actually doing mental exercises to keep your brain healthy.
- thrower123 5y agoIt's called working smart, not working hard. I would absolutely fire someone who refused to use the mechanized tree harvester I provided and insisted on felling trees with an axe, and that's about where I stand with respect to insisting on using PDP-10 era text editors over an IDE.
- __marvin_the__ 5y agoDefinitely this. I was a long time Notepad++ fan but immediately changed tune soon as I tried VS Code.
- EdwardDiego 5y agoTo be fair, he's spent most of his time coding in Perl. Perl is notorious to parse.
- xupybd 5y agoHaving spent a few years in Perl I understand some of the frustration of an IDE. I find dynamic languages don't gain a lot from an IDE. But if you're in something with stronger types like Java, typescript or F# the IDE is a God send. The best tool ever is refactor rename. When the IDE can parse your entire code base and rename just the function or variable you want it's amazing. Go to definition is worlds better too. I found, in Perl and JavaScript, these tools didn't work reliably enough so the IDE was just a slower tool. Also reading the documentation is important regardless of the tool you're using. I don't think that's a true reflection of IDE development.
- EdwardDiego 5y agoWell, what's the old saying - nothing can parse Perl, but Perl? As for JS and IDEs, you should try an IDE again. Far better.
- xupybd 5y agoHaha I've not heard that one. Perl is very much an unreadable code soup. I will have to try on next time I'm in plain JS. It doesn't happen often. I have a preference for strongly typed languages. I suspect I have something similar to dyslexia. I mix the spelling of words and sometimes even the words. Strong typing is the tool that makes that problem go away.
- sgbeal 5y ago> Perl is very much an unreadable code soup. It has been said that perl is the only language which looks the same both before and after RSA encryption.
- EdwardDiego 5y agoI use Intellij and it really does its level best to bring code insight to dynamic languages. But I fully agree wrt types. Even if I'm not using an IDE, types, or type hints a la Python, help me understand what's going on far better. I once heavily refactored a hand-rolled build tool written entirely in Python that read and write JSON. Everyone was terrified of touching it. Introducing Pydantic to replace dicts of dicts of dicts with dicts of App instances that had Environments immediately made the code far easier to understand. Then introducing type annotations and mypy completed the transition of a business critical tool from one everyone previously approached in what I called a "special forces" manner (get in, achieve your very narrow goal, get out before anyone notices you) to something where code flow was easily understandable. Immediately, the tool received a lot of attention and refactoring. Something like 20% of it was dead code, amd there was some functionality that, had it been used, would've corrupted the build state or just flat out died. And it was simply adding types that made this obvious, and made the code accessible to people who wanted to refactor it fearlessly. (Unit tests were entirely absent, but without the understanding of the code that types brought, how would you even start?)
- hackandtrip 5y agoRefactor functionalities in JetBrains tools probably saved tons of hours of incidents, typo bugs, copy and paste... only that makes IDE Driven Development as completely worthed it. Also, tools such as Tabnine take away the plumbing from coding - I am so much more focused on the high-level design and goal of what I am doing if I don't have to pass so much time trying to remember what I wanted to write...
- 908B64B197 5y agoSome schools out there encourage students to do as much as they can with the terminal (at least, for the first semester) and a simple text editor. The side effect is that there’s no IDE magic behind builds (it’s all plain makefiles and command line tools the students can run on their own). There’s no smart completion, so you have to go out and browse man pages or official documentation.
- keithnz 5y agoThis seems to be about autocomplete /github co-pilot rather than IDE's which is more of a plugin which I'm sure nearly every editor will get. I actually really like copilot, I've been using it for a while and it often ends up generating a lot of the code I need. It's not perfect, but definitely speeds things up a lot.
- RcouF1uZ4gsC 5y ago> Since he didn’t have suggestions to guide him, he read the docs and by simply perusing them, was aware of methods and other features that the IDE did not suggest. This post reminded me of the story of Mel. http://catb.org/jargon/html/story-of-mel.html http://catb.org/jargon/html/story-of-mel.html So Mel, not only did not use IDEs, he did not use compilers, or even an assembler because they got in his way of deep knowledge of the instruction set of the computer as well as the performance characteristics of the hardware he was programming. Because of that, he was able to achieve program efficiency in both space and time that others could only dream of. The "real programmers" don't do X, trope has been going of since before most of the people of this forum were even born. This is just another manifestation of this trope.
- greiskul 5y agoAnd Mel is a great story, but it is also misses that engineering is about tradeoffs. And in many, many programs, space and time efficiency is actually way, way less important than maintainability, extensibility, etc. There will always be the cases where deep knowledge of the fundamentals of computers and computer science will make or break a program. But for a large part of most programs, premature optimization is still the root of all evil.
- jaredcwhite 5y agoThere's a lot here I resonate with. Ironically, I'm sort of headed in the opposite direction—I've been spending more effort experimenting with and working with tooling in VSCode to add autocomplete/docs/type hints/etc. for Ruby projects. My background is essentially IDE-free…for years I programmed Ruby and JavaScript using nothing but BBCode! I definitely think there's a sweet spot somewhere in the middle here, and industry trends are likely headed too far into IDE-plus-AI-all-the-things! territory. Over time, I think we'll come to understand the tradeoffs better.
- le-mark 5y agoI feel like this is more of a commentary on dynamic vs statically typed languages under the guise of being about (a poor caricature of) IDEs. Autocomplete for dynamic typed languages has always been a really hard problem, but that’s less than 10% of what an IDE does for you.
- takeda 5y ago> He’s a really good programmer, but that’s not why his solutions were better. I disagree, if he was forced to use IDE he would came up with the exact same solutions. People who disregard IDEs generally are good, and thy disregard helpful tools like IDE at least partially due to their arrogance. Also their supposed "simple editors" with various extensions are often very close to IDEs in term of functionality. Author also seem to used perl for demonstration, which makes me not so certain he benefits from IDE all that much. The key benefits of IDE truly starts to open when you start using typed language. This shows especially clearly when you use python (in PyCharm for example) and start adding type annotation. Is a completly different experience. You start getting: - reliable autocomplete (as mentioned) - reliable refactoring (this is big, because one of the major cry about python is that as it grows it gets hard to maintain) - showing errors immediately without having to run the code No matter how good you are all these things make you better. Note: Above argument doesn't apply to github-copilot (which was used as a demo), it's probably no surprise that using that tool will get someone to arrive with same source code. Especially if it is a tutorial so many people before you typed similar thing as well.
- chromanoid 5y agoWhen the main reason for you to use an IDE is to write code, you are missing out the most important part. An IDE helps you to reason about code, to navigate it, to read it, easily.
- hackermeows 5y agoI’ve worked in this industry for 10 years . Without ides it would have taken another 10 years to do the things I’ve done with the help of IDEs
- tonymet 5y agoI noticed a trend that engineers think all engineering is just like their own job. The fact is that only few engineers can code in a single language to build the product they are working on. Sure a kernel device driver dev can write 100k lines of C over a year and memorize every API. But many product devs have to land code in 4-5 repos & languages. e.g. a bit of python, PHP, c++ & SQL just to complete one use-case. For those in one language with narrow API dependencies, IDE may seem redundant. But if you are contributing code across multiple stacks & APIs, IDE is a life saver. Lesson: Engineering is very diverse, and don't assume that tools that work great for you scale to other roles.
- squeaky-clean 5y ago> He didn’t use a IDE, He didn’t get method name suggestions, code completion, and so on. His solutions were completely different, and they were smaller and faster. I'm confused by this. I've used pretty much every major IDE and ignoring Github Copilot, I've never had one suggest code for me to write or suggest a method name. I've had them do things like find a typo in a method name , or alert me that I'm calculating a value twice when I could just re-use a variable. Stuff like that. But I don't understand how it could suggest a method name for me. The only code completion IDEs give me are things that are rigidly fixed by the syntax of the language. If I start writing ' for (var i', it will automatically complete the for loop header and brackets. But it's never actually written code inside the loop. I guess I've had Rider suggest ways to convert imperative code to LINQ, but that's only after writing the original code.
- rendall 5y agoI'm not sure why you're getting down-voted, but I want to ask about this. > "I've never had one suggest code for me to write or suggest a method name" That's confusing to me. You mean if you were coding something in, say, JavaScript, and you typed `Math.` that never in your experience has any IDE popped up a list of methods, like `abs` or `random`, that you could down-arrow through and select by hitting enter? Like, go here - https://www.typescriptlang.org/play https://www.typescriptlang.org/play - and type "Math" on line 1 and then type "." That list of pop-ups is a completely novel experience for you?
- ThinkBeat 5y agoAn IDE is a tool developed by developers ot make developing easier. (They may or may not succeed) What environment you want to work in is a personal almost intimate choice for a developer and requires trying and failing quit a few times. Through school and work most will be confronted with a variety of flavors. But when is help/assistance too much help/assistance? We could all be doing 100% of our programming in Notepad. That is pretty bare bones. Someone developed vi and many found it made them a lot more productive thanks to the built-in features. (Of which people are still adding). Emacs can do nearly anything (might be true of VIM, but I am more of an Emacs guy). Sublime can be very helpful. IntelliJ is huge and can be immensely helpful in its own way. I started out before any of the big graphical IDEs we now think of were around. But Emacs was. (and VI). It was also before the net, so you needed books to learn and use as reference. About 15 years ago I had an assignment at a facility were no internet was available for security reasons. (That is not 100% true but iterating over the finer details would take a lot of text). It was weird to have stacks of books next to me again. I ended up enjoying it. I had a remember a lot more than I had become accustomed to and my flow got better. (Not having the opportunity to dash off to look up a detail really quick on the net). I did not keep it up after I was assigned elsewhere. A really quick lookup on the net is an addictive thing.
- datavirtue 5y agoI get a little bit of sanity when I sit down and realize that my colleagues have written this new system in raw fucking JavaScript. The IDE saves me a few hours each day by renaming and highlighting variables for me. Still lots of cussing and needless flow interruptions but it helps.
- ipaddr 5y agoThe speed of loading an ide first thing, the speed within the and the memory hogging is the biggest reason against an ide. Others reasons matter: - It allows you to be lazier and never learn the actual method names instead remembering two or three characters - Switching editors could leave you lost. Sometimes you have to code in vim, notepad, gedit or a different ide. And without your ide could destory your mental workflow. SublimeText fan.
- rehevkor5 5y agoIt seems like the author understands, or perhaps his criteria is based on, only a thin layer of what an IDE can provide. Here's the highlights: - Data flow to/from here (where did the value of this variable come from/go to) - Call hierarchy (up and down) - Class hierarchy (up and down) - Class structure (including all inherited fields, methods) - Checking your code against an actual database schema, perhaps one automatically launched in a Docker container - Automatic refactoring of various kinds (rename, extract variable, extract method, inline method, extract interface, add/remove parameters, etc.) - Build tool dependency tree inspection with filtering etc. - Inspect code for a huge variety of potential code quality issues, with highlighting and auto-resolutions available - Locate duplicate code, and automatically refactor it out - Detect likely problems with nullity - Easily navigate to lines of code in an exception call stack - Analyze dependencies across classes & packages, detect cyclical dependencies - Debugging, including watch windows and conditional breakpoints of various kinds - Helpful tools for a variety of programming frameworks such as Spring - Integration with git so you can view history, diffs, etc. - WYSIWYG style rendering for stuff like Markdown - Easily navigate to any class, including classes that come from your dependencies (for example I've worked with plenty of people who had no idea how to figure out how Rails worked if it wasn't in the documentation, because they didn't use an IDE which allowed them to easily browse the code) Personally, all of that is just a huge amount of value.
- zmmmmm 5y agoI think a lot of people's views have been influenced by their use of languages where the type system or overall language framework is either too weak (eg: Python, Javascript) or in some cases too complex (eg: C++) for more than a thin layer IDE experience to be possible. If you use those kind of languages then it's true, IDEs buy you a limited set of functionality and you don't need much more than a basic language server because that's about the limit of what you can get anyway.
- winrid 5y agoActually, modern IDEs are super helpful with JS and Python, especially with type hints. I can export a function or class in a big JS project, go to any file, start typing the method name, and Webstorm will suggest the import. With JavaScript! Not as great as the Java integration but still pretty nice.
- ChrisMarshallNY 5y agoI use an IDE (Xcode). Works a treat. I'm also very effective, and very fast. I write fairly significant volumes of well-structured, well-documented code, in a pretty short period of time. It seems work well, too. I don't really give a hoot whether or not anyone else thinks I'm somehow "lesser," because I use an IDE. DISCLAIMER: I started programming well into the last century, and have used CLIs that would have a lot of folks curled up, under their desks, whimpering. It's just that I’m not a touch typist, so couldn’t ever really get comfortable with CLIs.
- emodendroket 5y agoThis seems rather silly, doesn't it? A modern IDE like IntelliJ is going to be full of "golf" suggestions anyway, so I find it hard to believe that IDE-composed code is actually going to be more verbose! In my experience CRs from non-IDE users were more likely to have issues like unused imports, weird formatting, unused variables, and so on, because their text editors won't yell at them over that (perhaps a linter should be set up to catch it but let's face it, few people have all the things they'd like to have in place).
- Justin_K 5y agoAn understandable view of git branches and actions applicable to each
- zmmmmm 5y agoThere's a sort of meta irony in computer programmers rejecting software assistance in conducting their trade, when a large fraction are actually focused on building software to do exactly that in one form or another. Do such people fundmentally believe software is incapable of helping people work with information oriented tasks better? In that case, how do they assess the actual value of their own work?
- ambrozk 5y agoThis is normal crotchety "kids these days" silliness. Most IntelliJ autocomplete suggestions are things like: * syntactic constructs (e.g. 'v' -> 'void', 'p' -> 'public'). * variable names you've already defined, or likely will define (e.g. 'MyFoo m' -> 'myFoo'). * methods names you've already defined or method names in commonly-used modules. The idea that the average programmer writing in an IDE is using functions that the IDE suggested, (but they have no idea what those functions do), is nonsensical. In addition to giving you (extremely rudimentary) autocomplete, IntelliJ gives you the ability to browse the libraries you've imported and read their doc. It gives you the ability to quickly see where variables were defined. It gives you the ability to conduct mass renames, move methods into new classes, and to conduct complicated syntax-aware search-and-replaces. It gives you an effective debugging GUI for tests, and allows you to inspect variables at will. I do believe that, as an IntelliJ programmer, I have lost my memory for certain language-specific details, (e.g. the fact that in Java, it is Collection::isEmpty vs. Collection::empty), but it's arguable whether these sorts of details are actually useful information for a working programmer.
- tiberriver256 5y agoReminds me somewhat of this old paper on the ironies of automation in factories: https://ckrybus.com/static/papers/Bainbridge_1983_Automatica.pdf https://ckrybus.com/static/papers/Bainbridge_1983_Automatica... Automation makes people dumber.
- mansoon 5y agoShared understanding in sharing tools as well as language.
- seanmcdirmid 5y agoAuto completion has always worked well as a way to discover methods, not as a way of writing code. It’s like…”so where can I go when I’m here?” without having to pour over a bunch of API docs. No one ever presses the “I’m feeling lucky button” on the auto complete suggestions unless it’s an API they recognize. I get the feeling that co-pilot wasn’t really designed with usability in mind, more like it was just a cool thing that could be done with a large code corpus and good machine learning techniques. If they could redo it as a mechanism for discovery somehow, it would be much more useful. But I’m not sure how to do that here, perhaps ranking completable methods based on a statistical likelihood that the user will want to use them (but then we start hitting Hick’s law where sorting by name is super important).
- rendall 5y ago> Auto completion has always worked well as a way to discover methods I think that was exactly the criticism in the article, though, that discovery via IDE is limiting, and for many developers this method of discovery supercedes actually reading documentation. I'm not sure he's wrong.
- setr 5y agoJust from a visual efficiency measure, it’s a good steeping stone between discovery and actual docs, especially if the autocomplete also includes the first bit of description - most functions of an API are quite obvious, and ideally aren’t doing anything surprising in them anyways that the name + minidisc would actually lead you astray. Of course, a stepping stone , at the end of the day you still need to understand the core model and operations — but then you’re just dealing with age-old problem of RTFM; a problem that has existed long before autocomplete’s general availability, and long after. The only real change autocomplete brings in that regard is that people might accidentally read something while scanning a manual for the API calls… but that’s really never been good enough anyways, so it’s not much of a loss
- seanmcdirmid 5y agoAuto completion also has the perverse effect of APIs developers relying on its existence to build large APIs that would be hard to use without autocomplete. I once counted 232 methods for a UI button in Java available through the auto complete menu. There is just no way to use that API by RTFMing, but with auto complete, you can just search for what you need as you need it. Alot do the reason Java is the way it is is probably because auto completion gained in popularity at the same time it did.
- rendall 5y agoI think the main point of the article, to question whether using an IDE actually improves our work, is valuable to at least ponder, if not just as a way to improve IDEs in future. As an aside, I don't think the author steal-manned his argument by using a few illustrative anecdotes, but he's not completely wrong, either. My objection to the article is to the sentiment expressed: > "But, a lot of code doesn’t matter because Sturgeon’s Law informs us that 90% of the code is crud. He was talking about science fiction, but it feels true of just about anything. All of that code learning is parroting the bad habits of the 90% crud." I strive for empathy with my colleagues, and I have mostly* won the struggle against harshly judging the code that I read and maintain, and judging the people who wrote it. Judging code can be a terrible distraction that turns programming from a lovely, interesting and fun task into a grind. Is it true that "90% of code is crud"? It is, if you want it to be. Or, perhaps we all as a community and a society are slowly learning how to program, and the best of the code written 5 years ago uses ways and means that we are abandoning. I think specifically of the movement away from Object Oriented programming toward immutability and Functional Programming, which is arguably an overall improvement. Also, the No Blame movement, which assumes that the engineer at the time is making a smart decision given all of the constraints. But we're not done, and the code of today will look quaint in 5, 10, 20 years. It helps me to have "warrior mind", which I interpret to mean that completing a programming task is a mission, and I can feel upset about the circumstances, or I can put all of that aside and help complete the mission (or fail to complete the mission, which happens), without ego or drama. So, I would say, "90% of code is crud" belies an attitude that would benefit from correction. All code contains a lesson.
- musingsole 5y ago> Is it true that "90% of code is crud"? It is, if you want it to be. You're being way too generous from a false sense of compassion. Most code is not written from a place of serene comprehension. It's written under the pressure of getting features out the door fast enough to justify a paycheck. Add in that programming is a task that is rapidly changing over time -- so what's good today, is a naive implementation tomorrow...yeah, practically all code ever produced or ever to be produced will be crap from any reasonable perspective.
- sterlind 5y agoAccessibility. I type by voice and set up my editor to send autocomplete lists to my dictation software. Makes it sooo much easier than speaking the formatting and spelling random nonsense out loud.
- EdwardDiego 5y ago> Mark Jason Dominus has an interesting perspective on Java, which he enjoyed: You will not produce anything really brilliant... I'd argue that there's plenty of brilliant things written in Java. And Perl people sneering at Java feels a bit like defensiveness.
- galaxyLogic 5y agoAn IDE has lots of tools I need to use to get my work done efficiently. Because there are so many tools it is not obvious which tools should I should use when and in which order. And it depends on the context. Should I search for a string globally or in the current file? Or current directory or project? Should I split the code-editor vertically or not, or should I split it horizontally. What I'm fascinated by is how working with an IDE it feels like I'm constantly creating a program in my head for myself to execute, to use the tools and functions of the IDE in a given sequence. I am thinking ahead what tasks I need to do and then I do them, in other words I am writing a program in my head for myself to execute. I wonder if people are doing this kind of thing generally, or think of it this way?
- CraigJPerry 5y agoA single context to do everything. I don’t need to alt-tab away to run a CI job, browse the filesystem, run a shell, run my tests, etc etc its the same keyboard shortcuts, it eliminates the overhead of multiple contexts. I try to exploit features like “run tool” in my Ide so i never need to switch away.
- amcoastal 5y agoOut of all the world's grievances, people who choose something like hating IDEs to pedestal about will always amaze. Humanity is hilarious sometimes.
- sys_64738 5y agoAll these suggestions and options are total distractions to me trying to get work done. It impacts the ability to get work done. I go with the mantra if you’re trying to code your way to a solution then you’re going about it wrong. Write down what you’re trying to do in a few sentences first. If you can’t then how can you code something? This is why code structure suggestions make no sense to me.
- 4WIW 5y agoWhat you really get from IDE is higher productivity, based on a sample of few hundred people I've worked with. It won't make bad engineers good or vice versa, it would just make everyone more productive. If I were hiring an engineer who claimed not to use IDE on principle, I would be very careful and maybe even suspicious: a craftsman who doesn't care about using best tools for the job, may have problems.
- jon889 5y agoJust because you’re using an IDE doesn’t mean your should read the documentation, and know what’s available, what’s in the latest versions and what’s coming up. The IDE is just a tool to make typing faster wherever that’s through code completion or refactoring tools.
- e2e4 5y agoI found the following interesting """ As a postscript, I’ve heard several stories about people who leave Google or Facebook and have a hard doing being productive at the next place. Both of those companies have planetary-scaled systems and the amazing tools to handle that. The next place doesn’t have those tools, and suddenly you have to know how to do things at much lower levels. If you never learned those levels, you are practically starting over and your previous experience isn’t that important. Their tools do their things, not general things, and certainly not someone else’s things. """