This shit happens at my job and leaves me feeling depressed and at times questioning my own skills because I know and my bosses know that on my part, I just had to make a tiny, tiny change. But when you have a dozen such experiences, I feel like something is wrong with me because when the dust settles, this was a one line code change that took me a week to push to production. It also makes my bosses question my estimates. Of course, when I goto the other extreme and give a ridiculous estimate, that also pisses them off and makes them feel like I don't really know what I am talking about. Saying "I cannot provide an estimate" also does not cut it for the boss.
In the longterm, I can feel this killing a part of me. I have always been a start-up guy working for myself. Since getting my first full-time job, stuff that I would expect the start-up me to take an hour to do ends up taking days and weeks, even. I am aware of the (mostly legitimate) excuses to not take too much self-blame but at the end, it still feels shitty because I know, the start-up me knows, this should not have been a one week project.
Ah the perils of having a non-tech boss and coworkers and being the only tech guy. Reading stories like I experience at work is comforting in an odd way.
Here's how my typical story goes...
Boss: So can we make this little analytics thing your #1 priority for tomorrow?
Me: Yeah, as long as we don't have anything else for projectX(my #1 priority)
Boss: Well, do you?
Me: Not right now. But it can pop up any minute Jenny decides she needs something done.
--NEXT DAY--
Jenny: Hey this isn't working in ProjectX. Could you look into it?
Me: Sure. there goes an hour
Boss: I know you're busy but this is very urgent. Can we grab you for few mins for this meeting?
Me: Sure goes another 30 mins
...
Jenny: That thing you fixed. Can we undo it and push to production because I realized blabla?
Me: thinking wtf? Ok sure.
...
Amanda: Hey can you check if these 2 users signed up from same IP?
Me: You can check that in admin
Amanda: Where?
Me: The admin panel you emailed me info to when I joined the company..
Amanda: Oh right. Can you fwd me the email I sent, I can't find it. My gmail's not working right.
Me: Ok.
...
Before I know it, I have spent every day of my job troubleshooting shit to never really get in the flow of doing my own project assigned by my boss.
Boss(after a month): How's that project coming? I know you said it's a one day thing.
Me: Yeah but the next day we changed the specs in the meeting. Also, projectX is getting a huge rehaul.
Boss: But still...you said it's a week after that
Me: Yeah assuming I didn't have work for projectX
Boss: But you'll always have work for projectX
Me: Yeah that's exactly what I told you too
Boss: So where does this leave us? Can you finish it in next week? I don't think there is much work for projectX
Me: But...
Boss: You're the startup guy. We want you to push us to release stuff quick. When you give us deadlines and are so off, it makes us lose faith.
Leave work annoyed, put in a quiet weekend with no coworkers around and wrap up said project
This doesn't sound like a process problem at all, actually. Really it's the reverse: your work environment is a mess, no one has the ability to do their own job except to bug you to do things they need.
And that's a disaster too, but it would be helped by adding process, not hurt.
Also, dude: learn to say no. Learn to prioritize for yourself instead of expecting your slag pile of a management structure to do it for you. i.e. ask: "What things must I get done to make sure I'm successful long term?" (which is entirely different from "What is the highest priority thing I have been asked to do?") and make sure you prioritize your work to get those things done (which is an entirely different thing from "work on those things"). And if your workplace environment really doesn't permit that, move on.
And if your workplace environment really doesn't permit that, move on.
Doing just that :)
It's basically a startup with 10 of us where I am the only in house developer.
I've tried many things like asking folks to Skype me instead of walking over to my desk or calling my name. I've gone to great lengths to get em to understand why skyping to get my attention is different than other ways. None of these guidelines really lasted more than ana few hours.
On this subject: Whenever someone chats me in the following manner, I want to kill them. Straight up. Just fucking take an ice pick and jab it right through their skull:
Other Dude: Hi.
Me: Hello
A minute elapses
Other Dude: I'm having a problem
Me: How can I help
A minute elapses
Other Dude: ACTUAL PROBLEM THAT THEY NEEDED HELP WITH
Me: Oh, here is your resolution which took all of 15 seconds to give to you.
WHAT THE FUCK MAN?! WHAT THE FLYING FUCKITY FUCK?! YOU JUST BROKE MY FLOW AND STOLE 2 GOD DAMNED MINUTES! WHAT IS WRONG WITH YOU?! IT'S FUCKING IM, YOU'RE NOT GOD DAMNED STANDING NEXT TO ME! AND WHY THE HELL DOES IT TAKE YOU A MINUTE TO TYPE EACH THING ANYWAY?! DON'T YOU KNOW HOW TO TOUCH TYPE?!
I mean, CHRIST, if this happened once in a blue moon, fine, whatever, but it seems like EVERY motherfucker uses IM the same way. EAT DICKS.
> On this subject: Whenever someone chats me in the following manner, I want to kill them.
Then refuse this, set your status to "don't bug me, if you have a question just bloody ask it" and check your IM when you've got a lull[0]. If it's not a question, kill the window it's not relevant. I don't need "social interaction" on IM when I'm coding, if the other guy can't get to the point screw him, I'm not interested.
[0] If IM is specifically a way to get you immediately, start blacklisting people who can't get to the point and waste your time and have they go through email.
>If IM is specifically a way to get you immediately, start blacklisting people who can't get to the point and waste your time and have they go through email.
But of course they won't use email, they need the answer NOW. No, they'll come over to your desk and start tugging on your shirtsleeve.
I much prefer for people to visit, and to visit people. But it requires being able to take 'no' for an answer, and being able to say 'no'. Or at least, "I'm in the middle of something else; I can help you in 10 minutes. Otherwise, talk to Joe."
That is why I insist on communication via chat clients when I'm busy. I'm not immediately interrupted as I would be if someone walks up or shouts out as I can ignore the little flash of the chat window on the task tray for a few minutes, sometimes tens of minutes, while I bring my train of thought to a more orderly stop.
If people start with "Hi, I have a problem" and don't state what the problem is I just respond with "drop me the details and I'll have a quick think" and get back to my work. Even if they respond immediately to that it might take me ten or fifteen minutes to get look at their message again - that is their time wasted, not mine.
Some problems require a more urgent response so I'll accept a walk-up or a shout for those, and some problems are best illustrated by showing them than describing them, I just have to trust people to know what they are and what is less urgent. And of course a message will come in at a time when I am eminently interruptible, in which case people get an immediate response anyway.
I find it works except for people who insist on not following the process, but they soon learn I'm far more helpful if they don't irritate me!
> If people start with "Hi, I have a problem" and don't state what the problem is I just respond with "drop me the details and I'll have a quick think" and get back to my work.
If people start with "Hi, I have a problem" and don't state what the problem is I close the chat window.
My work IM's status clearly states "if you have a question, ask it, don't ask if you can ask", time wasters simply get ignored.
> Some problems require a more urgent response so I'll accept a walk-up or a shout for those
> If people start with "Hi, I have a problem" and don't state what the problem is I close the chat window.
In the past I've found that leads to people reporting "I asked him several times over a few hours and got no response" which, if the person being complained to does not know the situation, could look bad for me.
If I feel like being more terse, I just give a one-word response: "Details?".
> In the past I've found that leads to people reporting "I asked him several times over a few hours and got no response" which, if the person being complained to does not know the situation, could look bad for me.
As I noted, my conditions are clearly spelled out as my IM status text, if they can't bother following simple instructions I can't bother with them.
I do this all the time and add, "I like this game. Your turn." It normally gets a smile (at least in person), but doesn't really help with the flow problem.
YOU JUST BROKE MY FLOW AND STOLE 2 GOD DAMNED MINUTES!
Actually, it's worse than that. The (average) time it takes to get back into flow is 15 minutes[1], so add the time to respond to them to that to get your wasted time. And if you get another interruption before the fifteen minute descent into flow is complete? Start over - another fifteen minutes. If this happens constantly, you will effectively never get any work done. There's more than one way to kill productivity.
Have you heard of these things called sentences? You don't need to hit return between each one.
"Hi Dude, I've got this thing I need help with. Here is the description of what it is and what I am having a problem with."
It's not an issue if they put it in the same chat message, it's the "Hi", send message, "I have a problem", send message, "This is what the problem is", send message that drives me up a wall.
And if you REALLY need him to get back to let you know if he can help out immediately, you can send a second message along the lines of, "And sorry to be a bother, but I need help pronto. Please let me know if you can take a look at this right now." At that point, it's not a big deal if there's another message, because you haven't wasted time in relaying it.
This is what I'm guarding against. I haven't been a programmer long, but it seems inhuman to not try and be polite or have a tiny lead up to the question.
Ironically, it's the exact same thing that makes me impolite.
First of all, you're not bursting into someone's office. Second of all, if you burst into my office while I'm working and start making smalltalk, I will, depending on my mood and whether or not I've previously judged you to be a useless person, either immediately ask you to get to the point, or throw you out.
Stop wasting my time. If sending "Hi" makes you feel better, fine, but the substance had better be on my screen by the time I look at the window, or you've wasted my time.
The same way you know he's not at his desk when you type that useless "Hi": you don't get a reply. How long do you wait after typing a useless "Hi"? Wait that same amount of time after typing your relevant question.
Hm, I've just started to think, also for my personal use, that maybe it wouldn't be a bad idea to try scripting some automatic 'Hello, how can I help you?' response to /^[^\w](hi|hello)[^\w]($MY_NAME)?[^\w]*$/i :)
Tim Schafer, of http://www.kickstarter.com/projects/doublefine/double-fine-a... fame, has a note on his door until 11am in the morning saying, don't knock, writing. Could you make progress on projectY if you made a deal to not work on projectX until 11am? To not even open your office door?
(FWIW, this is a classic Quality of Service (QoS) algorithm, where traffic on ProjectY is given dedicated bandwidth (2 hours in the day) so that it isn't swamped by traffic from ProjectX.)
Funny enough I didn't get a private office but we got walls built for a private office when the sales guy joined because he was disturbing everyone. If my non developer coworkers realized how disturbing it is to be in flow writing code to have someone tap your shoulder and start discussing a totally unrelated issue to what you've been coding.
My place of employment is similar to yours, I've moved myself up the ladder in order to start isolating and enabling my dev team the peace and quiet they need to be most productive.
What if, while you code, you think out loud, like really out loud... louder than you would talk in conversation? Perhaps if YOU bothered EVERYONE then maybe they'd put you in a private office? It's worth a try while you are looking for other opportunities...
i.e. "LET ME THINK HERE... IF VARIABLE V EQUALS ENUM ACTIVE THEN CALL DOHICKY ELSE DO NOTHING... WAIT IS THAT RIGHT?! NO NO NO LET ME RETHINK THIS?! I BET IF I REFACTOR THIS CODE I CAN..." All day long...if they tell you to be quiet tell them to "shut up" you're trying to think and they are ruining your thought processes and they risk causing you to slow down and/or enter errors and bugs into the code... "what do you mean me talking and noise in general is disturbing to you and your work? How they hell do you think I feel?!?!?" :)
Apparently that passive aggressiveness already exists in his work place thanks to his bosses and co-workers... but some how you all fault him and say he can't share that same love?
I was thinking more about other situations. I thought the salesman was isolated to an office because he has to talk on the phone, constantly, to customers and it was interrupting the developers. I've heard similar situations with startups and their CEOs. If I did that in my open space office, my coworkers would just get irritated and eventually I'll be talked about it by my manager.
In fact, in my current work environment, when we moved offices there was a "central" open area with a view half built cube walls. Originally our telephone support were going to sit there and the Dev team was going to get placed in an enclosed shared Dev "war room". Support squeaked and the timid dev team got stuck out in the open.
Supposedly since Support is on the phone, they would interrupt everyone (everyone else int he vicinity is sales and they each have private offices) since they talk aloud on the phone. Why's this bad? Because breaking deep thought vs. some noise in the background (which still also exists because of the leakage they have on the phone in a single enclosed room) is much much more unproductive. Worse, the Sales team often forgets to shut their doors so sound leaks out into the open area or between sales calls they congregate a few at a time and have loud conversations disrupting the dev team. Worst of all is if they are in their offices, quietly doing paperwork with their doors open then decide to yell to talk to another salesperson in another office.
I often get up and shut Sales office doors, and constantly have to hush people up. My timid dev team doesn't because, well they are timid and don't want to rock the boat and add friction to inter office relationships. (I can hear, I agree. I need to encourage my dev team to speak up more, perhaps I'm sheltering them too much.)
unfortunately in environments like the one the OP mentions, the squeaky wheel is usually the one that gets the grease. So, while attached to the trailer (company) you're best to squeak loudly while you look for a better vehicle to get onboard with.
But if you are planning to leave, what harm will it really do? When you have pocket aces, bet and play them!
EDIT: Maybe you'll inadvertently help the next guy. Yeah they might not care much for you but maybe, just maybe, something will click and the folks will realize... yeah I guess disturbing him was stupid on our part. If not and they don't get it... who gives a crap about people that don't give a crap about you!?
I sometimes am forced to do this at work. Just to get people to shut up from chit-chatting/small-talking very loudly. But then, I work in a cost-cutting, off-shored, cubicle farm.
Be a grumpy bastard. Someone taps me on the shoulder, I'm grumpy the first time, I growl the second time and if there is a third time I'll shout at them. Hasn't come to the shouting yet (although one guy got pretty close, but I just glared at him last time he approached and he grasped it).
Also, ask if you can work from home since your office environment is bullshit for writing code.
Work from home was turned down pretty quickly though I'm not sure if that would have addressed the root problem. I think the root issue is they need a developer who just does tech support for the other 10 non tech people. And then a developer who can actually build shit quietly.
If my whole job was to do tech support all day there would be no problem. Of course it wouldn't be fun and I'd prolly end up leaving, the present situation hasn't been much better and I'm on my way out.
Now that I am leaving soon my boss is very interested for advice on how to attract tech talent. A part of me just wants to send him a link to this thread :)
I'll frequently work from home in the morning or evening if I want to get stuff done; no coworkers there. Or if I need to concentrate, I'll leave my office and go find a massage chair or cozy nook and curl up with my laptop, or even go to a different building and work alongside a team where nobody knows who I am.
"It breaks my concentration. That makes things take more time. That makes things cost you more money."
edit: Suggest that he ask you if you're busy over skype. Talking face to face is more effective, and I'd hate to try to discuss something over it, but interrupting flow really sucks.
Because bosses and managers are suppose to support their direct reports by obtaining a work environment and tools that best enable them to be productive... if he refuses to contact you via skype, when he asks you a question verbally, respond by typing a skype message. It's not okay for managers to treat others how they (the manager) wishes or wants to be treated... great managers treat employees the way the employees wish to be treated (as long as that treatment is ethical and productive).
It can piss people off and so work negatively (so, evaluate your individual circumstances), but you can begin insisting upon written requests. Amongst other things, this documents the requests. (And you can tell people the written request is e.g. for your email-based "todo" list.)
If/when people start getting into your face (perhaps even formally) about performance, you have documentation to back up your argument. (Although, ultimately, most arguments are kind of moot, unless they end up in court or perhaps before an unemployment insurance evaluation -- not something you really want, anyway).
As for the overall experience. While negative, emotionally, you can still view it as a learning experience. Keep in mind that when you are in a better position, with more control, 90 % of the world with which you are competing is / will be what you are now experiencing. So... if you can cut out that bullsh-t, you will have a very significant competitive advantage.
It can be useful, to get a good, hard, close-up look at what you don't want. Just don't let it go on too long.
P.S. A trick I'll occasionally use, in problematic verbal situations, is to summarize the conversation/request in an email to the other party(s). 'We met. Here's what you asked me to do / how I understand it, what I'm going to do, and my anticipated schedule and potential conflicts / other overriding priorities. Let me know if I've misunderstood or you disagree.'
If no one responds, I proceed accordingly. If they bitch, hey, I laid out my approach and circumstances up front and asked for feedback.
It can put people on the defensive and create a negative vibe. But hey, when people tell you / manipulate you with statements of "We're losing confidence", things are not too positive, to start with. (P.S. That's already the sign/signal to bail. "Bail, bail, bail!")
> Learn to prioritize for yourself instead of expecting your slag pile of a management structure to do it for you
What you are suggesting is easier said than done. I think that most good developers have the mentality you are describing...at first. When you work in an environment like this, however, you get worn down. You can only put up a fight for so long before you start getting all sorts of mixed up and you don't know what the f to do. If you took the best prioritizer in the world and put them in a corrosive environment like this one, the environment would eventually win out. I really feel for guys like the one that posted this original article and some of the subsequent commenters. I have been in that boat before and it is not fun.
Just out of curiosity, and this is something I've been meaning to ask for a while, how does the whole startup only having one tech guy (who isn't a founder) work? I've seen this scenario referenced many times on HN and I'm still having trouble picturing what the incentives are to work for such a company (as opposed to being made a cofounder) when it sounds to me like you're doing at least as much work as they are. I would normally think the sum total of all development (I'm lumping things like specs, coding, documenting, and testing all together) to be at the very least close to 50% of a startup's value, so if there is only one developer, he or she would seem to be worth about half the company. Is this kind of startup less software oriented than the kind I'm describing?
Try something like, "Can I get back to you in an hour? Boss wants me to finish this top priority item for him."
And if Boss asks you if you can finish it next week, say no. You're being asked to give an estimate, and it doesn't help to say "Yes, if [this thing doesn't happen which I know it will]". If they want you to be the startup guy, then act like you're the one in charge of your own schedule.
A better trick I discovered when I used to work in an environment closer to this was to always give the person requesting help some trivial but sincerely related task to do before you can help them, e.g. "can you just write down all the steps in the process before you get stuck, it will help me solve the problem", or "Hmm... I'm not quit getting the issue, can you draw me a diagram and then get back to me". This acts as a great filter for people that are just helpless versus people that really need help. And if anyone complains to the boss that you aren't helping, you can say "oh well did you do task X? that's really all I need from you to get started"
One day I had an epiphany. I realized as I was programming at my computer that nobody had a freaking clue what I was actually working on. If someone asks how their low-priority project is going, I just say that I'm still working on it. They have no way of knowing if I'm actually working on it right now. In the real world, saying "no" a lot will get you enemies. It's much more diplomatic to only work on some low-priority project an hour or two a day (you don't have to tell them your are only spending an hour or two a day), or say you'll get to their project immediately after you finish this thing your are working on (which can be a small component of your large important project). It's important to know how to say "no", but in practice it is important to minimize the number of times you say "no".
Then you either demand dedicated "anti-office hours" or you tell them that it's not feasible that project B will get done with the way things have been recently. They're not technical, and all they can do is take your word on when you think you can finish it. They're not going to pick up on the caveats you've laced in your estimate. Also, you should let them know ahead of time that things are slipping instead of them finding it "behind schedule" on their own.
Honestly, don't take this as an insult, but it just doesn't sound like you're the right person for the position. If you have trouble pushing back when you need to, then you should find a spot where there is someone pushing back for you.
I agree with you that I'm not the right person. I was brought in to change the culture so we do everything faster(you can imagine the speed at a company with couple offshore devs and half dozen onshore people working on product).
I've, err we, have mostly failed.I can go on about why but at the end, I think we all share the blame and evaluate parts we could have personally done better and apply it next time round.
One of the big realizations for me is that they need someone older and more confident. I'm in my mid 20s and once founded a startup that got 30x the traffic but even months in, the boss would be unsure if I was a good programmer. We tried everything from emailing my code samples to his CTO friends to code reviews by other devs(all of which gave positive feedback) but I feel he could never totally shake that doubt. I called him out on it finally(basically if you can't tell after 8 months if I can program you should let me go). I've been programming since 12 but the lingering doubts actually started making me question my own abilities at which point I decided I need to move.
I found keeping a timesheet helped me there. When it came to "it is getting to the point where X is not going to be ready on time, and I've got personal things on this week so I really can't work significant overtime", and the question came back "well, what have you been doing for the last week", I could give them a full list of "2 hours helping X with Y", "an hour doing Z", "four hours on that high priority fix client C that no one else was willing to touch" and so forth. Don't play the blame game and point out that person X was being thick on an occasion or otherwise dwell on who is interrupting your key work, just lay it out as matter-of-fact as you can: "This is where my time is being used".
Make damn sure though that people understand a short interruption "for a quick meeting" when you are at the time "powering through" stuff sometimes kills as much as a full hour of development time if you are working on something complex as it can completely break your train of thought (especially if you are tired due to recent overtime!), or worse if you are coordinating with other people and/or are working on something timing sensitive (so the interruption might mean a key coordination point is delayed).
If you can show what the demands on your time are, a good manager will try rearrange things so that you are interrupted less often. Sometimes simply merging those small interruptions into a scheduled period or two each day is enough to make all the difference to your mid/long term work: problems that didn't really need you magically go away (as the person who was going to interrupt you does that 30 seconds of extra thinking/research that was needed to give them the clue) and the others "interrupt" you a few times a day rather than several times over an hours or two.
Here's my suggestion: have your boss talk to Jenn and make her understand that you'll be spending the next day working on the boss' request. Any interruptions would have to go through the Boss, so that all parties are aligned.
This seems like a communication problem between the managers. (I can speak from experience, since I messed this up once when I reallocated our engineers' time without fully being on the same page as the engineering manager)
Ideally that should work but projectX is what the whole company is working on and key pieces of it are being tested throughout the day so it's impractical to have a cut off time.
Well the converse of my suggestion adapted to your particular situation would be this:
Boss: Could you do this thing for me?
Badclient: Well, as you know, I have Project X as my highest priority. I'm happy to oblige, but Jenn has dibs on my time at the moment. If you can talk to her and come to an agreement on how I should distribute my time, I'll be happy to work on your thing.
Whatever happens, your boss is on the same page as Jenn, and all you have to do is execute the agreed upon plan.
1. Never tell anyone how long things take until you got a chance to sit down and make an estimate vs. guesstimate.
2. Never let anyone get you in the position to set priorities yourself (unless you're the boss). Refer them to your manager or whoever is highest in the chain of command and assigned you a task to make this decision.
This is really more a working culture problem. You'd think it's in the management's best interested to make sure nobody ever violates 1. + 2.
One backlog for new requirements, another backlog for incidents. Track your time working on the different backlogs (or even per-tasks) and pretty soon you will have some numbers to show the boss why new stuff isn't happening snap-snap.
ps: Now that I am leaving soon my boss is very interested for advice on how to attract tech talent. A part of me just wants to send him a link to this thread :)
I mainly stuck around because it was my first FT job and I'd promised myself I won't bail on it for one year no matter how bad. In past I've regretted quitting on projects too quickly...at least I won't have that regret here.
At my previous company we had the same problem, where people from all over the company would come up to us developers constantly asking us to do things which were great, but not really what we were supposed to be doing. Like you, we never got around to doing something that we said would only take a day.
One week we all decided to keep a notepad and paper next to our desks and keep a log of every time we were interrupted and asked to context switch and do something random. It was so bad, before the end of Monday our boss was so dumbfounded he completely re-jigged everything so it wouldn't happen like that again.
We ended up calling one developer pair the "consulting developers" each week, and only that pair could be interrupted. There was a huge sign above their desk advertising them for the week. We sacrificed one for the good of all, and it worked really, really well. AFAIK, they are still doing that.
This is great to hear. It is pretty much the problem/solution that I've diagnosed and stated in another post:
I think the root issue is they need a developer who just does tech support for the other 10 non tech people. And then a developer who can actually build shit quietly.
I will push this stance more aggressively having read your post.
As much as this sounds counterintuitive, say no, and stop being a team player.
Petty requests for emails that someone should have are their responsibility. If you think about it, why should your resourcefulness help them complete their job while it blocks your own progress?
Your boss is doling out reviews, he's #1 priority. Everyone else gets "no" and no access to your time without talking to him first.
"Being a team player" is a fluffy way of saying "do other peoples jobs for them". Sure, help people out and don't be a dick.
It does sound like a mess, but this type of mess exists everywhere. When you meld highly technical people with less technical people you will get these scenarios. Before you know it, you will be expected to replace the toner.
One of the main reasons I took a FT job was to become a better team player so in the long scheme of things, I always wanted to make this work out. Obviously it hasn't worked out too well but I think I have learned some critical lessons for my next gig!
Interesting; I've encountered "yak shaving" as meaning something slightly different: it's when your main task depends on a subordinate task which is long, difficult, and stupid--e.g., in programming, it's something which the tools should be doing for you. (Bonus points if you know that, on a different OS, or in a different language, the tools would be doing it for you.)
The original MIT meaning is closer to what I recently heard described as meta-yak-shaving, which is when, before you can start shaving the yak, you discover that each hair of the yak contains a subyak, and each subyak has to be shaved individually.
This is something the Scrum methodology is supposed to solve. It places the responsibility of prioritizing tasks at the hands of the stakeholders by making the tradeoffs between scheduled tasks and interruptions very explicit.
If you want something more light weight look into the Pomodoro technique. People can bring issues to you but only in breaks between blocks of uninterupted work.
If you go with either then you can explain away refusing to be distracted as merely following a proven methodology. This gives you an easy out as people will vent any frustration at it rather than you.
I see the familiar pattern of programmers not saying "no" and not explaining clearly what they need to work.
None of the other people here are being particularly unreasonable, they're just ignorant. And given that "how to work with programmers, writers and mathematicians" is not part of any educations, it's not really their fault.
In the longterm, I can feel this killing a part of me. I have always been a start-up guy working for myself. Since getting my first full-time job, stuff that I would expect the start-up me to take an hour to do ends up taking days and weeks, even. I am aware of the (mostly legitimate) excuses to not take too much self-blame but at the end, it still feels shitty because I know, the start-up me knows, this should not have been a one week project.
Ah the perils of having a non-tech boss and coworkers and being the only tech guy. Reading stories like I experience at work is comforting in an odd way.
Here's how my typical story goes...
Boss: So can we make this little analytics thing your #1 priority for tomorrow?
Me: Yeah, as long as we don't have anything else for projectX(my #1 priority)
Boss: Well, do you?
Me: Not right now. But it can pop up any minute Jenny decides she needs something done.
--NEXT DAY--
Jenny: Hey this isn't working in ProjectX. Could you look into it?
Me: Sure. there goes an hour
Boss: I know you're busy but this is very urgent. Can we grab you for few mins for this meeting?
Me: Sure goes another 30 mins
...
Jenny: That thing you fixed. Can we undo it and push to production because I realized blabla?
Me: thinking wtf? Ok sure.
...
Amanda: Hey can you check if these 2 users signed up from same IP?
Me: You can check that in admin
Amanda: Where?
Me: The admin panel you emailed me info to when I joined the company..
Amanda: Oh right. Can you fwd me the email I sent, I can't find it. My gmail's not working right.
Me: Ok.
...
Before I know it, I have spent every day of my job troubleshooting shit to never really get in the flow of doing my own project assigned by my boss.
Boss(after a month): How's that project coming? I know you said it's a one day thing.
Me: Yeah but the next day we changed the specs in the meeting. Also, projectX is getting a huge rehaul.
Boss: But still...you said it's a week after that
Me: Yeah assuming I didn't have work for projectX
Boss: But you'll always have work for projectX
Me: Yeah that's exactly what I told you too
Boss: So where does this leave us? Can you finish it in next week? I don't think there is much work for projectX
Me: But...
Boss: You're the startup guy. We want you to push us to release stuff quick. When you give us deadlines and are so off, it makes us lose faith.
Leave work annoyed, put in a quiet weekend with no coworkers around and wrap up said project