How to suck less (at coding)

What is suck less?

Write programs that do one thing and do it well.

Metrics of sucking

High SLOCs may indicate:

Linux is on my shitlist

Software with growing SLOC becomes spoilt software:

A bad programming language may bring:

Being really good at C++ is like being really good at using rocks to sharpen sticks. - Thant Tessman
Java: the elegant simplicity of C++ and the blazing speed of Smalltalk. - Jan Steinman
Ruby is Scheme mated with Perl in such a way that the best genes of both failed to exert a phenotype. - frumious in reddit

Harmful software

.
Harmful thingsLess harmful alternatives
SGML, XML, YAML.JSON, CSV, ndb(6), plain(UTF-8) text.
NFS, SMB, AFS, WebDAV.9p.
C++, Java, Vala, D, Python, Ruby.C, Go, Limbo.
pthreads (PoSix threads).CSP-style concurrency: Go, libthread, libtask, Limbo, Erlang, ...
Perl, Ruby.rc, awk.
PCREStructural Regular Expressions or plain classic/extended regexps (as used in awk, sed, grep, etc.).
Bash, tcsh, zsh.rc, OpenBSD's pdksh, ash/dash.
GNU Coreutils.Plan 9 from User Space.
GNU Screen.tmux.
GNU info.Man pages.
GCC.8c, tcc.
glibc.ucLibc, DietLibc.
GNU autoconf/automake, CMake, imake, scons, waf.mk, or plain old portable makefiles.
Glib.libc (see above), p9p's C libraries.
GTK, Qt, VxWindows.Tk, textual interfaces.
Vim, Emacs, nano, Eclipse, ...Acme, Sam, ed.
UTF-16, UTF-32, Latin-1, other encodings.UTF-8.
iSCSI, FCoE.AoE (ATA over Ethernet).
PAM (Pluggable Authentication Modules).Factotum.
Jabber and XMPP.IRC (for IM), STOMP (for general distributed messaging).
IMAP.SMAP(Simple Mail Access Protocol).
SQL databases.Tutorial D, pq, BigTable, plain old hierarchical filesystems.
Subversion, aka svn.Git, Mercurial (aka hg); hell, even CVS or plain old tarballs would be better than svn.
FreeBSD, NetBSD, Solaris.OpenBSD.
Apache, lighttpd.thttpd, OpenBSD's fork of apache 1.3, nginx, or best of all: don't use HTTP.
SVGPS(PostScript)
PDFPS(PostScript), DjVu.
EPUBDjVu.
ALSAOSS4
GPL, LGPL, Apache Software License, MPL, CC.In order of preference: public domain, ISC, MIT/X, BSD, CC0.
headsed 11q

High SLOC + Wrong language + more harmful stuff = YOU SUCK

Howto suck less in 10 difficult steps

1. Study software that sucks less

2. Appreciate good style and taste

I ♥ Graphic Design
Phoenix Design Week 09

3. Compare the whole stack and your alternatives

4. Use the right tool for the task

5. UI: don't confuse users with achieving the same in different ways

6. Refactor & refine

7. Get peer review (can be pedantic & harsh)

8. Fix bugs before adding a feature

9. Make your software usable from day 1

10. If adding a feature, consider removing a feature

One of my most productive days was throwing away 1000 lines of code. - Ken Thompson

Deleted code is debugged code. - Jeff Sickel

The End: Let's argue