2009
- 20090824 iPhone
- 20091030 Reddit post on programmers and (vs?) management
- 20091101 Intentions
- 20091102 Happy 40th Birthday, Internet!
iPhone
I've had the new iPhone 3gs for a month. It's brilliant. For the last year I've had an iPod touch and use it as a PDA. Until last year I'd been using a succession of Palms, starting with the Palm Proffesional in 1997.
I've waited to get an iPhone because most of the plans don't suit my needs-- I want mobile Internet; phone and text aren't really that relevant. 3 came out with a scheme that lets me keep my existing 18 plan, pay $25 a month over two years for the iPhone and gives me 1gb a month of data-- more than plenty!
I'm loving it. Google reader on the bus, Google maps in the car, Wikipedia wherever I am. Twitter, for idle moments.
I work part time (parenting the other part) so I even check my email and deal with queries in idle moments at home via the wifi-- much less distracting from my day plan than sitting down at the computer for a couple of minutes.
I was worried about the keyboard but it works out to be really good, much quicker and more accurate than graffiti was for me, and I was good with graffiti. I'm not really accurate while typing, but the auto correction takes care of it.
Date created: 2009-08-24
Reddit post on programmers and (vs?) management
"Why do the best developers always seem to get dragged into project management? What do you do to avoid it?"
http://www.reddit.com/comments/9z0uq/whydothebestdevelopersalwaysseemtoget/
Some good stuff:
Because the best developers have several things going against them:
- They try to have a "whole picture" view of a project
- They accept responsibility
- They actually care if a project succeeds or not
The alternative is having "Project Managers" doing project management. Choose your poison.
It's really all about growing your procedural mental models of these projects, and it happens in more than just programming.
You start programming simple programs, then you start programming more complex programs. Now, you're valuable as a programmer not because of your technical skills, but your ability to conceptualize a complex program (and then make it happen technically)...
Imagine you had 3 employees, all 3 of them were coders, but one of them clearly has been coding long enough to see the pitfalls in the future, conceptualize the overarching system, and build it intelligently. You want him to focus on his unique skill, so he becomes the designer and the two technical dudes are his grunts.
Fast forward...
Same thing happens again, you have a lot of technical coders and designers, but one has been working long enough to know how to deal with clients, understand time frames intimately, and also work with / advise technical coders AND designers. Sorry to say, you're the perfect piece of glue to hold the shit together!
The thing here, is that 5 talented people (whatever fields?) can probably best 50 muggles; process is better, project design is better, implementation is better, overall fit and finish is better, and very little is lost to communication/documentation/rememberhing what is going on. And I want to think that it's much less a function of the talent, and more a function of small size and focus =>shared vision, which lifts everybody up.As Alan Kay says,"Point of view is worth 80 points of IQ". The 50 will get bogged down; at least 10 will be projet managers, generating useless reports, to pass on to 3 full time managers, etc. Cue the parable of the two programmers [Link updated]
And both cases are because the people wanting the work done, with power, are too lazy to take the time to understand what's going on-- blind leading the blind.
The very first thing you need to do is let go of the misconception that the people who like what you like are smart, and those who like different things are stupid.
Yes and no. When what I like is thinking about complex problems and what they like is chatting about shopping, well...
The management skill seems to be finding the right fit between person and job, and getting it all to gel.
The examples are generally about larger shops with programming teams; so Project Management could be important-- as long as it is about keeping it all together so each of the individuals doesn't have to.
One of the problems is that a lot of those "management tasks" are, for a technologist, fairly repetitive and not scalable. Coordination, tracking, reporting, inter-team communication, personnel management ("soft" people skills), and so on are huge time sinks. They obviously play a huge role in determining the success or failure of a project, but they're not things that most superstar technologists hold in high regard. So, there is inevitable tension between the technology side of the house and the management side.
I'd add also, the measureable value isn't there-- reporting to whom? people who's opinion is informed? Unlikely.
Not to bring you down more, but my experience is that when managers become overwhelmed by these things (particularly tracking), they distribute the load to the team, because that lessens the load on them. Or so they think. What ends up happening then is that the team gets annoyed that they're spending time doing things that aren't "core" to their jobs. So they bitch and moan about it. Which means more face to face time with them, to explain or cajole or demand or fake commiseration. All of which is yet more time you don't have to do the other things. And thus begins the death spiral...
I also think that some management types have the mistaken notion that promoting a developer or programmer to management is the ideal method of recognizing that person for a job well done without realizing that a lot of us simply don't want to be in charge, we just want to be in charge of our work
Re reducing truck number by having key person supervise/coach -- problem with key person is that people will go to them if they're there,
In order to overcome the issue, people need to feel reponsibility/ownership for the system; it's easier to say, it's broken, i can't fix it, no-one could; than to own it and learn it.
What happens when the key person leaves-- in the absense of that committment the system falls apart, gets badly patched, and eventually replaced; often by externals, costing big $, and never living up to what it did before. Things Fall Apart. It's like Jane Jacobs' Dark Age Ahead -- if you don't put energy into maintaining good institutions, you'll lose them-- and eventually forget they were ever there. And each system is an anchor point in the flux; chaining them puts stresses on the other anchors-- it's all moving. There isn't any going back.
technical manager can give more leverage; spend more time mentoring, setting standards, doing architecture etc
I see this about 50/50 in my job. The BEST programmers I've seen have the ability to garner the wages and respect to stay programmers. Some programmers just get sick of trying to keep up with the newest/best coding practices and would rather manage or at the very least see this as a "step up". (I actually hope to move to management, but technical manager more than project manager)
What I find more often than not is the people managing have no idea how to program or what it takes. These are the people in my realm of business who whiteboard out an idea for a website and draw a circle, labeling it "backend." They have no idea that the slidey transitions in their shiney frontend designs take 5 minutes, and that "backend" little circle will take 6 months
The key to cracking this nut is debunking the perception that becoming a manager is a promotion. This is because the decision makers fear the perception that they are promoting incompetence. We have inherited our conception of management from the era of industrialization, where management positions, which conferred respect (and higher wages), were used as a tool to reward obedience and productivity. Replacing a promoted employee was easy, due to the low skill level required to perform most jobs, thus there was very little cost to promoting your best employees. Thus, explain to your boss that you would rather your less skilled, but still competent peers are placed in management positions.
In the past, organizations were essentially triangles, needing to scale up if they wanted to scale out. That structure no longer exists. Organizations are now a circle of clusters (teams) and, in order to expand out they need links (managers) that introduce the least impedance between the clusters. Low skill technical workers with good communication and organization skills are perfect for this organization. We just need executives and higher up managers to see themselves and the center of a circle instead of the top of a triangle.
Makes sense, But really annoying too, because it brings up issues around my own work which just make me mad;
- project managers who contribute nothing, other than typing up the contributions, and yet feeling like they should have some control
- notion of "coders" which is a stupid notion. Programming encompasses understanding the problem in context, defining the problem and its relationships, delineating the computer and the human practice parts of the workflow, designing a new set of behaviours (person/machine), and then implementing them (coding) Sometimes even seeing the opportunity for improvement (though you'd want managers to do that, cause it's goal setting)
- if managers need lots of management from below, they're really just in the way
I find the anti-management comments here quite immature. Listen, at some point in your career you will want to climb higher. That is, if you're half clued and see the end game. Do you want to be a FTE as a 65 year old? Not saying this is a bad thing, but assuming you have a choice, wouldn't you rather climb to a higher level of responsibility and ultimately compensation? It's easy to stay in our comfort areas and not expand into things that are challenging.
Challenging? Theres 0 evidence that managers actually do anything; parasitical paper pushers; people under them do the challenging work of translating vague motherhood KPIs into something that makes sense in the org. They just avoid blame and grab credit. Pointless.
ask yourself this: Do you really want to be a 40 year old coder? How about a 50 year old coder?"
Change coder into programmer, and yes. Of course. Rather than being a useless parasite, definitely.
Perhaps what's challenging (in all fairness) is to be a manager, and have no real handle on the effect you're having-- good or bad. Sort of existentially challenging-- to keep trying to do good things, which suceeed or fail based on what are essentially random factors. Trading effectiveness for influence; because individual effectiveness is limited, but influence could be big-- or you could just be imagining it all.
I really think much of the difference is simply a class thing; managers are middle class, workers are lower class. Authority/obedience, status, money-- it's just an empty game of class one-upmanship. This is one of the most disruptive influences of the internet -- see clue train manifesto-- small teams have great power, great effectiveness, and have no need for managers, or hierarchy.
Managers are all about allocation of resources. We live in a world where for much of the work I do, lots of resources are not necessary.
Date created: 2009-10-30
Intentions
This is just a placeholder entry while I work on creating a blog system for myself. Why not use an existing one? Where's the fun in that?
Ellie's old page still exists; but it's just for the old movies, which will get put onto flickr at some point.
When ellie was 1, I was her primary caretaker for a year. I did a Daddy blog about the experience.
created: 2011-03-14 4:00pm
Date created: 2009-11-01
Happy 40th Birthday, Internet!
Happy 40th Birthday, Internet!
Annoyed by this piece.
There's something about articles that are half true that annoy me more than those that are completely wrong-headed.
Yes; the most important thing about new technology is the changes in practices that they engender. My favourite writing about this is Douglas Engelbart. In Augmenting Human Intellect: a conceptual framework he situates the knowledge worker in the midst of language/tools/technology -- and they evolve together. Engelbart was particularly interested in the deliberate evolution of these forms, and his early bootstrapping work was just this; a deliberate attempt to change technology and practice at the same time; dialecticaly. The only way to discover the road is to walk it.
So yes, bleeding obvious.
Crap technology, on the other hand, is that that doesn't change practice, that has no effect on the organisation. There's a lot of this-- it's easy to implement and poses no challenges. Often, it outsources work that was once done by one department (say HR or Finance), to those they are supposed to serve, freeing them for cocktails, or whatever they're supposed to be doing.
20th century paradigm -- false; perhaps 12th century chain of being is more apt?
Metaphor for modernism is the idealised notion of science; perfectability through rational investigation and collaboration. This is what the internet came out of-- in a very real sense. TBL developed the web in order to share results with a wider group of people, more quickly. Greater access to information leads to better analysis of that information.
The early history of computers was indeed disruptive -- but in a small way, because they weren't widespread by definition.
- Community computing in the 70s
- Bulletin boards for interest groups
- In business, the spreadsheet enabled managers to get informationa and analyse it without being dependent on the power bases within the organisation. I wasn't there, but I bet it was disruptive.
The issue there is that the early adopters learned how to use the tools-- the early state meant they had to, and they were early adopters because they were interested. So computing then meant the ability to manipulate data in whatever way they wanted.
This has changed; because of the tendency to inertia, because power bases don't like to give up power, what passes for computing is using the computer in a very limited sense-- ie as a particular machine; an email machine, a word processing machine, an internet browsing machine.
Each of these uses is an application of the general purpose computer -- that is the machine that can be programmed. Computer literacy is programming-- anything else is just office work.
Computing has been debased over time-- but that doesn't prevent people learning how to use the machines flexibly, it just obscures this possibility.
The new web stuff is just another attempt at proper computing-- using web services to mash up data in ways; using massive input from many people to provide that data.
Writing
In fact, the term 'hardwiring' that became a dominant late twentieth-century metaphor for the human brain comes from the permanent and unchangeable electrical circuitry within an early computer that dictates its capabilities.
helps to obscure what's really going on. The central insight of computation is that it's possible to have a definite system (hardwired), that can become any thing you want it to. Ie; programming is possible. In the early days, programs themselves where wired onto cards; and the computer was the system that could take these cards; the context for the programs.
This is important. The computer is exactly that machine that can become any machine; that is what computing is.