Software developers, how dependent are you on your code tools?

By which I mean, things like editors with syntax checking and colored text, code completion tools like IntelliSense, that kind of stuff. If you had to write code in a plain text editor, with nothing popping up to help you or point out that you screwed up, how hard would it be? If you had to read someone else’s code in a plain text editor, would you be able to make sense of it?

The reason I ask: I had a recruiter contact me awhile back, and they wanted me to take an online assessment of my coding skills. (Two actually, one for C# and one for Java.) They were each about an hour long, around 30 multiple choice questions (with multiple correct answers). Most questions were either “what is the output of this snippet of code” or “which is the correct code if you want to do x.” The code snippets were in plain black and white. Let’s just say I did not do as well as I had hoped. I didn’t tank, but I barely passed.

Now in my defense, coding is only about 20-25% of what I do. And most of my coding work is maintenance, not new development. I work with C# and Java a lot, and their syntaxes are similar enough that I depend quite a bit on my editor to help guide me. Just trying to figure out if that’s normal, or if maybe I’m a little too dependent on my tools to help me out.

I like that my tool helps me autocomplete function and variable names and the like, but I could code without that. Also it’s handy having all the files I’m working on in tabs I can toggle through, and of course when I create a form it would be a royal gigantic pain the butt to write out all the resource code in longhand - I’d never remember what was necessary.

The part of my tool I use to find errors is the keystroke that triggers a compile. I let the error listing tell me my problems. This went the same way the last time I coded in notepad, except triggering the compile and reading the errors was a bigger pain in the butt.

My coding experience is Java, python, and C#; developing user interfaces for mobile transaction apps and websites for work, and raspi/arduino coding for personal stuff. I’ve never used more than notepad++, jsFiddle, and codepad. But I can look at a code and suss out what it’s supposed to do and if it would work or not. I might miss a syntax error (those coding tools do erode your proofreading skills) but you should be able to understand what a piece of code is supposed to do without those tools.

I used to work in C, sql, and unix shell scripting. I used vi for years

Now I work in javascript, html, and C#. I started at this job using vi, but switched to Visual Studio for exactly one reason… Comments are different depending on which language you’re writing in, and VS has a button to comment/uncomment lines, and it knows which way to make the comments. I use it for that feature alone. I’d probably still be using vi otherwise.

Note that vi has a few features that I have used to make coding a little easier - it has a function to find the match for a brace/bracket/paren that has helped a lot over the years. And the highlighting can sometimes be helpful and sometimes annoying. VS has that too, leaning a little more heavily on the annoying side.

I find syntax-colored code harder to read than plain monochrome text. My code editor is vi. If forced to use an IDE, the first thing I do is figure out how to disable syntax coloring.

I use Xcode for a living. Apple uses very long names for just about everything. I once tried writing code in a text editor. It was painful without autocomplete. I also rely more on color coding than I realized. After a few minutes I gave up and got Xcode running.

I use VSCode because I find it convenient to have all the nice features, but I can cope without them. I have at times written code in vi in a plain terminal over ssh, and I guess I was a bit slower overall, but I was still able to work quite happily.

(ETA: principally Python and Javascript, a bit of C/C++ as well.)

You might be a little too dependent on the tools if this is the case. I guess in your current environment you have those tools, but that won’t always be the case. Like in an interview, they may ask you to write some code in just a text editor or on the whiteboard. Or you might need to log into some remote machine with the XYZ operating system and have to use whatever native editor happens to be on the machine (vi/notepad/etc) to debug a problem. Maybe not for compiled code, but you may need to look at problems on the system in programs written in an interpreted language like script, shell, python, etc. If you’re always pulling those files back to your local environment so you can use your tools, that can make debugging more complicated and convoluted. But I wouldn’t worry too much. If you end up looking at the plain files enough, you’ll quickly get used to it.

I’ve always used plain old text editors like Notepad++ with limited capabilities, mostly due to habit.

(C#, C++ and Python. 28 years out of school.) Nowadays, I wouldn’t code anything significant without autocomplete and syntax highlighting. The tool in which I use Python provides its own naked editor, so I just copy and paste into PyCharm to do anything but the most insignificant change.

Also, I’m highly dependent on source control. I feel pretty vulnerable when it’s not available.

It’s been ten years since I was in the industry, but I’ve been teaching college programming classes since then. I see both bad and good from the high-powered editors. I have my students use Notepad++ for PHP and HTML/Javascript, but Eclipse for our Java classes. You have me thinking that I should turn off all syntax highlighting on their systems, but they’re already struggling just learning the syntax.

I’ve told my students that the reason they’ll get hired is to be productive, because their prospective company is in the business of making money. They have their employees use IDEs because it saves money and time.

One place I really like autocomplete is in Android Studio. There is so much usage of anonymous functions inline with the rest of the code, which is normal Android programming style. I get frustrated with myself when the anonymous function builder doesn’t pop-in the code snippets on the first attempt to use it. I don’t think I’d attempt Android development without using Android Studio; that’s a path toward madness.

As a web dev, I use PHPStorm extensively. It is an incredible timesaver not just in terms of basic syntax coloring, but its ability to really understand and diagnose my code. At a basic level, it highlights obvious errors (typos, missing functions, unescaped strings, unclosed brackets) but also actually understands the languages enough to point out less obvious things (hey, in your case statement, it looks like these two cases are doing the exact same thing… did you screw up?). I can ctrl-click on any variable or function and it’ll take me to its definition, no matter which file it was set in. If I need to do a complex find/replace across my entire project, it natively understands regular expressions and does a live preview and mass undo if I fuck up. It has local file versioning, even without Git integration, so that I can easily roll back to a version from an hour ago.

Also, as a proper IDE, it has incredibly extensive support for my entire workflow, not just the code editing part. Need to spin up a containerized web server to test some code? It can do that. Version control? Yup, with a built-in visual merge tool so I can compare my attempted code with my partners’. Need to see what’s different with my local config versus the staging server’s? It can SFTP directly into the server and edit the remote file (none of that vi/emacs nonsense).

With debugging set up, it’s even more powerful, letting me see the state of all the variables at any given time. If I’m writing a new function, I set breakpoints where needed so when the code hits that stage, I can step through it line by line and see how my variables are breaking or how else I’m fucking up. So much better than trying to hardcode error messages into every possible failure mode, or echoing variables onto the screen, etc. Especially in your example, I’d just be able to take someone else’s code and follow the actual interpreter along, one line at a time, to see how it jumps between different functions and classes and the such.

It’d just be stupid (and expensive) NOT to use an IDE. I get it, there’s a certain allure of purity in sticking to basic text editors… I grew up writing my first programs as convoluted batch files using EDIT.COM and COPY CON, and often still do remote login into a server and run a text editor from the shell, but that’s only for quick & dirty fixes (changing a setting somewhere). But it’s just stupid doing that for entire projects.

I don’t think of coding as some sort of challenge where I must write perfect code in pen on lined notebook paper on the first try. It’s just a job like any other, so why wouldn’t I use the tools designed for that job…? IMHO “which minimalist text editor do you use” is the weird programmer equivalent of a macho dick measuring contest, the dev version of “REAL men hunt their own food… naked… and karate chop down trees to make the spears first.”


As for interviews, it goes both ways. Why would I want to work for a company that doesn’t value real-world productivity? You want me to code something for you? Give me an hour with my own laptop, the environment of my choice, Stack Overflow right there, and tell me what results you want. If I can deliver the results, why the hell do you care how I do it? The ability to memorize obscure function names and syntax without recalling documentation, and the obsession with re-inventing the wheel where best practices already exist, are not at all representative of devs who can work well together with other collaborators, write easily understandable/maintainable code, be able to work with diverse client demands and idiosyncrasies, etc.

I’m sure there are amazing purist coders out there like Linus Torvalds or John Carmack, able to optimize the hell out of everything they touch and who can probably write entire operating systems, blindfolded, in assembly, in morse code. For the rest of us, yes please to any tools that make the job easier, more efficient, and more manageable.


And lastly, the increased ease of coding (and the exponential increases in performance, and decreases in price) means that the profession is opening up to a much larger audience. Tech is one of the very few career paths that can still pay a living wage for people without much formal schooling, and part of the reason for that is that we’ve come a long way in ease of use since Java and C++ and Perl and such. IMO this is a good thing, and has profound implications for the relationships between labor, capital, politics, and the environment. It’s a form of power available to anyone willing to sit down and learn for a few weeks/months. Improvements in the toolset are a part of that (Android Studio enabling millions of people to make apps), or even something like Squarespace allowing grandmas to make websites for their pet causes. I wonder what the world will make once a billion Indians and the Chinese get their younger generations up to speed with this stuff.

You’re making some pretty big assumptions about how people work, how effective they are using their own styles of work and patterns, and about which activities have the largest impact on costs.

In my experience, the process of actually writing code is a relatively small percentage of the overall picture and there are many activities that can have much larger impacts on costs than things an IDE can help with.

I think people should use whichever tools they think makes them productive, but saying that everyone that does it differently from you is “stupid” is a pretty extreme position that I disagree with.

Ya, there is no value in restricting usage of valuable tools, but at the same time stating that everyone is “stupid” that doesn’t use an IDE is just as bad.

I’ve become spoiled by my debugger. Stepping through code, setting break points, examining the contents of variables. It’s such a huge time saver.

I started on a Honeywell mainframe and there was no debugger. Display statements carefully placed in the code is all we had. A lot of time was spent studying compiler listings and trying to figure out what broke and why. I never want to go back to those days.

I’m just about to go to bed after a 14-hour coding session overnight. As I was plonking through my code at hour 11 I thought of this thread. Having Intellisense probably has given me at least a thousand extra hours of tired-brain usefulness over the years :slight_smile:

I used to be super good at doing HTML in Notepad and still I’m sure can do it just fine. I didn’t start programming for real until I got an IDE (Visual Studio 8) so I guess I’ve never programmed without one. I can definitely open up a file in Notepad and read it and make changes, no problemo. But spelling errors are a bitch. So much easier to have that reference. And when it comes to troubleshooting, being able to click right through to references is a godsend.

So I dunno. Understanding code? 100% can do it without color coding. Getting everything written out fast and accurate? Gotta have my IDE.

Oh and last week I made a huge batch of SQL statements and was so happy to find an SQL-color-coder for Notepad++. I was able to spot all errors just by looking. Yeah buddy!

shrug Then go ahead and make the case for it. Of the dozen or so people I’ve known who like to do this and brag about it, they’ve never really been able to make a compelling rationale beyond 1) it’s what they’ve always done and 2) they think it makes them look cool. They’re usually the same type of people who think all GUIs are overrated to begin with.

Sure, I’d agree with that, if you’re saying that “lines of code” is a poor metric for actual productivity. But in the context of the OP, even (or maybe especially) if the actual coding is just a portion of your job, I’d argue that having software to double-check you and prevent common mistakes is even MORE important; version control and the debugger and intellisense all help make sense of files you only sporadically touch, across many different projects.

I don’t think they are stupid people, but I do think that not utilizing the advantages of an IDE is stupid. You don’t have to agree, and I’m willing to be convinced otherwise…

I am dependent on the editor I use to do certain tasks quickly, because it is was I am used to using, but not so much for writing code. The main thing that it is helpful for in regards to writing code, is syntax highlighting which I would not say I am dependent on but would certainly slow me down if not available.

In general, I am not against IDE’s but having to code in several different languages and environments on a regular basis, I haven’t found one that meets enough of my current needs enough to switch.

//i\

I’m not arguing you should use or not use an IDE.

My point was that the value is situational. It’s not a global absolute that it is always helpful, or that the help is always significant enough to make a difference in the grand scheme of things.

Ditto. I’ve been happy with that ever since punched cards and teletypes went out of style. But it’s just to get started quickly, after it’s mostly composed it’s into the studio.

I find that if a text editor has syntax highlighting, the ability to suggest autocomplete from snippets that you have already typed, and the ability to highlight closing braces if your cursor is on an opening brace and vice versa, that gets most of the value that a full IDE provides.

My work setup is basically a “lite” IDE with those features, plus an xterm window where type in other commands (version control, formatters, &c). So a lot of tools, but not all built into the IDE.