Inversion of control - Wikipedia
Finding new abstractions is difficult. In general, it seems that an abstraction is usually discovered by generalizing from a number of concrete examples. An experienced designer can sometimes invent an abstract class from scratch, but only after having implemented concrete versions for several other projects.

This is probably unavoidable. Humans think better about concrete examples then about abstractions. We can think well about abstractions such as integers or parsers only because we have a lot of experience with them. However, new abstractions are very important. A designer should be very happy whenever a good abstraction is found, no matter how it was found.
programming  ioc 
9 weeks ago
« earlier      
activerecord ajax amd android apache api apiwrapper arch archlinux arel assets associations audio authentication aws backbone-relational backbone.js bash bdd bestpractices blog book books bootstrap bower browser bug bundler business caching capistrano capybara capybara-webkit cgroups class clojure code coffeescript commandline config configuration console css css3 cucumber database debugging dell dependencies deploy deployment design development devise display displayport docker dotfiles editor elixir email encoding encryption erlang events ffmpeg firefox font fonts form forms framework garbage gem gems gist git github globalvoices gmail gnome gnupg godel google gpg graphics hackernews haml hardware heroku hosting hstore html html5 http httparty i18n i3 i3bar i3wm icons imap incompleteness input install intel interview introduction ioc japan japanese jasmine javascript jquery json kernel keyboard language laptop less linode linux lisp lubuntu luks lvm mail map mapping maps mathematics mbsync memory metaprogramming microg mobile modal models module modules music mutt mvc mysql network nginx notmuch nvidia omniauth oop osx packaging partials passenger password performance permissions phone plugin postgres presentation programming python rack rails rbenv recycling reddit reference replication require.js requirejs rest routing rspec ruby rubygems s3 scheme screenshot search security sequel server setup shell sim sinatra software spree sprockets sql ssh ssl stackoverflow startup storage systemd talktalk tdd templates templating terminal testing thinkpad tips tmux tokyo tools translation travis travisci tutorial twitter ubuntu ui unix urxvt validation video views vim vps web webdesign weechat wifi workspaces writing xorg zsh 日本語

Copy this bookmark: