> You should have a strong opinion on every major area of software development<p>Strong implies stubborn, and stubborn implies inflexibility. The last thing I want when trying to debug a legacy system is a new hire complaining up the wall about XML bloat. It wasn't my decision, we are stuck with it, and let's move on and ship.<p>I think every developer should have some (shred of) experience in every area, and have knowledge of various options and the tradeoffs between them, but don't go around becoming that die-hard religious guy on the NoSQL/SQL debate (or any other for that matter).
I've begun using a Trello board to keep track of the skills I want to pick-up and things I want to learn.<p>I have the lists "Heard about it", "Read about it", "Learning it", "Done with it". Today, for example, I added: "Learn about using Git bisect to trace bugs" to the Read about it board. Will probably play with it next weekend.<p>This is a new workflow for me, but so far it's working well.
I fully agree with this article.<p>At my startup, Semantics3, we use Capistrano [1] for multi-machine deployments of our git repos. This has greatly helped our productivity as it just takes a couple of minutes to go from dev to production!<p>Through a single command (cap -f api deploy:start) our entire cluster get the latest git repo and all the services are (re)started - we use Upstart for daemonizing our processses and Monit for process monitoring. All of them seamlessly work together.<p>[1] <a href="https://github.com/capistrano/capistrano" rel="nofollow">https://github.com/capistrano/capistrano</a>
There is also nice gui frontend to it. You can do deployments through the web, with built in logging and user management! Its called Webistrano - <a href="https://github.com/peritor/webistrano/" rel="nofollow">https://github.com/peritor/webistrano/</a>
> Developers love developing. (Perhaps recently computer science has gotten a boost in the number of those in it for the money, but for the most part those who I interact with on a professional level are in it for the fun.)<p>Ha. Just recently computer science got a boost in those in it for the money? I guess I started CS in 98, right during the boom times. Though our silly 18 year old selves thought we'd have it made, the 50% of our class who didn't actually enjoy it dropped off each year.<p>From my weak searching I found this, apparently majoring in CS is back on the rise:<p><a href="http://cra.org/govaffairs/blog/2012/04/undergrad-computer-science-enrollments-rise-for-fourth-straight-year-cra-taulbee-report/" rel="nofollow">http://cra.org/govaffairs/blog/2012/04/undergrad-computer-sc...</a>
I think its good practice to spend a little bit of time each day or week trying to learn something new that will help you work[/play], a new vim command or feature, etc.
> “I like the BlackWidow Ultimate: it doesn’t have proper buckling springs, but it’s backlit and I like to code in dark rooms”<p>You... need to see your keyboard?
Good SCM, easy testing APIs/harnesses and easy deployment are so wildly important, it infuriates me to work at one of the the biggest names in tech and waste HOURS a day on bullshit deployment issues or copy/pasting things in six different places before I can execute my tests or do manual verification.<p>For one project, deployment to production takes 3+ weeks, testing environments can take a week and is fraught with steps that take hours and literally can fail for any random reason and can only be mitigated by starting over.<p>And then I come home to my side projects that can be built with a single standard command that is more or less an industry standard. I can deploy it reliably <i>every. single. time.</i> I have a test framework that can be run from within my development environment or from the command line with the same tool as the build tool.