
Why Building Apps the Wrong Way Can Be the Right Way - jtwebman
https://medium.com/google-developers/why-won-t-this-work-coding-angry-for-fun-and-profit-1ef38a2b7196#.3dpv4bov9
======
deedubaya
It may seem like it, but no engineer writes "right" code on the first try.
They get it working, then they iterate, cleaning it up to make it "right".

Experience teaches us where to start, where to think ahead a little, and how
to structure code such that it can be refactored in the future.

Writing code the "right way" means 1) getting something working 2)taking what
you've learned and refactoring and/or.

If you care about maintaining a chunk of code for 6 months, or a year, you'll
quickly learn to refactor. If you are prototyping, right likely isn't a
priority to begin with.

~~~
taneq
The three priorities of software development:

1) Make it work (at all)

2) Make it work _right_

3) (If necessary) make it work fast

~~~
pramodliv1
I heard a similar quote from Nathan Marz of Storm fame: "First make it
possible, then make it beautiful, then make it fast"
[http://nathanmarz.com/blog/suffering-oriented-
programming.ht...](http://nathanmarz.com/blog/suffering-oriented-
programming.html)

------
jonesb6
If you build it they might come. If you don't build it they can't come.
Therefore you must build it for them to come. Therefore the most important
thing you do to make them come, is to build it by any means necessary.

Them of course means customers.

~~~
404error
Thanks, just what I needed to push me to build my side project. I think I need
this on a shirt.

------
empath75
Most of the code I write at work is just automating processes and I usually do
it piecemeal until managing it all gets too unwieldy then I refactor and
simplify. I'm not exactly building one to throw away, but I'm using a lot of
essentially placeholder code that I know I'm going to replace with a more
coherent system once I see the pieces working together. Sometimes the quick
and dirty stuff is good enough and I never need to touch it again, though.

~~~
91bananas
I've found it's a lot of the time that the quick and dirty is the stuff I
never come back to.

~~~
mobiuscog
In some companies, it's the stuff you're not allowed to come back to because
'it works'.

~~~
collyw
Working code that has been battlefield tested and ugly as anything is still
more valuable than pretty but unused code in many scenarios.

------
PaulHoule
Brooks said it best: "Build one to throw away"

~~~
collyw
I don't think I was ever allowed to throw away a prototype. They always end up
being the production version in the end. I make an effort to make reasonably
good prototypes for that reason.

~~~
paulddraper
I might not toss it away all at once, but by the time I'm done with v2, little
of the original code remains.

------
saosebastiao
> Twenty minutes of debugging later, it turns out I’d forgotten to call
> .show() after creating a Toast.

It amazes me that people still think that strong typing isn't useful.

~~~
dragonwriter
> It amazes me that people still think that strong typing isn't useful.

I've heard people argue that its not _always_ a _net_ benefit, but I've never
heard anyone argue that it doesn't have benefits.

~~~
sopooneo
I have never used a strongly typed language. But it seems like it would be
almost strictly superior to the php and ruby I use now. So why on earth _isn
't_ everything strongly typed? What's the downside?

~~~
astrange
C/Java-type strong languages have the downside that they're super redundant.
Typing "MyObject myObject = new MyObject();" is not fun in your free time. The
same goes for any other required proof in your program, when you already know
you're right.

Hey, remember this guy? He used to be pretty famous, you know.

[https://sites.google.com/site/steveyegge2/is-weak-typing-
str...](https://sites.google.com/site/steveyegge2/is-weak-typing-strong-
enough)

[http://steve-yegge.blogspot.com/2008/05/dynamic-languages-
st...](http://steve-yegge.blogspot.com/2008/05/dynamic-languages-strike-
back.html)

~~~
swah
Stevey would criticize languages left and right, though. I wonder if he is
coding in dynamic languages at Google nowadays... Most likely he is writing Go
while complaining about it.

(miss you stevey please resume writing)

~~~
astrange
Neither of these are even the article I was thinking of. There was one with
the same method written in Java and Perl, doing the same thing, and both
obviously correct. But the Perl one was much much shorter because you didn't
have to type any types.

