Thursday, August 11, 2011

Speculating about Future Development Environments

This series of essays, making up a sort of ode to the command line, got me thinking again about the user interface we face everyday, our software development environments. Remember when you were a kid and spent time imagining the ideal car — it should be able to fly and transform into a submarine —, or the ideal house — it should have an underwater garage to park the plane-submarine-car? No? Perhaps I was a weird kid. But that's what this post is about, conceiving what would be my ideal programming environment.

I can't get into this subject without first discussing the big rift: editors versus IDEs. I have to say I'm not a member of either faction, I love vim, I get a kick of learning new tricks (did you know that if you accidentally delete something and lose a previously yanked text, you can get it back with "0p ?), but I'm also a happy user of modern IDEs. In fact, I don't know why we have these factions. I suspect the origin is in the name IDE, Integrated Development Environment. It suggests a large piece of software integrating lots of tools to be used in the making of software, stuff like stupid code generation wizards and the always dissatisfying WYSIWYG interface designers. This perspective isn't entirely misleading, but I think it fails to capture the most important aspect of IDEs: they are editors that understand the programming language being used. They analyse your code's with regard to syntax, semantics and type structure to be able to realise feats such as jumping from a call to a definition site, changing a symbol definition and all it's uses, listing all lines of code that call a certain method/function, etc.

I see absolutely no reason why any programmer would forgo these abilities, but I see why many avoid current IDEs. The user interface is a mess of toolbars, menus, tabs, docked windows, popup windows of different sorts and gargantuan settings dialogs. Only after some time spent living in these strange environments one is expected to reap the benefits of working with a smart editor. In a way, the current crop of IDEs reminds me of the web just before Google appeared. To try to find anything with the search engines of the time was a guarantee of wasted time and probable frustration. The situation was so bleak that most of those search engines gave up on being starting points for the web and were becoming "portals", so users could stand a chance of finding what they were looking for within the sections and categories and subcategories of specifically produced pieces of information. Then came Google, with the right technology to extract relevance from the same sea of data everyone else was floundering on.

Aside from the immensely better ranking of search results, another striking difference was Google's minimalistic approach to user interfaces, showing little more than a search box and a list of results. That's where I'd start my ideal environment, a visually simple application to help the programmer focus on reading and writing code. Reading and writing code, not just text, and to be able to help with that, the application would need the code navigation and refactoring tools found in today's IDEs. The question then is, can this be done without all the cruft?

I think it can, and the way to do it is the same Google took to beat the competition: relevance and minimalism. All the housekeeping functionality we are accustomed to in current IDEs should be cast aside the in favor of a search centric interface. And there is plenty of housekeeping to get rid of: modules, windows, tabs, workspaces, perspectives, views, projects, buffers, editors, etc... As I envision it, a minimum productive environment would consist of a few tiled panes for editing code, with no tabs. The last part deserves a little explaining. The purpose of tabs is to show the currently opened files. My thinking is that whether a file is currently open or closed should be an implementation detail invisible to users. In order for this to work well, changes in files should be continuously saved and we should have access to a full version history (this is an old idea that is being picked up in Apple's latest OS).

As the ubiquitous file-tree view would be gone, all navigation would be done either directly — following a reference in a source file — or via search. The key to make this work is to go to extra lengths to perfect search relevance, perhaps taking contextual clues enriched by the abstract model of the code. For instance, a recently opened file that is close in the call graph to the file currently being edited would spring to the top of the results.

This minimalism isn't just an exercise in modernistic aesthetics; the problems caused by the litany of housekeeping features go beyond visual clutter. Each of those features generate work for the user, who has to spend time organising his environment and then remember where everything is. This is the kind of work we should delegate to computers, the user needs to deal only with the content he is currently working on and ask the environment for what he needs next. Don Norman makes a much better argument than I ever could for search based user interfaces in his column for the CACM.

Ok, so much for editing. What about the rest of the services of a modern IDE? Stuff like version-control integration, build systems, debuggers, test runners, console runners, diagram editors, kitchen-sink explorers, etc. My answer is that while many of these tools benefit from graphical user interfaces, they don't necessarily need to be in the same application as the editor. Some of them could maybe reuse some code from the IDE, but there is no need for them to share window space with the code.

So ends my wish-list for a future development environment, a fitting time to restate this is not a prediction, as I see no movement in this direction. Quite the opposite, actually, as most IDEs keep sprawling in ever larger feature matrices.


21 comments:

Anonymous said...

Try QtCreator. It fits your description pretty accurately.

Anonymous said...

I definitely agree with you. I think one of the big draws of IDEs is that they appeal to beginning programmers - those are intimidated by the multistep process of compilation, linkage, etc. In my Intro to Java high school course, no one had touched a command line before. Even then we used TextPad to hide away "javac" and "-classpath" and etc - we just wanted to make games, not be bothered with all of this "compiling" nonsense. After the first year I discovered Netbeans and was immediately drawn in because of all of those useful features (code completion, etc.) that you described.

Four years later I still use Netbeans for Java dev but I'm frustrated by the large amount of time spent configuring popups and default window visibility and locations of toolbars - basically exactly what you've described. All of that extra work also slows the IDE down and interferes with the most critical features like CC or even just responding quickly to text input.

The DrScheme environment is perhaps one of my favorites - very succinct interface, very fast.

José Donizetti said...

Wow...it would be my perfect environment too. Would love to see some IDE/Editor trying to produce something like that. Maybe this post should be read by the companies who produce textmate or intellij.

Technogeekscs said...

Thanks for Sharing a Very Informative Post & I read Your Article & I must say that is very helpful post for us.
Data Science
Selenium
ETL Testing
AWS
Python Online Classes

Darren Demers said...

Wow...it would be my perfect environment too. Would love to see some IDE/Editor trying to produce something like that. Maybe this post should be read by the companies who produce textmate or intellij. pandora necklace germany , pandora necklace usa

caris said...

https://www.olaladirectory.com.au/posts/dumpscafe-ncse-level-1-practice-test-questions-answers

https://www.olaladirectory.com.au/posts/dumpscafe-mb-310-microsoft-dynamics-365-finance

https://www.olaladirectory.com.au/posts/dumpscafe-cka-certified-kubernetes-administrator-cka-program

Ariel Wilson said...

Lol, your ideals are nothing short of fantasy. I think I should continue my search for a website where I can buy dissertation in England and outsource my dissertation to them. I will return to your post to read about your ideal programming environment. I am leaving the tab open.

opbest said...



Hello there! Quick question that’s entirely off topic. Do you know how to make your site mobile friendly?
My web site looks weird when browsing from my iphone4. I’m trying to find
a theme or plugin that might be able to resolve this issue.

If you have any suggestions, please share. Cheers!

Feel free to visit my page :::: 휴게텔

(freaky)

Isabell Kiral said...

These tips are very helpful for us and through these, we can enjoy a successful life. Many people are satisfied because they are enjoying good lives. Now, people will follow these guidelines and they will get more success in their lives. Buy Dissertation Online.

Dissertation Chapter Writing Help Uk said...

Great, that'd be my perfect setting as well. I'd like to see an IDE/Editor make an attempt to do something similar. This post should be viewed by the companies that manufacture text mate and interlay.

Write My Essay - Buyessay.org.uk said...

When I finished reading it, I was completely taken aback. I'd like to learn more about related subjects like Writing Services. Thank you, thank you, thank you, thank you, thank you, thank you, thank you,

Jessica Jones said...
This comment has been removed by the author.
Jessica Jones said...

Searching for the cheap assignment help in the USA? Choose our professional & experienced experts and leave all your tensions of researching assignments on our shoulders! GoAssignmentHelp.com is equipped with a vast team of professionals and knowledgeable online assignment help, essay, dissertation topics tutors who make sure that you will get the assignment help you deserve. We have a service team who are available 24 x 7 for our customers. You can send your questions and doubts through email, chat, or send a Whatsapp message. GoAssignmentHelp.com writers will provide you quick response to every question about your best online assignment help related to the time delivered. So don’t waste your precious time. We know your time value and, We will provide you with help asap. Call us now and get the best Finance, Accounting, Business Law, Computer Science, Statistics, Management, Engineering many topic-related best assignment help services.

Hunna Tucker said...

This is amazing.
Nursing Assignment Help

Will Kolson said...

It would be wiser if we used technology to create assistive devices or other tools to help people. For a better understanding, you might also get tech-related publications from Law essay writing service UK.

Unknown said...

Führerschein kaufen
rijbewijs kopen
comprar carta
acheter un permis de conduire
comprar carnet de conducir
Führerschein kaufen
comprar carta de conduçao verdadeira

morgan said...

real uk driving licence
comprare patente
comprare patente napoli
comprar carnet de conducir
carta de conducao verdadeira
buy ielts certificates without exams

buy ielts certificates without exams

rasmika said...

This is totally astonishing subject. I truly like what you done here is so best posting.
delhi ncr Girls

rasmika said...

This is actually a head and amazing data for all. Thankful for sharing this to us and more power.
Delhi Girls Free Home Delivery at Doorstep

Jenny said...

kjop-forerkort-uten-eksamen.

comprare-carta-conducao.

f-a-qs.

comprare-la-patente.

echten-fuhrerschein-kaufen.

f-a-qs.

f-a-qs.

fin.

kontakt-oss.

CEMENT TREATED BASE said...

Compared to concrete pavements, Cement Treated Base is an affordable and time-saving solution for a variety of construction projects that rely onCEMENT TREATED BASE evenly distributed load-bearing platforms to remove sub-grade fatigue. What’s more, it has been demonstrated that Cement Treated Base exceeds the structural proprieties of a thicker crushed aggregate base, making it a standard choice for modern road construction.