This is a good thing, isn’t it? So why do I hate TDD?
Because debugging is fun. There, I said it. I love debugging. I think lots of clever people like debugging.
I've been doing embedded development for quite some time, so you know, flipping bits like a boss, a shitload of open terminals, lots of cables everywhere all the stuff that makes you look like you know what you're doing but debugging is not fun, it never was, it's a huge waste of my time.
You know what's fun? Having a product that works.
Debugging is code monkey job, you don't do it because you're smart, you're doing it because you were foolish.
At least I personally am much more driven by the fun of solving problems - usually low-level of the kind - and for me having a product that works isn't particularly very rewarding. It's much more rewarding to actually come up with a clever solution to a seemingly abnormal problem. Not to say that TDD would take this away though, but I've noticed that the emphasis of problem-solving moves one step upwards to the design/architectue scale, which definitely isn't my cup of tea. TDD is meh for the most part of the really memorable challenges.
I debug because I'm smart, and I enjoy it, and I frequently find bugs that I didn't know existed by seeing inside a frame as it's executing. Debugging is a crucial skill in many fields, particularly embedded work (which is the irony in your comment), and the insight from breakpoints and a couple afternoons of digging is unique among our tools. I hate sweeping generalizations of how programming should be done, regardless of what they are.
Watch this sweeping generalization:
If you don't love debugging, I don't think you're a seasoned or valuable programmer.
If you don't love debugging, I don't think you're a seasoned or valuable programmer.
I call bullexcrement.
I've been coding since before a good portion of the people on this board were sparkles in their parents' eyes. Debugging is a huge time-waster and value-sucker.
Now, if you would say "If you're not good at debugging...", I'd agree with that. But saying one isn't a seasoned or valuable programmer if they don't love debugging just shows a level of immaturity.
I've learned that one must ensure one doesn't confuse love of the results given by a thing or action with the love of the thing or action which gets you those results. You're a seasoned debugger if you can successfully debug a complex system, but you're a wise developer if you can do the things which ensure you don't have to do so.
I can't imagine a scenario, throughout history or today, in which debugging would be unnecessary. It's wisdom to realize that, and more wisdom to realize that "debugging" is a nebulous term here that people are nailing down in different ways.
Test-driven development will never replace debugging, and saying otherwise implies a misunderstanding of one of them.
That's quite a generalization. Debugging does not necessarily mean debugging your own code: you might have stumbled upon a compiler bug, or a timing bug with your hardware, or you may be trying to buffer overflow some massive proprietary database so you can take over the world. All of those tasks will involve lots of time looking at memory addresses and hex dumps, but none of them mean the person doing it is a bad programmer.
Why you need to look at them manually? Computer will compare all that much faster.
If you are good programmer and bug is non-trivial, you will create code to catch bug much faster than you will catch it manually. Moreover, you will be rewarded next time, because your code will be already written and ready to use.
Let's call it "exploratory programming" instead of debugging. Yes, your computer will run unit tests. No, your computer will not notice that memory is being corrupted because of a particular sequence of instructions emitted by the compiler. To solve a problem, you have to understand it. And if you're writing code to solve a problem that's well-understood, you should have just downloaded the library instead.
Did you ever saw how program crashes when run, but works fine in debugger (or vice versa)? What you will do in such case? What you will do after few such cases?
It dramatically improves your cycle time to debug this kind of issue interactively instead of repeatedly stopping the process, coding up a hypothesis as a test case, running the tests, and then dealing with the positive results and the false positive results.
The binary drivers or the nouveau ones? I've always used the binary ones, and Nvidia's driver quality has been why I've only bought Nvidia cards for many years. It has only been this release that caused me problems, and even then I finally solved them by downgrading the Nvidia driver version.
I tried gtkperf to see what figures I get. I did note that the results depend on the size of the window quite a bit.
On my workstation with an 8800GT I got 3.46 seconds at default window size and 4.08 at 1920x1200 (using mutter window manager). On my 5 year old laptop with Intel 965 graphics I got 7.30 seconds (using metacity).
I switched to Chrome years ago and its tab switching is fine.
True story. I have about 300 people in my circles mostly engineers and the interaction is great. I'm talking about people involved in FOSS (system programmers, embedded developers, devops mostly).
I have no idea who R. Scoble is and just by peaking at his profile I have to say that I have no interest in following him. This is probably why most people that use Twitter don't fit in the G+ space. As far as I'm concerned most technical Twitter users are Web developers, the SEO (crap) crowd, designers, social media whores, guys posting about hipster bands. Not to generalize but that's how I see it and the reason Twitter is a ghost town for me, Facebook is useless and G+ is awesome. To each his own.
There's plenty of technical people active on Twitter, but they don't tweet to start a conversation, because Twiiter was never actually menat for that. It's a one-to-many broadcast channel, there are producers and there are consumers. G+ on the other hand is more of an equal playing field, it's being positioned as an interaction platform, so it's better fit for discussions and what not.
Funny how most git users out there (at least according to the git user's survery 2011 [1]) use Linux, yet github seems to go out of its way not to build a tool for its majority of users. I would also go as far as to extrapolate and state that most github users are Linux users (which is true for every programmer I know on github).
Would it have been that hard to just use Qt and build a cross platform tool? Or is that not hipster-friendly enough?
I guess it's cool to profit, not that cool to give back. I wouldn't use their tool anyway but I think they're assholes on this one.
Instead of building for the existing community, they are trying to expand the toolset to "seduce" other communities. Both are perfectly worthy goals. Just different.
The tool for Linux users already exists: it's git itself. Demand for a desktop GUI in the Linux world is almost zero for basically everything, but especially so for a tool like git with no external dependency.
They probably also have better internships (paying aside). I've been 4 times in GSoC and what I can tell you is that as far as I'm concerned this is the most interesting thing I can do over the summer.
An internship here involves at best, some random module in some offshore product, at worst a "hello world" type project in $insert_whatever_technology_the_company_happens_to_use.
I love hacking on FLOSS and I'm not that interested in how much I'm payed (as long as it's decent), but there's no way I could find a job where I could work on FLOSS on a 400miles radius. I guess this explains why so many eastern europeans and indians.
I might be wrong but my feeling is that here in the EU there are few to none hacker-friendly jobs.
Because debugging is fun. There, I said it. I love debugging. I think lots of clever people like debugging.
I've been doing embedded development for quite some time, so you know, flipping bits like a boss, a shitload of open terminals, lots of cables everywhere all the stuff that makes you look like you know what you're doing but debugging is not fun, it never was, it's a huge waste of my time.
You know what's fun? Having a product that works.
Debugging is code monkey job, you don't do it because you're smart, you're doing it because you were foolish.
To love debugging is to not love to code.