February 19, 2008
while i.am.not.tired
do
work(primary)
end
if (isBurnOut)
.refresh()
.cycle
04:38 PMwhile i.am.not.tired
do
work(primary)
end
if (isBurnOut)
.refresh()
.cycle
04:38 PMMy Goals for this week
A) Identify why you lost your mojo
B) Get your mojo back
Progress on A)
1. Someone at work is undermining, annoying, negative, and has got hooks in you when they shouldn't be allowed to. They point out all the problems that you are already aware of, have prioritized, have thought about and worried about and sweated over late into the dark hours, and complain about lack of progress without taking ownership and really closing anything down. Disease.
2. Just like when your parents told you that the Gameboy was ok if you paid for it yourself and you made As and Bs in the sixth grade (looking back, good hard line 'rents) you started making your first Cs for some reason and it took you 12 weeks to get the stupid thing just so that you could play Double Dragon until the right 20% of the screen starting shows these weird lines so you couldn't see the bad guys coming - you are choked at the thought of *having* to work, being the sole provider and unable to change jobs because this one is, after all, pretty sweet.
3. You have to work this weekend - your anniversary and when you were supposed to see your family. Also, you were going to exercise to keep it up after the greatest athletic weekend of your life last week and the rising feeling of losing weight easily and better sleep is slowly dying.
4. You were right to force a decision on yourself after the family got started, but fear that you lost something important when you chose what you chose and feel typecast and unable to grow in your position. Still basically undecided on this, but so far it feels like an alley and not a freeway. Teaching others does help you learn, but not the same stuff over and over - you need growth and you need to feel stretched.
5. Lack of overall progress feeling suffocating - like all you have time to do is make plans and prioritize important work that you aren't doing and that your team isn't doing either.
B)
- Read ftrain.com for one hour *at work*, (checking on critical things and fixing them of course - that is what the second monitor is for after all)
- Prepare some sort of list of action items that makes me feel better about this weekend
- Clean up "the list" or at least count it and see what is up
- Suck it up you piece of shit
A brief explanation on why I think that asking people if they read technical books is a good interview question; prompted by a recent candidate calling the idea 'stupid' and a 'big waste of time' then days later a bunch of my coworkers seeing my study and noticing how many technical books I own.
1. First, as a direct retort to points made by the candidate a) yes - there is a class of technical books that basically any competent Microsoft software developer with some writing skills could crank out, and they are useless b) yes - there is a good deal of API-level documentation built into Studio and many solutions to issues are available on newsgroups and via web searches c) but no these are not the only books out there and there are levels of thinking and classes of problems that cannot be designed by hitting F1 and cannot be solved by doing a search with the error message that you get back from the compiler, kernel, or api.
2. Nobody knows everything. Those that think that they do are wrong, plain and simple. In the software development field - a new crisp field which is wild and broad and in some areas untamed - things change and new ideas show up all the time. The one constant difference of this field with others is that since it is new people tend to think that they should only read new books and that they should learn new technologies only.
The basic education that you get from a C.S. degree and 3 years experience does *not* normally get your feet wet with some of the *root-level concepts* that are important to your ability to do well. These concepts have been around since potentially the 60s and are core to this field and your ability to do excellent technical work. These concepts are available via some light reading and lots of on-the-job experience that is enhanced by this theory.
At the same time, things are changing. The new version of C# should probably be learned, and the new version of SQL Server as well if you are one of the idiots that make your living hacking Windows during the day (myself included). There are also new ways of thinking and new manners of technology in practice that come up everyday, and you should get with those as well. All good stuff and not useless.
Also, my vote is NO HIRE.
People from work are coming over, a HOWTO brought to you by the most tormented part of my mind.
First, let's list our goals as we think through the fact that our current boss, our potential future boss, and many people that I work with day-to-day are coming over to my house and will witness this mess that is my life when I get busy.
Impressions that I plan to give these coworkers:
1. I am a genius, my potential only barely tapped - I have books about shit that they have never heard of that are insanely complicated and must enhance my abilities at work being as pedestrian as work must seem to such a great mind.
2. I have a complete home office that must have been built from the ground up for working long house for our shared employer. I am dedicated, a workhorse with a bottomless reserve of energy and initiative.
3. The home office also appears to be used for other, non-shared-employer work. I am valuable on the market - a hot commodity recognized by all those that have work with me. I am a consultant for hire with many more small experiences bringing ideas to life that make my opinion at work seem much more wise that the 3 previous employers listed on my resume.
4. I am pleasant outside of work and you want me to be your friend. The bond from this party will never be broken by petty office politics.
5. I have a rich home-life, my wife is lovely and awe-inspiring and I should never have to work late ever again.
05:23 AM * Work on an outside project for two - three weeks.
* Only work on it outside of normal business when your wife is asleep, thus averaging 4 hours of sleep a night even on the weekend for three weeks.
* Stay up on the last night of the project until 2, go to bed at 3, and then wake up at six.
* Go into the bathroom, sit down, and place your palms into your cheekbones. Wake up with a start 20 minutes later when someone flushes.
* Cleanup and walk back out.
* If you are asked where you were, provide one of these lovely responses:
o Hazmat research
o Taking a walk (add a limp for realism)
o Processing a burrito genius, want the details?
o Dreaming of you.
* When you get back to your desk promise yourself not to work this schedule again.
A message to all the people who think that I am a jerk
My walk from my cubicle to my car is very special to me - I put on my suit jacket and walk quickly around the cubicle wall, down the hallway and down one flight of stairs, then for a long distance through the large atrium in sight of the cafeteria, then outside all the way across the length of the building to the parking deck, then down five flights of stairs and across the deck to my floor, where I will walk the length of the deck to my car at the far end of the floor - as far from my cubicle as I can park. This walk is sacred and silent and beautiful. I will not ruin it with a simple "hello" to you, no offense.
03:30 AMThe difference between the arts and the sciences is that while they
both solve problems, science solves a variety of problems while the
arts solve one: how to get the art prof laided.
I have been trying to take compliments more than brush them off as I tend to do in a falsely modest sort of way. Just in case I need some practice, here are some things that coworkers have said about me leaving:
- If I were to start another company you are 1 of the 4 that work here that I would want to start it with.
- I am so happy for him; he was too talented to stay here.
- First-rate
- Always kept me laughing
- Edge-of-your-seat nail-biting-thrill-ride-of-fun
- Made me want to marry him all over again
- Great taste AND less filling!
09:35 PMHow much work have I done?
I just ran a report on all the code changes made by me (on my main project only) since I got here and it took 27 minutes to run. When I told it to show details it generated a 1757 page report, detailing about 99,000 lines of code.
How much progress have I made?
None.
08:41 PMIn software, paradoxical as it sounds, good craftsmanship means working fast. If you work slowly and meticulously, you merely end up with a very fine implementation of your initial, mistaken idea. Working slowly and meticulously is premature optimization. Better to get a prototype done fast, and see what new ideas it gives you.
09:03 PMI could read this guy's stuff all day:
03:05 PMIn a similar experiment, Dweck gave a class of preadolescent students a test filled with challenging problems. After they were finished, one group was praised for its effort and another group was praised for its intelligence. Those praised for their intelligence were reluctant to tackle difficult tasks, and their performance on subsequent tests soon began to suffer. Then Dweck asked the children to write a letter to students at another school, describing their experience in the study. She discovered something remarkable: forty per cent of those students who were praised for their intelligence lied about how they had scored on the test, adjusting their grade upward. They weren't naturally deceptive people, and they weren't any less intelligent or self-confident than anyone else. They simply did what people do when they are immersed in an environment that celebrates them solely for their innate "talent." They begin to define themselves by that description, and when times get tough and that self-image is threatened they have difficulty with the consequences. They will not take the remedial course. They will not stand up to investors and the public and admit that they were wrong. They'd sooner lie.
I don't write, and I am in no way a writer, but from my experience there are two kinds. The young ones are constantly looking for something new to write about and pick a word off of an ad in a magazine and try to start or end a story with it as a challenge. The other kind simply starts writing something when they feel it - how does Borges say it? - always write the truth. This second kind is therefore made up of people who have lived, and people who haven't but are perceptive enough to make up for it.
09:43 PMA spider just crawled down the wall behind my monitor and scared the crap out of me, only because it brought me back into the physical quickly and unexpectedly.
02:39 PMOne of the new (as in the last twenty years) practices in software development is the use of 'continuous integration'. The idea is that you basically integrate your application in frequent builds that build all source modules, build the installer, and install and deploy the application to a test site that then runs smoke tests with each new little release. The testing strategies have also advanced to the point that I think the average software developer knows that writing test cases is a good idea before the code or during the code. I have understood these ideas in principle before, but recently while working on a large system that went through very little step integration and almost no testing I have come to understand it practically.
The basic advantage as I see it is you kill risk. When you build large parts of the system and integrate them at the end, there is a risk that there are huge misconceptions about semantics over the interfaces or responsibilities, etc. This advantage is obvious. Another more subtle advantage is that you learn from your mistakes if you build, test, and run your application as you are still building it. There are numerous bugs in this large system that are repeated over and over across modules and across subsystems that would have been caught had the very first week's work been run through a good test suite and integrated with the rest of the overall application. This extra scaffolding would have taken a couple of weeks to build at the least, but would have saved the last eight months of defect fixes - Period.
02:42 PM"What is the difference between a tenured professor of computer science and an ape?"
The ape doesn't think he can program.
04:42 PMHow do you educate an ignorant customer as to how software projects should be run? How do you explain to them that to estimate a software project before it is fully defined (or even after all of the requirements are nailed down) is theoretically impossible? How do you explain to them that you really haven't done anything like the current project before?
I suppose you start by acting from false experience.
"Look, we have run many projects, and our basic methodology is simple. First, we figure out what we are going to build. Then we provide you with a very loose estimate that will be in the form of a range of time such as 3-6 months. Then we figure out how we are going to build it. Then we revise our estimate. Then we start to build it. During the construction we will keep you informed of our progress by giving you milestone releases. These milestone releases will be feature-incomplete releases of the actual software."
"Changes to the requirements are not impossible, but will affect the schedule, as will other changes. For example, if one of our estimates is too long, we can revise a number of things about the product or staff in order to get it done for a specific schedule. For example, if our second level estimate of 3-6 months is nowhere near your fixed management deadline of 2 months, then we can remove features (change what we are going to build to make it smaller) or add staff (increase the number of people working on the project)."
"As we move forward with the project, these changes become more difficult to make. For example, adding staff very late in the project usually backfires because the original staff must train the new staff, and the new staff is not normally very productive for a while. Overall you end up losing time. Also, if you try to add significant features late in the game, this can affect the overall design of the system and can lead to a longer schedule."
"For this reason, we are going to spend a good deal of time figuring out what the system should be and how we are going to build it to decrease the risk of us running into these sorts of suprises. That said, if you try to minimize the amount of change requests, we will try our best to respond to the ones that you have."
03:17 PMThings that I liked about Computer Science in school:
- It was hard
- It was useful
- It was fun figuring out stuff
Things that I like about my job:
- Free coffee
- It is fun inventing things
- People generally leave me alone
- It is fun learning new things
Steve McConnell has been around:
The irony of this dynamic is that these unsuccessful projects eventually do as much planning and process management as a successful project would. They have to implement defect tracking to manage all the bugs being reported. They begin estimating more carefully as the release date approaches. Toward the end of the project, the project team might re-estimate as often as every week or even every day. They spend time managing expectations of project stakeholders, convincing them that the project will eventually be released. They may begin tracking defects and imposing standards for debugging code before it's integrated with already-debugged code. But because they begin these practices late in the project, the benefits from these practices are leveraged over only a small part of the project.
A second source of code-and-fix development's appeal is that it requires no training. In an industry in which the average level of software engineering training is low, it has been the most common method by default.
Wisdom from a co-worker
On travel:
I took a long time to choose my bed, and even longer to choose who I wanted to sleep next to every night, so I would like to just sleep there every night.
I decided that this solution would be 'using' a business rule instead of 'being' a business rule, so it was too fragile.
11:47 PMOn the advantages of using a web application.
From our issues/questions list:
Will a user of the system be able to access the system from home?
Yes.
Rules for being a good republican
1) You have to believe that the nation's 8-year prosperity prior to W's administration was due to the work of Ronald Reagan and George H. Bush, but that today's growing deficit and rising gas prices are all Clinton's fault.
2) You have to believe that those privileged from birth achieve success all on their own.
3) You have to be against government programs, except Social Security checks on time.
4) You have to believe that government should stay out of people's lives, yet you want government to regulate your personal sexual and reproductive decisions.
5) You have to believe that pollution is OK, so long as it makes a profit.
6) You have to believe in prayer in schools, as long as you don't pray to Allah or Buddha.
7) You have to believe that a woman cannot be trusted with decisions about her own body, but that large multi-national corporations should have no regulation or interference whatsoever.
8) You love Jesus and Jesus loves you and, by the way, Jesus shares your hatred of AIDS victims, homosexuals, and former President Clinton.
9) You have to believe that society is colorblind and growing up black in America doesn't diminish your opportunities, but you still won't vote for Alan Keyes.
10) You have to believe that it was wise to allow Ken Starr to spend $50 million dollars to attack Clinton because no other U.S. presidents have ever been unfaithful to their wives.
11) You have to believe that a waiting period for purchasing a handgun is bad because quick access to a new firearm is an important concern for all Americans.
12) You have to believe it is wise to keep condoms out of schools, because we all know if teenagers don't have condoms they won't have sex.
13) You have to believe that the ACLU is bad because they defend the Constitution, while the NRA is good because they defend the Constitution.
14) You have to believe the AIDS virus is not important enough to deserve federal funding proportionate to the resulting death rate and that the public doesn't need to be educated about it, because if we just ignore it, it will go away.
15) You have to believe that biology teachers are corrupting the morals of 6th graders if they teach them the basics of human sexuality, but the Bible, which is full of sex and violence, is good reading and right on the mark.
16) You have to believe that Chinese communist missiles have killed more Americans than handguns, alcohol, and tobacco.
17) You have to believe that even though governments have supported the arts for 5000 years and that most of the great works of Renaissance art were paid for by governments, our government should shun any such support. After all, the rich can afford to buy their own art and the poor don't need any.
18) You have to believe that the lumber from the last one percent of old growth U.S. forests is well worth the destruction of those forests and the extinction of the several species of plants and animals therein.
19) You have to believe that we should forgive and pray for Newt Gingrich, Henry Hyde, and Bob Livingston for their marital infidelities, but that bastard Clinton should have been impeached.
20) You have to believe that George W. Bush really won the last election.
21) You have to work at my office.
Job Titles
Computer Programmer - given a specification, translates this into a specific 'program' or plan of action for the computer. Makes the computer do an action or series of actions that has already been created.
Software Developer - grows software including the specification of what it should do, creation and testing of it. There is no time for testing and the specification was already not done by somebody else, so a software developer is a programmer with a couple of years of experience.
Consultant - consoles the customer when they run the application for the eighth time and it crashes in their face, ruining any hope of running their business.
Software Architect - thinks up the overall environment and layout of the software. Maximizes the amount of lock-in while at the same time achieving a level of inflexibility that is rare outside of software and 80-year old men.
Software Designer - dreams up elaborate goals for the software and 'user models' of how the software will be used. None of these actually occur since no one is stupid enough to buy such a buggy piece of shit.
Manager - expert Excel user, little experience with actual product development concepts or software development ideas, does not read or listen. Person who is heralded or tarred when things come together or fall apart.
12:51 PMI want to be a stay-at-home worker with you. I would like our office to be a separate wing of our house, with low cubicle walls and a water cooler/coffee maker/espresso machine room off to the side. You could answer the phones for me and help me plan out strategy; we would schedule meetings together through Outlook (inviting our conference room, which would respond if it was not booked). We would have wild office parties and highly competitive 2-on-2 basketball games with other firms. We would worry over the numbers together and try to figure out how to get Excel to do this and that; you would slowly understand what it is I do for a living, and see me in action. You would be able to relax a little more, because your coworker loves you dearly, and you will never get fired.
03:43 PMThe world's most pleasant working environment, if you have to work on a Saturday:
Dear everybody,
I got here at 6am today. I also stayed until 7pm today. When I got home, around 9pm I starting thinking about all the stuff I had to do, so I worked for about an hour. This has been going on for a few weeks, and looks to continue.
The above information has relevance to all of you only because it will explain the fact that today I will not wear shoes while in the office. I will, however, continue to go to the needed meetings and work in a normal, professional manner. I will wear shoes at lunch and in the bathroom. Yes, my left sock has seen better days, and yes, that is my big toe sticking its entire self out, and yes, I have had three highly unsuccessful ingrown-toenail surgeries on it, and yes, you can go fuck yourself.
Thanks.
If you get to work early, like pyscho-early, nobody will be there but you and so you won't get credit for it. If you stay late, then everybody will sort of know it, but the last one to leave will go with the knowledge that you may just leave 5 minutes after they do, so you won't get credit for this either.
The trick is to have proof that you were there and that you were working. If you know that you are going to stay late, don't send any emails all day. Save them until 8:04pm when you are about to leave, then send them all at once. This will show people that you are a go-getter instead of a jerk with 23 open emails message on his desktop everyday.
This can also work in the morning, but is harder to pull off since if you stayed the night before you don't have anything to write about since everyone you work with hasn't done shit since you were last in the office. Just find any old excuse to write an email. Make sure that you include relevant details to prove that you at the office and not at home writing emails like a deuche bag:
To: Dave
From: Ralph
Date: October 7th, 5:46am
Hey Dave,
In regards to the email I sent you last night, let me reiterate whatever I said again.
Hey, there is no coffee made yet - I wonder why? Also, man was it cold this morning while I drove to work at the asshole of dawn!
Sincerely,
Ralph
Found in production code that is deployed around the world:
Public Function Whatever(ByRef poStream As Variant, _
ByVal psTempDir As String, _
Optional ByRef poConn As ADODB.Connection) As Long
''' REPLACE THIS WHATEVER FUNCTION NAME WITH SOMETHING MEANINGFUL THROUGHOUT THE
'''' FUNCTION !!!!!
Lessons learned:
Today I actually used the knowledge that in some browsers, the order that you specify link pseudo-classes matters. The knowledge bursted out of me like a portly stripper with tendonitis waiting inside some bachelor's cake, solving an important problem in the minimal amount of time and making me happy. I'm glad I took this job, because today I feel like a web developer and not just a software developer.
But then again, this all boils down to the color of some letters on a screen somewhere, so it is not really something to get excited about.
10:16 PMHey guys, if somebody is paying you to replace all of the software that runs their business, don't you think that they don't want it to work exactly like the old stuff?
Well, I mean, we've got to make sure that our stuff let's them run their business.
Yeah, but wouldn't they just keep the old stuff in since it works and it will take our stuff awhile to get stable?
Well, no they are replacing the old stuff because it is old.
Yeah, sure, but this isn't a car or a house; software doesn't grow cobwebs or rust. Their current system works really well.
They are paying you to write software that runs just like their old stuff, so just be quiet, ok?
Ok, but they are going to be pissed when they see that they are still going to have to fucking pedal to get the machine to start.
Ha, ha. Real fucking funny.
07:54 PMI feel like a sniper when I get into work. I walk into the quiet office and cut on the lights, which give a low hum in return as they heat up. I take off my watch and cellphone and place both of them on my desk. The overhead light mixes with the beginnings of sunlight outside and they both reflect back with a high silver gloss. I take my machine out of its case, plug it in, and fire it up. I spend the rest of the day picking off problems from afar, one by one.
07:40 PMNo matter how many imaginary castles I build up in my head, no matter how elegant and simple my designs are, no matter how well they solve the problems they go up against, no matter how long they last, no matter how complex I think they are - they will never even approach the beauty, complexity, and simple effectiveness of the small tree outside my window.
09:10 PMI clearly violated the cubicle protocol today by having a conversation over my cubicle wall at the wrong time. The cubicle protocol is simple, and is implicity known by most cube-dwellers. Its basic idea is: Let's all pretend that we have offices.
1. Do not talk about things overheard from cubicles near you. Sure, you may heard every word of your neighbor's fight with his wife on his cellphone, and you may know about his daughter's play by listening over the wall, but do not discuss these things. The entire purpose of this rule is to pretend as if a roofless, wall-less, doorless little box can provide excellent soundproofing.
2. Do not talk over your cubicle wall very much. Instead, get up and go over to your buddy and talk face to face after knocking on their door before speaking. This gives everyone the idea that they have minimal privacy when in fact they live most of their sad little lives in a sound-attracting box that prevents them from doing any real work.
3. Never, ever use your speakerphone to check your voicemail. And if you forget, do not complain when feces in thrown over the cubicle wall in your general direction.
4. Do not entertain guests outside your cubicle. Despite the fact that the walls are very low, allowing easy lean-access, you should not allow your stupid friends to describe their weekend in two-hour monologues. Do this shit in the break room, or hide under your desk while your friend's monologue is cut short by a sudden barrage of feces.
10:37 PMThe company is small, the resources few, you have to keep track of everything that you do and worry about cash flow, the code is shitty - not in the way that all old code has aged to the point of shittiness, and not just because it is new and hard to deal with; it is shitty because it was written by amateurs at various stages of self-delusion and arrogance - and I still love the job.
06:48 PMAccording to our software schedule, I have done 14 hours of work today since I came in at 11 this morning. (Sound of me shaking my ass in my cubicle to a primal rhythm only I can hear).
06:47 PMAt a place I used to work, our mission statement included the following phrase: "to do the job right the first time and to continually improve our quality". So, we wanted to be perfect each time out but still improve. Gotta love the attitude.
06:46 PMSometimes the little perks matter a lot. I just received my new computer at my new job today - I was sitting in my office in my nice leather chair when I took it out of the box. It is top of the line with a large screen, embedded wireless card, pornographically long battery life, lightweight, comfortable to type on, etc. For months this machine, which only cost a few thousand, is going to whisper in my ear that I am important, hard-working professional and so this is what I will be.
06:42 PMMe:
Man, I love my new job – it is just so cool how well I fit in with my new boss and everyone else around the office. We are working on some of the same stuff, so my technical expertise is appreciated and I get to develop some cool new stuff as well. I mean really, how many jobs are there where on your first day you can make a contribution and work well with the team? My boss and I just understand each other – there is no need to speak sometimes.
My boss:
Man, I think that the new guy is mildly retarded or something. There are these long stretches of silence where he just looks at me and makes grunting noises and gives me the ‘thumbs up’ sign before returning to his office.
10:26 PMI love my chair. Not in a sexual way, but in a very physical way indeed. The support on my back is excellent – lumbar support – it is like I am an hour-old baby held up in one of Anne Geddes model’s hands.
11:04 PMI try to balance the amount of time that I spend working on a machine and doing regular things in the physical world. I know a lot of people who go to work and write code all day and then come home and log on to online computer games instead of watching TV and then go to sleep.
While I don't think that there is really anything wrong with living in this way, I do think that after living like this for a number of years you can turn into an impatient jerk without realizing it. Computers pretty much do what you want them to; when you move the arrows in a game you walk in that direction always. When you are on a machine it is a constant source of entertainment, knowledge, and excitement depending on what you want to do, how fast you want to do it, etc. The real world isn't like that at all; you aren't the king of the world.
After years of being used to this power at your fingertips you simply get used to it, so when you are standing in line at the DMV, or your wife is trying to calculate the tip at lunch, you freak out and get irritated simply because your impatience has been worn down after years of instance responses.
04:16 PMAt the company where I work as a software developer we have a production section of the building where our custom hardware is assembled, tested, and burned in. The new software product that we are working on right now is a large complex system that has taken years to design and build. We are still adding features, fixing bugs, and testing.
So anyway, there is a guy who works in the back testing some of our hardware, and he came up to me the other day while I was updating the system with the latest build and asked me how it was going. I told him how there was still a lot left to be done before our ship date, and he said:
You guys will figure it out.
and it made sense to me. This is one of the main reasons that I like what I do; you can say with a straight face that you are solving little technical puzzles everyday - that you are solving little mysteries. And we will, by the way, figure it out.
02:10 PMI would just like to say that although I am happy to leave, I will miss it here for reasons that none of you will ever know.
This job was perhaps the first time in my life when things did not go well and I stuck with it. In the past when things were going well I worked hard to make them better and when they turned I built them up in my head to be worse and cut them loose. It was like I didn't understand any of the emotions in between - it was either victory and confidence or a simple waste of my time and validation that I was worthless. One of the first ways that I realized this is whenever I would think about what my boss thought of me at any of my jobs I would always see the possibilities as either 'genius' or 'will soon be fired'. Nothing in-between. And I believed both stories.
But living in the middle has taught me the valuable lesson that I am the one who is in charge of how I react. When things happen around me they aren't strings pulling on my limbs, but tiny decisions to be made by me and me alone. No matter what happens the one thing that you are really in control of is what you think.
10:20 AMHmmm.... How do you decide which job to take if you are offered two?
Look at the (imaginary and real) books that you would have on your shelf and then count them up:
Job 1:
Windows System Programming
The C++ Programming Language
Inside COM
Writing Device Drivers for Windows
Job 2:
Inside COM
Programming COM+ with Visual Basic
XHTML/HTML
JavaScript
CSS
Web Services Essentials
Programming C#
ASP in a Nutshell
XML-RPC
SOAP
SQL Server
Oracle
SQL in a Nutshell
DHTML
Design Patterns
The person in the cubicle next to me and I are talking. When I got in this morning he had sent me an email in response to the one I sent him last night after he had gone for the day. I responded to his response, and he listened to me type it out. I heard him stop what he was doing and read it, then type a few lines in response. I am now reading what he has said to me.
06:33 AMAfter an abscense I love the look of text on the screen, of the keys under my fingers, tapping away like two spiders. Like an author returning to a manuscript or just a return to a good book, I am amazed by the structure of the letters; they march along with monotonous precision, but hold great curves of captured imagination.
09:27 PMI got a new chair today unexpectedly. It was very exciting. I was just sitting working when this guy that I only met once who works in the back, the building manager - the one who gave me the sign for my cubicle and my key - came in with a nice blue chair and said "more ergonomic chair" and then walked off. I sat there in my old chair and looked at my new brand new chair for a moment and then sat in it. I spent the rest of the day adjusting and playing with this new chair except for the time in the afternoon when I went to the bathroom and cried for about an hour.
09:15 PMI hate cubicles. The two basic things that a computer programmer needs are quiet and the ability to create a creative environment for themselves (put up posters, listen to music, code with no pants on). The cubicle destroys both of these things by creating an environment where noise seems to be amplified, thus leading to massive distractions. I am bothered all the time by what is going on around me; interaction is fine but only when I have some control over it.
Sitting in a cubicle you can only do so much to make it feel like a place for you to be creative. Your eyes don't have a place to rest that isn't within two feet of your nose; you are basically sitting in a box in a row of boxes. How am I supposed to create here? My only source of diversity is the web; it seems like I go there everyday simply to change the view a little. A place I used to work redecorated so that all the walls, floors, and carpets had this modern colorful appearance. That is great, but I don't work in the hall, I work in the grey box at the end of the hall under the heat lamp.
The other thing that bothers me about cubicles is that they don't even meet their original goal. Cubicles arose as an efficient use of office space; it is simply cheaper to use a cubicle than to build walls. Or so it seems. Large companies use cubicles because it saves them thousands of dollars when they build the infrastructure, and they figure that it has saved them money overall. This is wrong; I easily lose about an hour's work everyday by the noise that being in a cubicle, not an office, allows me to hear. Given that this happens to most people cubicles simply aren't cheaper - you pay everyday for choosing to build cubicles.
09:28 PMI saw a spider crawling across my desk today and I starting thinking about movement. He was tiny and moving very slowly; I watched him take about twenty seconds to make it across my mousepad. He was probably born in the building and will die here, never really knowing what it feels like outside. That is a little depressing to me given all of the good places right outside for him to build his web.
Where do I go? I spend most of my time in this little mousepad of my own, I drive to and from work on the same path, I walk down the same halls in the same direction, I visit the same places on the weekend. Seen from above, my movement patterns over my entire life look like the first ten seconds of a mice trying to find his way out of an enormous, complex maze.
Suddenly jealous of the spider, I move to kill him, but he is gone.
06:33 PM