In Praise of the Solo Programmer 114
HughPickens.com writes: Jean-Louis Gassée writes that once upon a time, we were awestruck by the solo programmer who could single-handedly write a magnum opus on a barebones machine like the Apple ][ with its 64 kilobytes of memory and an 8-bit processor running at 1MHz. Once such giant was Paul Lutus, known as the Oregon Hermit, who won a place next to Jobs and Wozniak in the Bandley Drive Hall of Fame for his Apple Writer word processor. "Those were the days Computers and their operating systems were simple and the P in Personal Computers applied to the programmer," writes Gassée. "There's no place for a 2015 Paul Lutus. But are things really that dire?"
As it turns out, the size and complexity of operating systems and development tools do not pose completely insurmountable obstacles; There are still programs of hefty import authored by one person. One such example is Preview, Mac's all-in-one file viewing and editing program. The many superpowers of Apple's Preview does justice to the app's power and flexibility authored by a solo, unnamed programmer who has been at it since the NeXT days. Newer than Preview but no less ambitious, is Gus Mueller's Acorn, an "Image Editor for Humans", now in version 5 at the Mac App Store. Mueller calls his Everett, WA company a mom and pop shop because his spouse Kristin does the documentation when she isn't working as a Physical Therapist. Gus recently released Acorn 5 fixing hundreds of minor bugs and annoyances. "It took months and months of work, it was super boring and mind numbing and it was really hard to justify, and it made Acorn 5 super late," writes Mueller. "But we did it anyway, because something in us felt that software quality has been going downhill in general, and we sure as heck weren't going to let that happen to Acorn."
As it turns out, the size and complexity of operating systems and development tools do not pose completely insurmountable obstacles; There are still programs of hefty import authored by one person. One such example is Preview, Mac's all-in-one file viewing and editing program. The many superpowers of Apple's Preview does justice to the app's power and flexibility authored by a solo, unnamed programmer who has been at it since the NeXT days. Newer than Preview but no less ambitious, is Gus Mueller's Acorn, an "Image Editor for Humans", now in version 5 at the Mac App Store. Mueller calls his Everett, WA company a mom and pop shop because his spouse Kristin does the documentation when she isn't working as a Physical Therapist. Gus recently released Acorn 5 fixing hundreds of minor bugs and annoyances. "It took months and months of work, it was super boring and mind numbing and it was really hard to justify, and it made Acorn 5 super late," writes Mueller. "But we did it anyway, because something in us felt that software quality has been going downhill in general, and we sure as heck weren't going to let that happen to Acorn."
In praise of ... (Score:1)
... those with original ideas
We get to enjoy so many wonderful things, every single day of our lives, because of those who came up with original ideas - and work to make their ideas become reality
Solo programmers with original ideaas deserve praises - as for those who can't or don't - nothing special, reaslly - as they are just like all the millions of data monkeys throughout the world
" Once such giant was" (Score:1, Funny)
" Once such giant was"
How about something entitled "In Praise of the Solo EDITOR" ???
Oh wait, this is slashdot.
Its easier now (Score:5, Insightful)
Once upon a time you had to write a type renderer if you wanted to write a wordprocessor, now the OS does that for you.
Once upon a time you had to drive the audio directly, now the OS does that.
3D? You had to write your own stack, now OS does that.
Really its a LOT easier for one person to write a full app these days, and behind a lot of those mega teams you'll find there is actually one person doing the heavy lifting.
I find it trivial to do major apps these days.
Re: (Score:3)
"I find it trivial to do major apps these days."
You'll be able to give us a link to some of them then won't you.
Re:Its easier now (Score:5, Insightful)
The problem is there is trivial and then there is trivial. Yeah you can get a notepad clone up and going quickly. But if you want to compete with other editors that are out there for free you need to add syntax highlighting, efficient support for large files, likely tabbed content support, fonts, good search, potentially regex support etc. In short: we rarely need to create something completely new now. But we have an endless list of required features to compete. Often few are technically difficult to implement just a huge amount of work to get through and lots of nit-picky things like borders on controls rendering differently on different browsers and the like. You're not solving one of lifes mysteries but you still might burn a week figuring out why one does it different than the other and finding what magic combo makes all browsers happy at the same time.
Re: (Score:3)
Open source, or even closed sourced but published libraries do help. Sometimes it is too much choice though, to the point where sometimes you wonder if you'd have been better to do it yourself. Ex: I've used 2-3 different JSON serialization tools for my project, one can map dictionaries, another can embed information about the class type neither do both etc. You spend time figuring out how one works, change your mind and have to change a bunch of element decorations to the new tool. Get stuck, go to the for
Re: Its easier now (Score:3)
Re: (Score:2)
Imagine what you could do if it was your one and only task and not part time.
Really Apps allowed solo programmers to shine, and they great ones shine very brightly just as they did in the 80s. The crap ones pretend it can't be done, even as others are doing it!
Re: (Score:2)
That may be, but it's not a trivial app.
Re: (Score:2)
Notepad++ has also been around for a long time. These solo projects are pretty impressive, but also remember that the author has been working on their program for 15-20 years or more. Likewise, it would probably take someone else years to build a similar program by themselves.
Re: (Score:2)
Re: (Score:2)
"I think it's like saying that making a text editor is now easy"
Sure, if you just use the default widgets. Now try and implement something NOT included with them. Syntax highlighting for ANOther language. Oh dear, that means you'll have to write your own lexical analyser and integrate it. Not so easy now is it?
Re: (Score:3)
Or you can write and use a text editor for terminals. I redid the old Rand Editor and called it sre. I have the source on my website. Took awhile, but I use it for coding exclusively. I also have written over the past decade or so a integrated circuit layout editor that has a limited DRC/LVS along with a matching schematic editor. The performance of the layout editor exceeds that of the "big" guys. A solo programmer can do alot with the tools available.
Re: (Score:2)
Once upon a time you had to write a type renderer if you wanted to write a wordprocessor, now the OS does that for you.
Once upon a time you had to drive the audio directly, now the OS does that.
3D? You had to write your own stack, now OS does that.
Really its a LOT easier for one person to write a full app these days, and behind a lot of those mega teams you'll find there is actually one person doing the heavy lifting.
I find it trivial to do major apps these days.
The old Silver Bullet.
Never happened. They keep moving the goalposts. With the resources available these days, it would be fairly easy to create a WordStar in short order - as long as you didn't expect the original WordStar's resource frugality. But a modern-day app needs to run in a windowing system. And have menus, dialogs and toolbars. And interact with all sorts of programs. And handle lots of file formats. And be Internet-friendly. And have this "essential" feature and that "essential" feature. And so
Re: (Score:3)
Re: (Score:1)
Re: (Score:1)
Mobile apps (Score:5, Insightful)
Re: (Score:1)
Re: (Score:2)
There are, but at least the ones I know do rely on other people. For example they will buy assets (icons, sound effects, whatever) or get ready-made-libraries for many tasks.
Hackers (Score:5, Interesting)
Re: (Score:1)
... while today you can't make a video game without a team of hundreds.
You can. Check 'Indie game: the movie'.
Re: (Score:2)
With QB64, solo programmers can do a lot more. (Score:1)
Another place with programs: http://www.thejoyfulprogrammer... [thejoyfulprogrammer.com]
The Legend of Davy Brogramar (Score:5, Funny)
He can write a C++ compiler using only javascript.
He can build a robust modern MMO with no bugs in 2 days, using only a Commodore 64 and a case of Red Bull.
He can promise an application to solve all your company's problems, and actually deliver it !!
And he always puts pros before hoes
He's Davy, Davy Brogramar...master of all programming!
Re: (Score:1)
It's not about productivity, it's about drinking the Kool-Aid. If your employer artificially forces work relationships (by encouraging "collaboration", which is usually two coders complaining about their manager), then you're less likely to complain about something ("we're all in this together") that you really should be complaining about. They would rather have a worker bee at 20% capacity than an independent thinker at 100%.
Re: (Score:2)
Efficiency in modern business is measured by how many hours you spend in your cubicle chair like an inflatable Bozo doll looking like you're typing something. Not on actual production of a quality product.
And you're expected to be 110% efficient, so if you could come in Saturday ... that would be great.
Re: (Score:2)
Measuring productivity is hard. Butt-in-seat time is easy.
Re: (Score:2)
I knew I remembered that name from somewhere (Score:5, Informative)
"I once preached peaceful coexistence with Windows. You may laugh at my expense - I deserve it."
-- Jean-Louis Gassee, CEO Be, Inc.
Notepad++ (Score:3)
In a way, Notepad++ was written by one person, right?*
*With a handful of contributors since 2014?
Re: (Score:2)
Notepad++ is based on Scintilla. The point as made above by other posters it is easier today to write major public visible applications using libraries and other code source. Not to take away from the significance of the accomplishment of the author of Notepad++.
It's not famous or widely used (Score:2)
It's not famous or widely used, but my pet project MSS Code Factory [sourceforge.net] started in 1998 and has kept me busy ever since. I think I'll finally be finished with it this year, though. I think it's time to find something new to occupy my mind and my time with. :D
Re: (Score:2)
124k? (Score:2)
The Apple ][ we had had a 64k address space, true. But it was bank switched. Main memory was 60k, as I recall, but the top 4k had an OS function to select an additional 60k that would map into the low-order 60k. So you had a high 4k permanent bank and two low switched banks of 60k each.
If you stuck to BASIC you never knew this was going on, and maybe it was only the later machines that did this. But us 6502 hackers knew it. A total of 124k.
It was many years ago; I think it was the top 4k but it might
Re: (Score:2)
Re: (Score:3)
The Apple ][ plus [wikipedia.org] had 48K of regular RAM and an expansion slot 0 for the 16K RAM expansion card (known as the "language card" because it enabled Pascal [wikipedia.org] to run on the machine). The older Apple ][ [wikipedia.org] did not have this slot, and maxed out at 48K.
The Apple //e [wikipedia.org] came with 64K built in, but still arranged as above for compatibility. Whereas the earlier DOS fit within the 48K space, the more feature-full ProDOS occupied the language card space and thus required a 64K machine.
The Apple //e replaced slot 0 for a specia
Re: (Score:2)
Re: (Score:2)
Same here. The green "plus" on the name plate didn't stand out too much. My school library got one with a color composite monitor, paddles, two floppy drives, an Epson printer, and the fantastic documentation (Applesoft Tutorial, Apple ][ Reference Manual) but needed some kid to help with how it works. After I showed 'em how to boot "Oregon Trail" and "Lemonade Stand", they let me use it whenever it was free. Awesome.
Re: (Score:2)
Minecraft is a great example. Written at a time where all major games had teams in the hundreds, and multi million dollar budgets. Everyone had declared the solo programmer dead.
Re: (Score:2)
But in order to get Minecraft or Cave Story or any of the other solo success stories onto game consoles everywhere, the team had to become a lot more than just Markus Persson or Daisuke Amaya.
Re: (Score:2)
But in order to get Minecraft or Cave Story or any of the other solo success stories onto game consoles everywhere
Have a look at the nowhere demos.
From the FAQ [duangle.com]:
I see nothing about a console port. My point is that it takes a larger team to shepherd a game through console makers' bureaucracy.
Re: (Score:2)
Re: (Score:2)
Part of it I think is there is a lot of software features that don't make it into production and then a lot of supporting code to control the testing servers, test data generation etc etc. My work on my project for example, about 10 server devs, 5 client side, and 3 "tools" guys that keep the CI servers running, deploy all the test environments and generally automate things. So that is 30% right off the top that a customer will never "see". Then for one reason or another an API server side creates has maybe
Re: (Score:2)
But of course, they won't be considering the other prerequisites like reducing manager count, burning the timesheet forms (with the 30 second intervals), or offices with doors that close.
Hiawatha webserver (Score:3)
Re: (Score:2)
Same old story that accompanies tech progress... (Score:1)
Another variation on the same story we get here every month or so. "Such-and-such is so complex now that the individual is no longer able to contribute anything truly new, as the stuff that one person can do on their own has already been done." That's the price of technological progress, people.
Sure, the exceptions jump out at us, as some of you are posting. But they jump out at us because they are the exceptions nowadays. As things progress we should expect that the serious front-line work will require
Re: Agreed, it's nice work... apk (Score:1)
I am surprised no one mentioned apk. He single handedly created a host files solution to block spam and malware. The one man team is not dead. The legend of APK lives on.
Two Reactions (Score:2)
Second: http://www.paulgraham.com/head... [paulgraham.com]
Working on the next big thing right now by myself (Score:1)
Re: (Score:1)
Re: (Score:2)
Re: (Score:1)
pros and cons (Score:2)
There are definite advantages to a solo-programmer project.
For starters, you can take shortcuts you couldn't take in a team, because there is a reason that you have all these coding styles and guidelines and templates and levels of abstraction and frameworks and all that other stuff, and the reason is "you are not the only person working on this project".
Well, if you are a lot of these constraints disappear. I love to write code with a low amount of abstraction, because yes, I understand its advantages, but
Re: (Score:1)
Re: (Score:2)
True to some extent. I didn't say forget all good practice.
But, for example, for the game listed in my .sig I wrote a lot of very specific GIS code. Yes, I could have spent the additional time and conceptual work and written a generic "find object on map based on criteria" service and maybe it would be useful in some future project.
But with what I've learnt doing it the way I did, I could write another task-specific piece of GIS code in half the time that the abstraction would cost me, with none of the over
nice ad for Acorn (Score:2)
Minecraft? (Score:2)
Re: (Score:2)
What has Notch programmed lately, other than the security code for his fabulous mansion?
After you get a $2.5 Billion payday [independent.co.uk], how hard will you work?
DragonFrame: Stop Motion Animation Software (Score:1)
The romance of the code ninja (Score:5, Insightful)
- Silently checking in 12000 lines of code in the middle of the night and leapfrogging the entire development schedule by months.
- Spending 72 consecutive hours at the keyboard, sustained by caffeinated drinks and a desire to produce an end product that will make your users - and other programmers say 'Wow!'
- Delving into the voodoo and deep magic of a system, consuming it all and spitting it back out with ease, and being regarded with awe by your peers.
Yeah, these are awesome. The Story of Mel [catb.org] was an early encouragement to me; between it and the movie Tron, it put me on the path to being a software developer.
Lots of folks pointed out pro- arguments, so I won't cover those, but there are an awful lot of cons. 20 years plus into my career, I'm seeing some fatal flaws.
The first is the Bus Factor [wikipedia.org]. A solo developer, whether in a group or not, does not facilitate the dispersal of knowledge. There's a difference between documentation - even the elusive technical documentation - and knowledge, and that gulf widens with each feature, bugfix, and release. In my experience, when a solo developer leaves - for whatever reason - it's often easier to start from scratch than try to maintain their software.
That leads us to the next issue, maintainability. As was described above, a solo developer can skip quite a bit; coding style, documentation, modularization, naming schemes, readability, unit testing, automated build and deployment, and so on. I've had to take over so many projects in my life that required more time to set up a working build and test environment than they did to fix the error I had been brought in to tackle. I used to carry a pack of cd's with precompiled versions of sed, awk, as, and other tools for various *nix platforms (and versions of those platforms) because these were often not just pre-requisites for the often complex script-based builds, but often only came in for-pay packages that weren't on the machine I was expected to work off of. I had a set of about 30 just for HP-UX alone (because you have no idea which version-specific behavior a given build relies on). Put it this way: every build required a port.
Of course, it's not just other people's code. I'd come back to something I wrote a year prior and it'd be horrible.
"Why did /THEY/ do this? Wait ... did I do this? Geeze, I USED to write bad code." - me, every. single. time.
I have a theory that only constant modifications to code keeps away the gremlins that cause bitrot. Leave a piece of code alone for a month, no commits (assuming you're even using version control), and they come in and crap all over your beautiful hacks and graceful architecture, rendering it just barely capable of doing what it was designed to do, and sometimes not even that. Yet, you write your code as if a team will handle it, losing most of the benefits of being a solo dev, and it's usable when you come back to it later.
Communication is next, and it ties into the maintainability above, but on a software development lifecycle level. When someone is silently making architectural changes and off doing their own solo thing, sure, they get a lot done. When you're completely by yourself, that's fine. What happens though, when you're doing solo development in a large company? Suddenly there's no code reviews, no understanding of department or organization architectures, or even just updates to them. Your code usually stands on the back of a whole architectural stack, and without two-way conversations, it isn't guaranteed to hold up. It's not just that you might accidentally reinvent the wheel - it's that you could do it wrong and limit the application (or have it die) later, with an expensive to fix systemic issue. Documentation fits in this category too - and why do documentation when you're a solo dev? You can always answer any question, right? Yo
My favorite example; huge app with 1 dev (Score:2)
Dwarf Fortress [google.com]!!!!!!!!!1!!!1eleventy!!!!!
Here's a pretty cool article about Tarn Adams. His lifestyle sounds pretty similar to the guy in the cabin.
http://www.nytimes.com/2011/07/24/magazine/the-brilliance-of-dwarf-fortress.html [nytimes.com]
There are lots of super software (Score:2)
that's mostly the work of one programmer, for instance luajit http://luajit.org/ [luajit.org] mostly the work of Mike Pall.
He's transitioning to open sourced without him though.
It's not perfect (for instance writing his own assembler instead of using a standard one for the interpreter makes debugging changes to the interpreter hard).
Eat your own dogfood (Score:2)
Its the "eat your own dogfood", what helps.
A person has a problem, solves it with code and shares his program. He improves on the program, as he uses it and needs it, others benefit, too. He will be way more efficient and his product way more useful, than a hand full of programmiers, with some unclear specification, which needs to be worked on to check bulletpoints on a TODO list. They will do what they are told to, while he will do what he needs for his program to work fine. And if he sees that some idea w
Flamebait? (Score:2)
Ya know, I have nothing against Apple, and lots of praise for interface builder and the other tech that came out of NeXT, but is this AC honestly jizzing for Apple development products, or is he actually an alien trying to test how quickly Apple-haters will start flaming and others will argue frivolously over their favorite development environment?