Let’s get ready to grumble! 6 arguments that get a rise out of programmers

Here are some of the things developers have loved to fight about over the years

Miniature figurines of boxers Floyd Mayweather Jr. and Manny Pacquiao
REUTERS/Romeo Ranoco

This weekend in Las Vegas boxing’s (latest) Fight of the Century will take place, a long awaited bout between two of the best fighters of the last decade: Manny Pacquiao and Floyd Mayweather, Jr. While software developers wouldn’t seem to have much in common with boxers, in the world of coding there have been (and continue to be) a number of  rock ‘em sock ‘em battles over the best tools, systems, and conventions to use or follow. Use the arrows above to read about some of the software development match-ups that programmers have loved to fight over.

See also:

Just their type: 11 keyboards beloved by programmers

Wisdom to code by, an illustrated guide to programmer proverbs

11 technologies that tick off Linus Torvalds

Superclass: 14 of the world’s best living programmers

A mug with the HTML5 logo

HTML5 apps vs. native apps

The dispute: The rapid rise of smartphones and associated mobile apps created a new thing for programmers to argue over: Whether to build apps that run in a browser using web technologies (i.e., HTML5, JavaScript, CSS) versus apps created to run natively on a specific platform or device. While this debate hasn’t been going on nearly as long as, say, the one over tabs vs. spaces, that hasn’t prevented it from becoming one of the most debated developer topics in recent years. The rise of hybrid frameworks for app development, however, may eventually make this debate obsolete.

What HTML5 app advocates say:

Proponents of HTML5 apps tout the lower costs, in terms of both time and money, of developing an app that uses a single code-base which can, in theory, run anywhere and be responsive to whatever device is being used.

“The 5 main advantages of HTML which are crucial in my opinion:
1. You can maintain a single codebase for all platforms! 2. There is no need to download&(agree to vague EULA)&install
3. You keep the app up-to-date without requiring the user to update
4. You can make useful A/B testing easily
5. There are more open source libraries and resources that accelerate the development” Hadar Weiss

“... adaptive development is an even stronger argument [for HTML5 apps] than native look-and-feel. One application, or family of-, has a similar behavior across devices, which is a major advantage for the end-user.” Jos De Roeck

“I think that HTML5 is a competent choice for applications — particularly for quickly designed interfaces, but I think there are clear advantages when you need to create games, especially on mobile platforms where there is a lot less overhead available.” Clara Butler  

What native app advocates say:

Those who prefer native apps stress the improved user experience, faster performance, and ability to run even when the device isn’t connected to the Internet as benefits of writing an app in a device’s native environment.

“... native is always going to be the best route where the actual user of the product is concerned. They'll get the most enjoyable and refined experience possible via a native application built by a capable developer.” Matthew Mombrea

“... when companies want to develop a beautiful, ground-breaking app, they choose native.” James Long

“... every time someone compares html vs native app, the latter comes out superior. It's simply faster, more feature full, better integrated, better user experience, etc.” mato

“Hybrid / HTML only mobile apps are just f***ing dumb.” Ron

A mashup of the iOS and Android logos

iOS vs. Android

The dispute: As if arguing over HTML5 vs. native apps isn’t enough, developers who create native apps will often argue over which of the two major platforms is better to develop for: iOS or Android. While the rise of cross-platform development tools has seeked to bridge the divide, the debate still rages on. Each platform offers developers features that can help tip the scales.

What iOS advocates say:

The much less fragmented universe of iOS devices is often cited as a major advantage which simplifies app development. Additionally, some prefer the iOS IDE (Xcode) and SDK and find Apple’s developer support more helpful than Android’s decentralized world.

“Android has its advantages, but overall, it remains significantly easier to write good iOS apps than good Android apps.” Jon Evans

“Once you get a handle of it [Objective-C], then you will find the iOS ecosystem more fun to work with.” Ardit Bajraktari

“Apple is much more in-tune with their developers, and they offer much better services to their Developers.” Timothy McSwain

“Apple Ios is a cleaner, less-hackish environment to start in….” Nalin Savara

What Android advocates say:

The fact that Android is open source is considered a big advantage as is its reliance on Java, which is generally more useful to know than iOS’s Objective-C. Proponents also mention the cheaper developer fees for Android and the ease of publishing apps over Apple’s slow approval process.

“The entire Android source code is browsable so if you find something cool features that comes standard on Android that you'd like to implement, you can just check out how it's done.“ Aaron Chiu

“Android is much cheaper, $25 one time fee while IOS demands $99 every year for license renewal.” Jay Mo

“... Android will give you an environment to try anything and do some really awesome things, as there is no limit to what you can customize and create.” Adam Schwem

“Developing with Xcode feels like I'm sitting in a log cabin churning butter in the middle of Winter in Sweden compared to developing with Android Studio.” w3bshark

Screenshot of a kernel panic

Monolithic kernels vs. microkernels

The dispute: While programmers these days spend more time arguing about Vi vs. Emacs than about whether monolithic kernels or microkernels are better, there was a time when this was a hotly debated topic. In particular, it was a central part of a well-known disagreement between a young Linus Torvalds, creator of Linux, and Andy Tanenbaum, a computer scientist and kernel expert who created the MINIX operating system, known as the Tanenbaum-Torvalds Debate. Torvalds has cited Tanenbaum as an influence and created Linux on a MINIX machine.

What monolithic kernel advocates said:

Monolithic kernels, such as MS-DOS, Unix, and Linux, are one big process that runs everything (e.g., file system, memory management, device drivers) in a single kernel address space. Proponents say these systems are much faster and more efficient that microkernels, which they say are burdened by messaging overhead.

“When writing a unix the ‘obsolete’ [monolithic] way, you automatically get a multithreaded kernel: every process does it's own job, and you don't have to make ugly things like message queues to make it work efficiently.” Linus Torvalds

“I do know a lot of people who are not researchers, but who are rather practical kernel programmers, who have a lot of concerns over the cost of copying and the cost of context switches which are incurred in a micro kernel.” Theodore Ts'o

“The whole ‘microkernels are simpler’ argument is just bull, and it is clearly shown to be bull by the fact that whenever you compare the speed of development of a microkernel and a traditional kernel, the traditional kernel wins. By a huge amount, too.” j-stroy

What microkernel advocates said:

Microkernels, like Windows NT and GNU Hurd, are a series of processes (servers) that run in either the kernel or user address spaces and communicate via messaging. Fans feel that they’re more secure than monolithic kernels (which only run in kernel space) and generally more flexible, since the entire kernel doesn’t need to be recompiled when changes are made.

“LINUX is  a monolithic style system.  This is a giant step back into the 1970s. That is like taking an existing, working C program and rewriting it in BASIC. To me, writing a monolithic system in 1991 is a truly poor idea.” Andrew Tanenbaum

“Yes, it takes more work to get them off the ground than a coroutine based macrokernel like UNIX, but the versatility pays you back many times over.” Peter da Silva

“There's nothing magical about microkernels that prevents them from being optimized, just like any other program. The benefits of the microkernel architecture certainly outweigh the performance hit in my book.” guitaristx

Woman with her hair standing on end due to static electricity

Static typing vs. dynamic typing

The dispute: Software developers all understand that type checking is a necessary thing. After all, in order for a program to function properly, constructs of a specific type (such as an integer variable) must follow the rules imposed by that type (e.g., you can’t multiply 3, an integer, by “blue,” a string). Whether to do such type checking at compile-time or run-time,  however, is a hot-button topic among programmers.

What static typing advocates say:

Statically typed languages, such as Java, C, C++, and Haskell, do type-checking at compile-time. Proponents say this leads to fewer runtime errors, faster execution, easier-to-understand code (since types have to be explicitly declared), and smarter IDEs.

“Static typing will remove an entire class of mistakes a programmer may create from a program simply by not accepting it for compilation” Jack

“In a static language, the method signature tells you what types of arguments are required. In a dynamic language, you can't tell as easily - the API documentation has to tell you what objects are expected.” quanticle

“Static languages make the programmer more accountable. Dynamic programming sometimes creates a moral hazard, and encourages bad programming habits.” Ari Falkner

What dynamic typing advocates say:

Dynamically typed languages, such as Python, PHP, JavaScript, and Objective-C do type checking at run-time. Advocates say that this makes for faster development, more concise code, and is generally better for use in prototyping and rapid development.

“The difference is that dynamic languages are ‘write, run, fix’. You can experiment and fix quickly. Static languages are ‘write, compile, build, run, fix’. You can't experiment as easily.” S.Lott

“Anyone, who has worked seriously with a modern dynamically typed language like Ruby or Smalltalk, know that they are more productive.” Anders Janmyr

“Somehow things just seem to flow better when you're programming in that [dynamically-typed] environment…” Martin Fowler

A building with the letters VI on the side

Vi vs. Emacs

The dispute: Vi (and its offshoots like Vim) and Emacs are text editors which have been around and popular for, literally, decades. Also for decades, software developers (and other tech workers such as system administrators) have been arguing over which is the better choice.

What Vi advocates say:

Users cite Vi’s speed and efficiency, which are rooted in the fact that it was written to run over a 300 baud modem, and that most everything can be done without straying far from the home row on the keyboard, reducing stress on hands and fingers.

“It starts up faster and uses fewer system resources” Charlie Cheever

“Vim is better as an editor because manipulating text requires less movement of your hands and fingers than emacs....” StackedCrooked

“It has a really steep learning curve, but pays back with extreme efficiency in the long run.” Anonymous

“Vim is based on the simple *nix philiosphy of doing one thing really well - i.e Text Manipulation.” Nishant

What Emacs advocates say:

Emacs fans tout its non-modality, flatter learning curve, extreme customizability (through its own Lisp-based programming language), and ability to let users do much more than just text editing, essentially functioning as an OS.

“For me the difference is extensibility and applicability.  My emacs setup has grown with me for nearly a decade....  A lot about the way it works is peculiar to me, my life, my habit and my job.” James Shuttleworth

“One domain where Emacs is plain better than Vim is interaction with asynchronous subprocesses. That's when you start a long compilation and want to do something else inside the same editor instance while the compiler is churning.” Gilles

“... emacs is better. Because it is not just an editor, it is a way of life.” Navin Kabra

Closeup of a tab key on a keyboard

Tabs vs. spaces

The dispute: There’s no debate about the value of indentation in software code; while it generally has no significance to the execution of the code (aside from in a couple of languages, such as Python) it’s used to make the program structure clearer and, ultimately, more readable. The choice of which character to use for indentation, however, a tab or space, is the granddaddy of developer arguments, with no sign of an end to the squabbling coming anytime soon.

What tab advocates say:

Tab-vocates argue that tabs are the logical choice and require fewer keystrokes and storage than spaces. Additionally, they say the ability to configure the width of tab characters in many modern IDEs have bolstered the case for tabs.

“You know how people say ‘use the right tool for the job’, well tabs are designed for indentation. So use them, rather than bodge some artificial implementation using an arbitrary number of spaces.” gbjbaanb

“Tabs. Then you can dynamically adjust how deep your indentation is.” Bill23

“Another benefit of this approach [tabs] - fewer keypresses when using arrow keys for left-right navigation.” NickC

What space advocates say:

Developers who uses spaces for indentation generally feel that, unlike tabs, they won't wreak havoc with code display across editors.

“A tab could be a different number of columns depending on your environment, but a space is always one column.” user8

“Because in every project that uses tabs,
The code is inevitably
       littered with
       the occasional
 line that does not line up with the others
       for no apparent reason.”  Jeremi

“...only a moron would use tabs to format their code.” Jeff Atwood