We're talking about two totally different programming paradigms here. The end product might be the same but it's more of a question about how you arrive there.
With JQuery you're signing up for manual DOM manipulation. It's a challenge to scale that for what's now considered table-stakes for web apps.
It's totally separate from the topic of efficiency gains or code reviews, but the idea of 100% pairing would take most of the enjoyment out of programming for me. Working in isolation (for the most part) to solve a hard problem and drive it to completion is incredibly satisfying. A lot of that goes away when you're working side by side.
You're never in "the zone" if you're pair programming.
I've been pair programming off and on since the beginning of the century. You can get in the zone with a pair (if you're doing it right), but less often. I get a huge charge out of the highfive at the end of a task. And often I'm learning something new or was made to think about something from a different perspective. That could be the whole point of life itself. It's enormously satisfying.
But pair programming evens out the peaks (programming in the zone) and valleys (spinning your wheels) though so you have something close to a sustainable pace. The productivity and life of the entire team is much more important than the productivity of an individual on the team. Sometimes I spend an entire day helping someone else accomplish something instead of what I want to do. Sometimes it's the reverse. People come and go. The mission is larger and longer.
> The most rewarding part of pairing for me is probably the learning/teaching dynamic.
That can also happen during code review. Granted, it's asynchronous, but that might be seen as a boon by some -- especially if there's a language barrier.
You have to do code review right, i.e. a) no judgement of the person, b) no friggin' code review in-person meetings(!), and c) must be automated via some system (e.g. Gerrit), and d) the reviewer must also be willing to yield on non-critical issues (such as minor formatting, naming, etc.). Ultimately you also need a team technical lead to make the call in case of unresolvable disputes. (If the lead's code is being reviewed then it behooves them to reason convincingly for their own position, concede when shown wrong and try to remain as impartial as possible. IME as a team lead, admitting when you're wrong is an incredible way to build trust.)
Yeah, me too. I've done effective pair programming but my most enjoyable programming experiences are when I'm isolated (ideally at home) and focusing solely on the problem. Being in a pair prevents me from getting getting into that flow state.
Having said that, pairing is great for solving production problems. I remember one time right in the middle of a critical revenue period when we were having severe performance issues that appeared to be tied to our caching layer. This had been going on for about a week, with individual team members working on it, and we hadn't figured it out. Finally, it was the day of the company holiday party, but a handful of us were so uncomfortable with the state of the system that we coudln't enjoy the party, so we grabbed some beers and headed back to the office. In the space of 3-4 hours working (loudly) together in the empty office we'd hacked together a fix that got the system back on its feet until we could figure out the real solution. Someone would have got there individually, but the amount of work that little group got done in such a short period of time is one of my favourite programming memories.
As a team we all still believed that we could accomplish big things together. On top of that, we didn't want to let each other down.
Like Brian pointed out, the culture was established at the beginning. Folks were recruited on how well they would gel and adopt a core set of values in addition to pure talent.
something that can't be understated is the strength of the founding and core team, which attracted a world-class engineering team etc. smart, driven people want to work with people they respect and there were (and still are) a lot of ballers on that team.
ADHD is often resolved paradoxically with stimulants. For me, caffeine is a natural alternative to ADHD medication. A small amount of coffee, twice a day, allows me to focus intensely.
Folks with ADHD aside...optimizing caffeine intake seems to be the key to avoiding the nasty side-effects.
I don't think anyone can give you a clear answer, given that the effects of coffee depend on complex mix of factors, like caffeine metabolism, metabolism in general, brain chemistry, and so on. However, it is known that stimulants generally shorten the attention span, so a good guess would be that you indeed are in or close to the "normal" zone.
Perhaps. Although even the experts don't fully understand ADHD.
Most people don't know where they fall on the ADHD spectrum. Maybe that's one of the reasons why there's such a mixed opinion on whether caffeine is good or bad when it comes to focusing.
"Draper wrote EasyWriter, the first word processor for the Apple II, in 1979. According to The Wall Street Journal, he hand-wrote the code while serving nights in the Alameda County Jail, then entered the code later into a computer."
Still amazing, but the paragraph right after that gives more detail.
"Draper's personal website furnishes a more detailed version[1] of the coding of EasyWriter. Draper was in prison, in California, at the time, but under a 'work furlough' program. This meant that while he had to spend every night in prison, he spent each day working a regular job outside prison. This job was at Receiving Studios, a small band practice studio, and while there he had access to a computer, where he coded EasyWriter. He did take copies of the code 'home' to prison overnight to work on it."
With JQuery you're signing up for manual DOM manipulation. It's a challenge to scale that for what's now considered table-stakes for web apps.