Calling All Hackers
braythwayt.com
braythwayt.com
Besides Backbone.js, Underscore.js, Jammit & Docsplit, DocumentCloud also has several Open Source products (such as the documentcloud platform, and our document viewer, which is even used by the FBI). These projects serve a civic mission through making journalism more open and more efficient.
We see relatively little traffic on our product repos vs our FOSS tooling repos, which makes me a little sad.
https://github.com/documentcloud/
If you're interested in making the world a better place, come find us.
N.B. I'm not saying we are doing it right, but if we're not it's not because people hate/love TDD
Even in the stultifyingly stodgy confines of the DoD we don't believe that there is one and only one optimal way of doing things.
Or to put it another way, unlike the vast majority of Americans I hate and despise mashed potatoes. I can't eat them without gagging. But I don't take this as evidence that I'm wrong and mashed-potato-eaters are right, or that they are wrong and I'm right. I take it as nothing more than that different people like different things.
Instead of finding The One True Methodology, why don't we instead explore how to identify the best methodology for a given developer and a given team?
I think it's evidence that we don't understand it. Compare this to medicine. I think we're Witch Doctors. I don't think that the problem here is sorting out when to use leeches and when to submerge the patient in water,.
I think we need to understand actual physiology and medicine. That leads to understanding blood clotting and the role of bacteria. Which may lead us back to leeches in some cases, and may get us to wash our hands and wash the patients. But it will also lead us to entirely new ways of treating patients and the wholesale rejection of many of the old ways.
So I agree that neither TDD nor Pair Programming are OneTrueMethodologies.
But I accept that if you think we're further along, you'll make that point.
I wouldn't say software development is "ahead" of medicine, though, the two fields are simply not at all comparable. I have yet to hear an analogy between software and another field (architectural engineering comes up a lot and that one is also pretty stupid) that actually makes any sense.
Solving that is important in its own right though, not because people do or do not like them.
I don't like doing push-ups, even though I understand at a basic level how they improve my upper body strength. I'm pretty sure that even if we should someday understand why TDD works (or doesn't) that there will still be good software developers that don't (or do) like it.
So wrt pushups, it's as if millions of people were saying, "pushups don't work" and millions of others were saying, "pushups made me strong."
I think if we solve the problem of understanding why these things sometimes work, we will discover some deeper, more important thing. Maybe pair programming isn't about pairing at all, maybe it's really that we suck so bad at code review, and "soling" pair programming will actually make it obsolete.
I don't know, but as they say, "The best way to predict the future is to invent it."
Is it? I tend to think of writing software as something like writing literature. Or composing music, perhaps. I don't see people up in arms saying, "Our understanding of writing is broken because some people like to write structured outlines before they write, whereas others just start free-writing and come back to edit." We don't say, "Our understanding of music composition is broken because some songwriters write the lyrics first but others write the melody first." Why is it so important to understand why different programmers employ different techniques?
So is programming about pleasure? About delivering business value? Are we artists, engineers, factory workers, craftsmen? How much weight do we give to the programmer's preferences, versus practices that seem to produce better results on average?
But those are not the important questions. The problem is that we can't even begin to answer those questions, because we don't know what is effective "on average", or how to measure those results.
My parents used to be proponents of that idea as well, until they encountered me.
They did at least get a cool story out of it which they relate everything Thanksgiving, about the time 10-year-old me grew a pair and simply tossed the mashed potatoes in the trash instead of sitting at the table for 2 hours.
There is no right. There is only works for us and doesn't work for us, and different people may have better success with different methods.
We understand pair painting. We understand pair music composition. We understand pair writing. We understand pair knitting. But we don't understand pair programming?
There is a time to pair up, and there is a time to isolate oneself and think and meditate and explore the problem space and be creative. Beware of those who espouse a one-size-fits-all solution.
EDIT: Even the rally driving example doesn't make sense. In rally driving, there is a driver and there is a navigator. The roles are different and very clearly defined from one another. This is nothing like pair-programming, where the distinction in roles between the person at the keyboard and the person watching is much looser and the two people are expected to take turns at the helm.
That's what I took from it, anyway.
What drives me in working in UX is just my own confusion and frustration with the way things are. Something does not need to be complicated to do complex things. I should not feel stupid looking at immense lines of code when I know that there are better ways to accomplish the same goal (in the same, if not shorter amount of time). Something that doesn't make sense right away probably has a problem, even though the person next to me may have the experience or luck to not have the same issue. If that disadvantage can be avoided, it should be.
Naturally, I've had a lot of ideas on how to make things better, but I can't wrap my head around building those things and I would rather find someone else equally as passionate about the issue to work with than just anyone off the street.
I think why people get so uppity by the "everyone should program/build/create/do" idea is because they are concerned about their job security. They believe that educating the masses is going to lead to oversaturation. Some are concerned because they are doers, not thinkers, and thinkers with these tools would threaten their ability to get by on the bare minimum. It's limiting them more than they think.
In reality, like any knowledge discipline, it can only create better tools, which create more/new jobs and thus create a better future.
Seriously?
Doing good, but misrepresenting the 'big issues' is not helpful. Too often good intentions substitute for good work.
One should care about the race or gender of someone, the goal should be to attract the most talent. Also, saying 'everyone can learn' may give a warm fuzzy feeling and make people think you are a good person, but it is most likely not true.
Pushing a round peg into a square hole is destructive both for the peg and the hole.
The contention is that hacking a way around, under, or through those barriers is a good thing for everyone, but it makes no suggestion that every woman, or every poor person, or everyone who doesn't grok pointers should somehow be a programmer.
Maybe they actually would prefer to paint.
Coursera.org, Khanacademy, MIT open courseware and Stanford free online courses are helping to eliminate the financial hurdles of getting a computer science education. Last time I checked there were millions of lectures and courses/bootcamps uploaded to youtube to just teach programming and algorithms as well. Anybody can program if they want to now, though they could before anyways just by reading K&R and using free software.
One can argue that English is the new Latin, a language that anyone with a minimum of education is supposed to know, but to go on a tangent and into a completely unrelated field, I wonder if geniuses like Messi and Ronaldo would have reached the top of their profession if they had to have a working knowledge of English even before they could join their first soccer match.
Begging the question (Latin petitio principii, "assuming the initial point") is a type of informal fallacy in which an implicit premise would directly entail the conclusion
Moreover, in the poisoned atmosphere that surrounds this question, it seems "dangerous" to even raise the notion that the premise deserves a good challenge.
It seems all too often that pointing out the assumptions, the bad measurements, the poisoned atmosphere, or heavens, a disagreement over the validity of the premise or the reasonableness or fairness of the conclusion leads to name calling and bullying.
https://www.youtube.com/watch?v=WINDtlPXmmE
I want you to get mad!
And I love how this movie naively predicts the madness in concentrated power. Naively because attractors such as powers will always be existing generators of fractions of people going into similar directions generating new ideas and innovation replacing control with choice.
I'm completely on board since a year and a half ago. This [1] is what I have so far. More to come.
I'm starting to group this word with catastrophes such as 'rockstar' and 'ninja' now.
Hackers are not necessarily smarter or more gifted than other programmers in any sense. Hackers might be disorganized or lazy or write clever code for its own sake.
So I hope nobody thinks it is synonymous with ninja or rock star.
When one decides to go in a wild new direction, the other has to follow or pull in the other direction. When one makes a mistake, the other has to correct it.
When it starts to flow, it's a form of intimacy that can be extremely gratifying as it begins to feel like 1 or 2 additional programmers are in the room. You learn each others strengths and weaknesses, and the combined power of 2 minds can do things that the individuals were incapable of doing.
I understand pair programming. I've done it, the hard part is finding a compatible human to whom you can experience it with. When it really flows and you feel the additional ghost programmers helping out, it's like sex. A cosmic melding of two minds. When you are apart, it's like 75% of you is missing, and that is kind of sad.