| Better programmers than me can write in essays about walking around with a coffee mug and call it programming. And it's perfectly accepted at a place that knows the business. Or see what Gregory House (TV show "House M.D.") does when he is thinking. But what about the other places where you are the only programmer? If you don't stare at boring stuff on the monitor for 8 hours straight, co-workers suspect you being a slacker. Yes, not the managers who see the output. Only the co-workers who see the process and can't relate to this kind of work. Yesterday I had to explain to a trainee of some other profession that software development is like flying. The explanation from the Hitchhiker's Guide to the Galaxy. I don't think she bought it. | |||||||||||||||||||||
|
locked by Michael Myers♦ 12 hours ago
| It's funny you ask this question because just yesterday I had a client blow up at a colleague and I who were discussing Google Analytics and Macbooks. Now this client gets charged for our time and we both exclude such time from our timesheets but such breaks are actually important: you can mentally recharge and it can help to work through problems and so on. Now I put people into two categories:
I am firmly in the second category and I have a real problem with people in the first. In my experience, people in the first category seem to suffer from insecurity. It's a fundamental psychological principle that controlling your environment makes you happy and such people, who are faced with something where they feel out of control or don't know how to achieve the best results, resort to controlling their environment by dictating how you do things. You're right in that this is particularly problematic for non-programmers when dealing with programmers. They often just don't understand what we do and how we do it, like how things can take longer than estimated and so on. Yesterday's case was even worse because this same guy would sit with a colleague and discuss the house she's buying and other things in the middle of doing his own work (and he's charging his clients for his time and I'm sure he's not charging for such downtime), which I found particularly galling as a real double standard on downtime. So how do you deal with it? Preventively. Try and associate with results-oriented people by choosing the right job, staying in a good job, leaving a bad one, hiring the right people and so on. There will be a point where you'll simply have to put up with such nitpicking however. You can try and explain how the process doesn't work where you just sit there and stuff happens in some linear fashion but in my experience more often than not non-programmers just don't get it and you're wasting your breath and it'll sound like you're just trying to make excuses for slacking off. In my case, as a consultant, I'm simply going to finish the current project (which is soon thankfully) and then respectfully decline any future work as I've already got more in the pipeline than I can already do. | |||||||||||||||||||||
|
| One solution could be this: During their lunch break get them to do a simple task like as a crossword. Ask them to be conscious of the amount of time they spend reading/writing vs. the amount of time they spend thinking [or looking up the answer]. Tell them that this is exactly the same as the time you spend reading/typing vs. the amount of time you spend thinking and looking up answers. Better still Sudoku because it can involve hours of trying to figure out where you went wrong and why none of your numbers add up. So while the task itself seems relatively easy, after all, it's just numbers in boxes it can take time. Get them to predict how long it'll take them before they start and see if their prediction is right - guaranteed it won't be. You can hit them with a double whammy for why your time expectations never quite add up either. This is the only way I can really think of to get them to understand the way engineers work. I see lots of "those types just don't get us types" - people are adaptable, people can understand things if presented in a fashion they can understand, it's just that nobody's ever taken the time to present them with an argument they get. | |||||||||||||||||
|
|
Just let your build scripts run, see lots of command lines spewing thousands of useless trace messages, and you're all good... | |||||||||||||
|
| Years ago I had a gig writing some "Business Basic" stuffs. I was teamed up with a rather "brilliant" programmer with a strange work flow.. He would sit at his computer.. for half to 3/4's of the day.. and play doom / quake / wolfenstine 3D (he was really into the FPS). when he had enough, He'd fire up the editor and just type. At the end of the day, whatever he wrote.. was gold. We had a new account manager start with the company that walked in on him playing one morning and in dealing with her, was not very polite. She complained to the CEO that "one of those programmers isn't doing any work at all but playing those violent video games". To which the CEO replied to her "YOU DIDN'T DISTURB HIM DID YOU!?!?". The games helped him think. He designed, wrote, tested and debugged all of the code in his head while he was playing. Once he was done, it was just a matter of brain dumping and getting it all out. | |||||||||||||||||||||
|
| Why, leave something verbose running on the terminal, of course. | |||||||||||||
|
| Take a walk I've found that it's more the appearance of not "working" than anything else. If I leave my desk for a few minutes and walk around outside no one thinks anything of it. Much different than sitting at your desk looking idle. | |||||||||||||||||
|
| Here's a solution from commandlinefu.com:
It will make some data scrolling off the terminal.
| |||||||||||||
|
| How about thinking on the lav (the john)?! Of course it limits you to one thought session a day unless you don't mind people thinking you have diarrhea | |||||||||||||||||||||
|
| Think on paper, i.e., make a note of your mental thoughts. I find diagrams make things a lot clearer for me when thinking anyway, so it's a win-win. | |||||||||||||||||
|
| Pull out some paper and scribble technical-looking stuff on it. Then when you're thinking, hold your pen and have one hand on the paper. Occasionally add something to the paper. If you're working on hard problems, you'll probably need a pen and paper to assist your train of thought anyway. | |||||
|
| Pretending you're working on something that's physical, not mental, is a short term solution, I think. You'd better teach your co-workers that thinking takes most part of the process of programming. Of course, it's a long term solution that may show no value on the first few weeks - or months - but it will surely pay off. They'll even leave you alone when they see you're quiet, with a mug of coffee in your hand. Leave him there, they'll say, he's doing his best. | |||||
|
| I honestly don't think you can. Sure, you can "pretend" you're working by scribbling, having technical websites open. But if you're doing that, you're not doing the actual "thinking" bit that gets the work done. I'd stick to worrying about how you get your work done best and not trying to appear to be working to others. If it matters to them they will know the truth. | ||||
| |
| Why do you even think you need to hide the fundamental part of your job as a programmer, ie thinking, from co-workers? If a co-worker says "Wow! You really don't seem to do much each day, do you?", just explain, in a good natured way, what you are actually doing when they notice you staring off into the distance. If they continue to have a problem, WHO CARES! Just let the responsible manager deal with it. Of course this relies on the fact that your output is actually acceptable. This is exactly how I have dealt with this sitaution myself in the past. If someone just doesn't like you, you are not change their views, but most people are simply curious. A programmer that believes hiding and being deceptive to colleagues about what it they do, will always have difficulty dealing with non-programmers. | ||||
| |
| Have your eyes closed and when someone walks up to you, say "Amen". | |||||||||
|
| I recall the movie The Firm when Gene Hackman tells Tom Cruise that if he is even thinking about a client, it's billable time. If it's good enough for a lawyer... | |||||
|
| Do you really have to do this (I mean explanations)? I know it's tough times, etc. but think of finding some place else when you can. According to your question several things are wrong with your place of work:
Pick up Peopleware by DeMarco and Lister to read about these and other things that define and explain right teams and places to work. | ||||
| |
| I worked for a couple years for a small company as the sole developer. I know for a fact that they thought I was just slacking off when they'd pass by my door and see me on the internet looking something up, or reading a book like Pragmatic Programmer; and even when I was actually writing diagrams related to the current workload. In short, I don't think it is possible for someone unfamiliar with programming practices to understand what we do. Anymore than it is possible for someone unfamiliar with engines to see a mechanic just standing there staring under the hood, and understand that the guy is actually working. | |||||||||||||||||
|
| What I hate is when people see you browsing the internet and think you're slacking off. A key part of expectations or perception management is to not have your monitor facing a busy thoroughfare. I hate people walking behind me as a general rule anyway. | ||||
| |
| Program in Java. Then you'll have to do a lot more typing. Or, if you're already programming in Java, well, hmmm...COBOL, maybe? | ||||
| |
| Get a whiteboard and scribble some ideas on it while you're thinking. I find it helps me structure my ideas better than just walking around while thinking. | |||||||||
|
| I always come running back from the toilet, and say I got a great idea while I was thinking there. The worst part: it is even true, I just make a show out of it. Do the same with coffee break, just break of mid-phrase if you get an idea etc. | ||||
| |
| I've seen this one. We have an internal IM system where I work. Last year, word came to us (from our boss, as a friendly warning) that people in other departments were looking at the IM client to see our status (if we were "away" or not) and using that to determine that we were slacking off. So we set our away timeouts to be very high, so it looks like we're always busy, which we usually are. Between watching programs run that may take time, reading stuff on screen, talking to other programmers next to you, etc... it can look that way. I don't worry about, really. That's how I work (and the others around me too). That just the way things work in our department. That metric can work with some jobs (i.e. % of time in a call for a call center employee), but it doesn't work for everyone. What can you do about it? I wouldn't do much. I like the crossword suggestion above. If you are worried about others opinions, I wouldn't be. If they are complaining/making remarks, you can try being nice (the crossword thing) but if it continues you could simply talk to you manager asking for people to basically be informed "he's doing his job, let him be". It's not the job of the clerk 3 desks over to monitor how hard you're working. The people who watch this kind of thing are usually the same people who are slacking themselves (or at least worried they are, such as a workaholic). As long as your boss knows you're doing a good job and doesn't think you're wasting the company's money, you should be fine. | ||||
| |
| Usually what I do is I'll leave something on my computer screen (query in progress, report, data table, etc.) and i'll play with my rubik's cube while periodaclly looking at the screen. | |||||
|
| Sometimes when I have a difficult problem, like everything I've tried just isn't working, I lean back in my chair and close my eyes. Guess what that looks like. | |||||||||
|
| I think it's important to distinguish between accepted forms of "thinking" and less conventional methods like some of the ones above (playing FPS games etc). Most workplaces expect some degree of professionalism, and while playing games might be the most effective method for you, society doesn't generally accept that as professional behaviour (yet ;) ). Usually I just leave the CLI for a linux server open on one screen - most people see that and run. | |||||
|
| If they don't affect your getting a paycheck, what does it matter what they think? | |||||||||
|
| If you're the only programmer in your division, it's a pity. Otherwise you could write mini-documents like a model overview - anything high-level - to help you with your implementation thougts.
| ||||
| |
| My strategies:
The problem with the second approach is that if a thought strikes that requires looking something up, you are often a minute or more away from your workstation. Also, I often bump into someone on the walk I need to talk to. That isn't nessecarily a bad thing, but it doesn't help with the task at hand. Still, you end up learning something that you needed to learn. Consider it a holistic development technique. :-) | ||||
| |



Matthew, thanks for the mention. I'd venture that tweet mineability is also easier because short messages cover a single topic.
Short messages are easy to post so they folks can post more frequently. So maybe the more interesting thing to mine from twitter is message propagation. Then from propagation threads and connectedness patterns, one could infer influence networks and knowledge about the types & topics & forms of messages that travel farthest and fastest.
Posted by: Seth Grimes | February 19, 2009 at 05:12 PM
I don't get it, anyone can mine twitter for sentiment (using the search API)... why would twitter reinvent the wheel?
Posted by: Roddy | February 19, 2009 at 07:14 PM
Nice analysis, Matthew - I'd also say that as part of the way that people use Twitter is to share links to interesting content/conversations elsewhere, the need to be analysing the networks around the Twitter streams is very important indeed.
Posted by: Antony Mayfield | February 20, 2009 at 03:16 AM
There's a reality of the value of the raw data to the marketplace, which I'll get to in a minute. Regardless, short messages may very well be harder to search, not easier. Here's some reasons why:
* For indexing purposes, it's not only the corpus of the text that matters, it's the number of objects. So a search architecture has to take that into account. It's a non-trivial problem; especially with the kind of volumes involved here. Not to mention that servers are going to be thrashed with reading/writing if anything is meant to be done real time. (Perhaps less so for batch analysis of course.)
* Next we have the nature of the messages themselves. Due to the 140 character nature, there's an increase in odd acronyms even beyond the brb, lol, etc. Perhaps synonym dictionaries could be produced, but the variability here seems extreme just based on anecdotal experience.
* Regarding sentiment mining, that's difficult enough in larger text, but may be harder in small text. Not for raw sentiment where the phrases are obvious. But sentiment analysis lags with regards to humor and sarcasm, which may need more markers to divine actual meaning.
These are solvable problems. And in the latter case, it might not matter that terribly much if some stuff gets missed as general trends can still be spotted easily enough. Personally, I feel confident someone(s) will work this out to some reasonable degree of satisfaction.
Next, as to the dollars. I can tell you from experience the industry does not value the raw data terribly highly for specific social media data streams. The value added analysis? Yes. The actual data? Not so much. This is because it's easy enough for a variety of people to crawl blogs, forums and so forth. And several do, though in some cases there's really only a couple of providers feeding data to the 60+ reputation monitoring companies.
Unless Twitter made itself the sole availability for the full data stream, they wouldn't be able to command that great a price. I'm just guesstimating based on past experience with other data types here, but MAYBE 1M / month if they sold to every rep services company out there. (Who would in turn add analysis and re-sell for much more.) That's decent money, but it's not 'to the moon' money. I could be wrong here. People are valuing this stuff more highly. But to really capitalize on it, there's no way they could just let anyone suck down all they could eat off the stream. Which means less open. Which is fine. They're entitled to do so.
We'll see!
Posted by: Scott Germaise | February 20, 2009 at 02:06 PM
Nice post. I have included this blog into my rss subscriptions. Very nicely put on data mining using social media. I honestly have not thought about it in this much detail but it makes sense and could be used as a great competitor intelligence tool!
Posted by: video Promotion | February 20, 2009 at 07:39 PM
I'm still working on it but Twitter data sure is tasty.. Lots of goodies !
Thanks for the run down'
Mike
www.wannadevelop.com
Posted by: wannadevelop.com | February 24, 2009 at 05:30 AM
There is a lot of potential in analyzing Tweets : Segmentation of users, Sentiment Analysis to name a few. In my experience, the fact that tweets are maximum 140 characters makes things easier in catching emerging trends but also in Text analysis.
Combining Information Extraction and Ontologies (using IE to mark Text and using NLP to insert information to an Ontological Setting) is the way to go although it requires considerable effort.
Posted by: Themos Kalafatis | March 03, 2009 at 05:12 PM