"Kill Your Darlings" in Computer Science

George Malamidis taught me something about code attachment a few years ago: You always gain by allowing someone to show you an alternative solution. If someone wants to solve a problem in a different way, there are several gains to be had. If their way is inferior, you have an opportunity to mentor a team-mate. If their way is equally elegant, you've gained another solution, or point of view that may be superior in the future. If their way is superior you learn something new and the codebase improves. In exchange for these gains you only need to give up time. Time is valuable, but it's also well spent on improving the ability of a team-mate or your personal ability.

Michael Feathers has also written on this topic, specifically focusing on frameworks. In Stunting a Framework, Michael discusses creating small focused frameworks and then letting them go. I think Michael really nailed it with that entry, it's definitely worth a quick read.

I think killing your darlings extends beyond codebases and frameworks to languages themselves. At SpeakerConf 2009, I floated the idea that we should more actively seek to kill languages. Perhaps, after 3 versions of a language, it's time for that language to be retired. Imagine what we could create if the resources dedicated to Java were instead focused on creating a successor to Java. Think of all the time that would be saved if backwards compatibility became a non-issue.

Notes:

The "Kill Your Darlings" concepts applies not only to writing, but to code, frameworks, and languages as well; although, the concept has more to do with opening up the world to improved versions of these things.

Folksonomies: computer programming computer science

Taxonomies:
/technology and computing/programming languages (0.602779)
/technology and computing/programming languages/java (0.499210)
/technology and computing/consumer electronics/game systems and consoles/playstation (0.373736)

Keywords:
frameworks (0.919542 (negative:-0.468736)), George Malamidis (0.863325 (neutral:0.000000)), way (0.827724 (positive:0.380977)), alternative solution (0.824807 (positive:0.554220)), darlings (0.795340 (negative:-0.398384)), backwards compatibility (0.794076 (negative:-0.257240)), quick read (0.779280 (positive:0.884179)), different way (0.778671 (negative:-0.381095)), personal ability (0.773764 (positive:0.683232)), Michael Feathers (0.757640 (positive:0.246591)), time (0.744004 (positive:0.167607)), languages (0.623646 (negative:-0.161421)), gains (0.594496 (positive:0.284877)), versions (0.525968 (positive:0.530361)), team-mate (0.525170 (positive:0.683232)), Java (0.484271 (neutral:0.000000)), language (0.477741 (neutral:0.000000)), codebase (0.434220 (positive:0.827006)), codebases (0.428554 (negative:-0.468736)), attachment (0.427380 (neutral:0.000000)), Science (0.419347 (negative:-0.322490)), world (0.417886 (positive:0.530361)), things (0.417649 (positive:0.530361)), concept (0.413246 (positive:0.530361)), opportunity (0.411043 (neutral:0.000000)), problem (0.410284 (negative:-0.381095)), successor (0.408770 (neutral:0.000000)), exchange (0.407207 (positive:0.284877)), point (0.406157 (positive:0.450990)), view (0.406084 (positive:0.450990))

Entities:
Michael Feathers:Person (0.970425 (positive:0.480180)), George Malamidis:Person (0.639268 (neutral:0.000000)), Java:Technology (0.615161 (neutral:0.000000)), Computer Science:FieldTerminology (0.607841 (negative:-0.322490))

Concepts:
Programming language (0.927708): dbpedia | freebase
Improve (0.875296): dbpedia
Gain (0.861853): dbpedia | freebase
KILL (0.847647): dbpedia | freebase
Better (0.796096): dbpedia
Idea (0.757547): dbpedia | freebase | opencyc
Concept (0.750565): dbpedia | freebase | opencyc
Language (0.694843): dbpedia | freebase | opencyc

 Kill Your Darlings
Electronic/World Wide Web>Blog:  Fields, Jay (March 31, 2009), Kill Your Darlings, Jay Fields' Thoughts, Retrieved on 2011-02-14
  • Source Material [blog.jayfields.com]
  • Folksonomies: programming computer science


    Triples

    14 FEB 2011

     The "Kill Your Darlings" Principle in Computer Science

    ReFactoring: Kill Your Darlings > Similarity > \"Kill Your Darlings\" in Computer Science
    Good programming means killing ideas that are too clever for the sake of being clever, and good computer science means killing code, frameworks, and languages in order to free up space for new ideas and inventions.


    Schemas

    17 JUN 2015

     CitC: 03 The Hacker Mindset

     
    Folksonomies: education teaching hacking
    Folksonomies: education teaching hacking
     5