4 ms·
At some point a partial rewrite might become a complete rewrite. It depends. Ship of Theseus[1], etc. 1: https://en.wikipedia.org/wiki/Ship_of_Theseus https:
by kbenson 7y ago
At some point a partial rewrite might become a complete rewrite. It depends. Ship of Theseus[1], etc.
1: https://en.wikipedia.org/wiki/Ship_of_Theseus https://en.wikipedia.org/wiki/Ship_of_Theseus
- mattmanser 7y agoBut that's not what Joel was arguing against when he first wrote the article against rewrites.
- paxys 7y agoLiterally referenced in the article
- m463 7y agoThe easy way to fund a new military plane is: - remove one bolt and raise in the air - slide out rev 30 "parts" from beneath bolt - slide in rev 40 "upgrade parts" (fuselage, wings, engines, etc) underneath the bolt - fly "upgraded plane" without a lot of pesky 'new plane" studies Additionally, in parts of california, how to build a house: - find existing house - pick a wall - remodel everything except for that wall - reap tax benefits in your 99.9% new house.
- deleted 7y ago[deleted]
- bin0 7y agoThat's sometimes a good strategy, but breaks when you do too much at once. See boeing's recent fiasco where they did basically just that with parts and a fuselage that weren't really compatible. Metaphor extends: try to replace too much in part and something will break.
- kickopotomus 7y agoI would say the Boeing incident more so favors the counterpoint. Boeing tried to keep adding features to an airframe (code base) that could not support it.
- TylerE 7y agoThe company I work for actually did this with our main product. Gradually re-written from Java (JBOSS) to Python over about 10 years. Basically the Python side knew what URLs it could handle and proxied the rest over to Javaland. We ended up shutting down the last Java bits early last year.
- xedrac 7y agoSomething that takes 10 years to rewrite (even gradually) has no business being written in Python. Yikes!
- TylerE 7y agoWhat would you write it in? At the time the re-write started, Django hadn't yet seen a public release, Rails barely existed (and had zero traction, and Ruby-the-runtime was horrible), dotnet was barely a thing, Clojure and Go didn't exist yet, dotnet barely existed. 2005 was a weird time. Realistically the only options at the time were Python, PHP (4, not 5), or Perl. I didn't come in until much later, but I don't really think there was a better option at the time.
- cs02rm0 7y agoJava?
- y4mi 7y agoIt wouldve been Java 5. do you actually know what that would mean?
- jonnycomputer 7y agoI'm guessing this is because some people only think of python as being a prototyping language, for performance reasons.
- untog 7y agoWhy not? I would argue that if you already have a lot of in-house knowledge with Java then you might as well stick with it (and just not make whatever mistakes you made last time around) but Python seems like a reasonable alternative to me.
- jaredklewis 7y agoBut the alternative to a rewrite is gradual refactoring, i.e. Ship of Theseus, i.e. not a rewrite.
- BerislavLopac 7y agoI prefer the concept of Trigger's broom. ;)