Kent Beck, creator of extreme programming and test-driven development, writes about software practice, startup phases, and shipping.
HN links his "Just Ship, Baby" essay as an answer to Joel Spolsky, and commenters cite it for early startup code quality and development phases.
Checked your profile and you seem to be smart, yet I think you are wrong again : ) (sure you have got enough sleep lately? not been talking to much to marketers?)
> "The fundamental difference here is that bikes are ridden in a way that's fundamentally unchanged for decades. Contrary to this "settled" field of knowledge, programming is constantly invalidating itself."
The most well known styles of programming (imperative, functional, object oriented etc) have been unchanged for two or more decades as well.
And a 10 year old c or html tutorial still works and still lets people start solving real world problems.
I guess I'm leaving this discussion here. You know way to many cool expressions for me: '
>"programming is constantly invalidating itself" - this holds true for Java, C and Lisp right? Or are we talking about how for loops aren't valid anymore?
> "Consider what modern linux looks like compared to the original version;" - We are talking about that "unix clone" thing from early ninetys? Has it become a Windows clone without me noticing?
> "A doctor who does not constantly improve and update their knowledge will be a substantially worse doctor than one who does. A perfect example of this is pre-scientific doctors like homeopaths, who basically do nothing with an almost frightening level of dedication and fervor." - Comparing software developers to doctors. Go tell some doctors. Try car mecanic. They also have to stay up to date.
> "I did not direct this at some…
Pluggable systems (loose coupling) are the easiest way to create a system that is cheap and easy to maintain. I've found that a lot of Rails developers in particular don't see the benefits of this and they really, really like tightly coupled systems because of the convenience of it all.
Benefits like fast, easy testing, easier maintenance, swappable external things like databases, queues, external api's are apparently not enough of a benefit to change away from rails.
I wrote a pattern (http://obvious.retromocha.com) that makes pluggable systems easy based off of ideas from Uncle Bob, Alistair Cockburn, and Kent Beck which I think makes writing pluggable systems a lot easier, but as with all similar structures like Hexagonal Architecture and the like, Rails devs seem to not see the value in it until their app is a complete mess, at which point they would rather add more rails code than fix the underlying problems.
For a lot of developers, now that rails is popular, rails IS the architecture and things that go off the rails are either a waste of energy or too difficult.
Rails is what Kent Beck calls a connected architecture and as his incredibly scientific graph describes, the cost of change spikes dramatically over time compared to a modular architecture: http://www.threeriversinstitute.org/blog/wp-content/uploads/2009/08/connectedAndModularDesign.jpg
Until developers adopt modular or at least more service oriented designs, nobody should be surprised by slow tests,…
Founders new to coding write horrible code. And that is ok!
At the beginning the biggest risk is not writting terrible code you will regreat having written, let alone give maintance. The biggest risk is making something nobody wants.
From my experience, the biggest issue comes after you get enough traction/money/funding to hire a team. This is where things can get really bad, when the founder thinks he actually knows how to solve CS problems, and says things like: "This Machine Learning thing is not that hard: I wrote the landing page for the startup in 3 hours without any programming knowledge".
Hubris is one dangerous trait that will get anyone in trouble. Founders, due to their natural Reality Distortion Field[1], can be a victim of it[2].
Kent Beck, creator the agile methodology XP, discussed some of this in his The Flight of a Startup[3]
[1] http://www.startuplessonslearned.com/2010/09/visionarys-lament.html
[2] http://blog.paulbiggar.com/archive/why-we-shut-newstilt-down/
[3] http://www.threeriversinstitute.org/blog/?p=251
Kent Beck of TDD fame wrote an early answer to this blog post:
Just ship, baby.
http://www.threeriversinstitute.org/JustShip.html
I found that reading it a few years ago really helped me along. Note that of course Beck refers to rules as the thing that hold him back, because as a hardcore TDD'er he likes rules. Substitute "rules" or "best practices" for "fancy editor setup" or "perfect webpack configuration" for the same thing in HN-o-world. Substitute it for whatever you tend to find most important and you have a helpful piece of actionable advice.
Also, I think that this "Just ship it" idea is basically "worse is better" but then inside a single person's mind.
> And all the examples from Beck's TDD book were in Java.
One has to make a living.
> but their numbers are surely dwarfed by the number of people programming in that style in Java and .NET.
Doubtful. To quote Kent himself, "Even allowing for my marketing and sales mistakes, the data suggests that there are at most a few thousand Java programmers actively practicing TDD." Which is why he stopped developing jUnitMax http://www.threeriversinstitute.org/blog/?p=291
Java just doesn't have a TDD culture, nor does C# really.
Zed has gotten nothing from me. I've gotten the ability to use a good web server, instead of spending time setting up or dealing with an inferior one.
A license structured as "acknowledge your use or you will be sued," with penalties specified, as opposed to "please acknowledge your use" might have a different effect. I really have no idea.
Kent Beck's post from last month came to mind.
http://www.threeriversinstitute.org/blog/?p=231