Forgotten most of this stuff since learned at university. I don’t know if this means it’s not applicable in modern programming, or I’m actually not doing ‘real’ CS after all. :S
iOS app for work. Converting old .frame based layout code to use Auto Layout. Also plugging away at Coursera Algorithms course :)
For a great intro the the world of Lisp, I suggest Land Of Lisp : http://landoflisp.com/. Very neat to see Lisp popping up with bindings in so many different languages!
I enjoy reading gary b content, but seems like he missed the point.
Yes, DHH used exaggeration and rhetoric in his blog – he’s known for it.
The article is almost contrarian for the sake of being contrarian – at a high level they both agree that mocking everything to death is superfluous, and that Tests in general are good.
Couldn’t agree more; I stopped reading the article after first paragraph. :S The whole TDD is good/bad sideshow feels like an election year debate which only benefits the candidates engaged.
I don’t see why DHH should get a free pass for using crappy arguments. I think this whole post is useful but an important TLDR may be the end:
TDD is useful and test isolation is useful, but they both involve making trade-offs. Unfortunately, doing them 100% of the time seems to be the best way to learn what those trade-offs are, and that can temporarily lead beginners toward extremism. TDD and isolation both break down in some situations, and learning to detect those situations in advance takes a lot of time. This is true of advanced techniques in any discipline, programming or otherwise. That is the honest, non-exaggerated, no-lies-involved truth.
Agreed. My solution was to build my own company and keep the idiots out. It’s been working well for the past 10 years, at least.
I’d love to hear about the company and the story behind it – what’s your hiring technique, what kind of projects are you working on, which technologies and processes you use?
I’m trying to do something similar myself and I have to admit we do have our moments resembling the ones in the article (though I like to believe they’re not as drastic :)).
I could write a post, but it would probably be one of the most boring “successful” (so far) business stories around. The basics:
Many of the above may not transfer to a product company, but it’s certainly possible with a carefully-grown, bootstrapped one.
As a software engineering student, while reading I thought to myself: “This won’t happen to me, I’m going to make my own company!”. But thinking it twice, is it really possible to fight the system? Don’t you have deadlines to be met and requirements to be implemented? How do you manage?
Besides programming, a professional developer will also be skilled in managing requirements and deadlines. Absurd requirements and inhuman deadlines aren’t good for business on either end.
I think of this lesson as “having a large, purposeful boulder.”
Now this boulder is pretty large and takes some time to walk around; once this walk is complete however, one has an understanding of the boulder’s purpose.
To make things easier, we decide to cleave this boulder into three smaller boulders. Now, one must walk around three boulders, but the time to comprehend is easier. It’s simple to keep the purpose of only three boulders in our heads.
Feeling clever, we decide to break these three boulders into many many smaller boulders, almost sand. Attempting to examine the grains of sand now takes eons as the tiny particles slip through our fingers.
Devops can be a double-edged sword. The positive side is a work environment where it’s not the same old thing everyday. Too much responsibility and not enough support will cause anyone to flame out.
There’s a start-up launching this second to ‘disrupt sleep’ :/ Everyone’s chasing the dream just out of reach. Funny how the harder one works at something, the further from the goal they can become.
See also http://bellard.org/tcc, which probably compiles and loads much faster than c99sh, since it works entirely in memory.
Great idea :) A few years ago, I read that in some countries you can rent fake friends for your wedding ceremony and have them say nice things about you and your spouse!
A small, but powerful cognitive trick we use is to start each file with : var context = this;
This simple change does wonders when reasoning about the meaning of ‘this.’ I know the idea of ‘this’ comes from Java and other OO languages, but maybe all the trouble simply stems from bad naming of this important variable.
I personally find a test suite composed of granular unit tests to be invaluable when code velocity is high. The tests by themselves do not have high value, but together form a regression safety net.
Intrigued by the approach of assertions + integration tests. Will be trying this out in the next project.
Assertions plus integration is what we do for our project. Best thing for velocity. If you are confident enough, do what we do and leave them on in production. Can’t ignore bugs when they prevent your program from running.
and our project is serious, actual big data. Think petabytes.
so I highly recommend this. Also suggest white box testing. Throw random data at your program!
Some of these are great! Unfortunately many of the GIFs have a thin black line across the bottom.
My favorite.
The gifs are not the final product and are meant as an example. The real code for all the spinners can be found at https://github.com/zmcartor/ThinkingFaces
Thanks too for the feedback :) Re-cropped those gifs so there’s not a black edge at the bottom.