Thursday, January 13, 2011

what does hot dogging mean?

To hot dog is to do something to a computer which is unlocked and unattended. (Around here, we require that it be nondestructive, nonexternal (i.e. send no emails, edit no databases commit no code), and fast to fix.

We usually just switch the keyboard layout to Dvorak, and invert the screen (ctrl-option-command-8). It's simple, fast, and noticeable.

The purpose is to train in data safety- if you leave your computer unattended, anyone who wants to can look into your files. General etiquette strongly prescribes against looking other people's computers, but it's best to not leave things to chance when there is sensitive data involved- especially if you are not working surrounded by teammates who are all privy to the same set of secrets. 

Hamcrest

Hamcrest is a framework for creating matchers, allowing match rules to be defined declaratively. These matchers have uses in unit testing frameworks such as JUnit and jMock. Tutorial It is commonly used with JUnit.

Training Day 4


Today the last of our TWU students arrived, and the group spent some more time performing introductions. We had several sessions, including one on open source and being aware of legal issues. (We are encouraged to contribute to open source projects.)

Some more exotic ThoughtWorks history includes the tale of the ThoughtWorks RV, which sounds absolutely delightful but I understand that the coolness of it didn't make up for the lack of demand.

Future TWUers: the Royal Orchid serves delicious food. You will become spoiled. :) Also, their other facilites are convenient and well stocked, which you will probably be very grateful for at some or several points.

There is a small grocery store in H block which has a pharmacy in the back. I highly recommend the snacks they sell, as well as their selection of mosquito repellant products and their q-tips.

There was a live demo today about pair programming- specifically, how not to do it. It was hilarious and a very effective learning tool.

Future TWUers: do not underestimate the amount of preparation you should put into the history session.

Wednesday, January 12, 2011

Yammer

Is exclusive like facebook used to be- it's only for people with a company email address. I like the interface- it's simple and works well. Usage is growing but I'm not sure how it supplements or replaces other free-for-all discussion zones within the private company network.

I've been added to the TW bloglist. I've read the TW blog policy (thanks, Roopa!) and the part that says that I have to be interesting is only a comment at the bottom of the main document.

Feedback

My suggested draft of a communication from and to someone at a company (which is not TW or a client of TW):

I would say "If you look at your error message, it's caused by the fact that in the code you sent me you hard-coded the path of a file in your program to find a test file in your own system. This is not acceptable. It also implies that you haven't done testing with a significant test set, which is also not acceptable. Please tell me what work you plan to do on the two technical errors, and your thoughts on what I/Company can do to help you improve your quality of work on this project."
I think that my feedback is too harsh. I think if the "This is not acceptable" was taken out it would be better. However, the person being addressed has shown a lack of knowledge such that there is a need for very clear statements about what code practices are not best practices.

There's rather a lot more in the above vein, but this is the part that makes me most wonder what more I have to learn about feedback. 


TW Anthology

I learned about the TW Anthology today and checked it out on Amazon. Looks like they're a little expensive.

Training Day 3

A burn up chart keeps track of what the tasks are and in what stage of done they are. It is shared with the client, and it builds trust and helps to avoid surprises.

A lesson learned from the lego exercise: there was no user story for the body, but we had to build it in order to attach the legs to the head. Same for many parts of software. These are called nonfunctional requirements. 

In my opinion, Agile is just a zillion tiny waterfalls, with a customer on your shoulder.

As a warmup, we played charades, only the words were concepts from yesterday.
YAGNI - "you ain't gonna need it."
"every line of code is a libility."
Cycle: Estimate, plan, develop, showcase, retrospective.

The economic model of TW is based on where a $1 of revenue goes. There was a pi chart that had many parts. There are several types of overhead. Salary ia large part of total expenses. 

TW earns fees from clients. If the client is displeased with the work, or thinks that they will be displeased with the work partway through the project, they might not pay. As TWers, we have to do well enough at making good work and communicating with the client that this problem is kept to a minimum.

Fixed costs include rent and servers. TW treats employees as a fixed cost rather than a variable cost, which means that when times are bad TW doesn't just start firing people. "The biggest problem in this industry is getting good talent. Pushing them away (doesn't make sense)"
Operating expenses include the salaries of Legal and Recruiting. There are two kinds of overhead: overhead that goes towards any one country/office, and overhead that goes towards the company as a whole.

Types of deals in the consulting world: time and materials, fixed bid, and risk and reward (which is a combination of the above two, I think.) TW does mostly the first type. "TW charges more per hr than most other companies."

Risk and how it influences fixed price deals. Caps on time and expenses deals.

SOW = statement of work. It's a cost to fixed bids, and it's corrosive to the relationship...
The deal review process happens before TW decides to try to get a project(?): capability(can we do it), intangibles (new tech is good because it gives us an edge later), financial (how's the compensation).

Gross margin should be a certain number (but in the example we were shown, was below that)
On your first day on a contract, "what's in the contract?" (hardly anyone does this, but it might be a good idea?)

Differences between the UK and the US in how billing works- country customs and regulations(?)

Accurate timesheets confirm (or indicate a need for fixing) estimate quality.

A shadow is a non-charged consultant. It's a way to train a junior consultant and make them useful.

Blended rate

Wikileaks:
There will be a forum tor tech leaders and tech $ people at the Churchill in the Bay Area next Weds at 7pm their time, 8:30am our time. TW is sponsoring it. It's being broadcast live and we may be able to watch it if our trainers let us take time off during the work day to do that.

The boycotts of Wikileaks by various companies.

Lawrence Lessig wrote a review of the Social Network that goes into a case study about Nantucket Nectar and why the internet is a good thing in that context.

The subpoena of Twitter records in relation to Wikileaks.

Daniel Ellsberg, the guy who stole the Pentagon Papers, is 83 and still gets arrested at protests. This guy is badass.

Civil liberties group involving tech companies?


Tuesday, January 11, 2011

apartment internet speed

Last Result:
Download Speed: 499 kbps (62.4 KB/sec transfer rate)
Upload Speed: 481 kbps (60.1 KB/sec transfer rate)
Wed Jan 12 2011 07:45:50 GMT+0530 (IST)
from http://www.bandwidthplace.com/

And according to http://testinternetspeed.org/ I'm getting .46Mb down, which sounds pretty plausible.

My apartment has five balconies

Yesterday was awesome. My apartment here in India has five balconies, and there were cloves. Smoked a clove cigarette on a balcony in India, check. Had awesome conversations with fellow TWUers, check. Ate pizza in India, check. Had a study party, check. Got an epic series of bugbites which are interfering with my ability to type, check. Awake again at 6am when I don't want to be, check.

Training Day 2

Term: "geeks on a parachute" A few geeks who drop in and make win happen. (Usually a preparatory team to impress the client with a fast result so that the company may be thought of favorably in the future.

It's crucial to make good informal connections with clients so that you will be able to move past your differing technical opinions with good will- whereas if the technical argument is your only interaction, neither of you will feel connected to the other, or very happy about them.

"Get a Linkedin and connect with everyone in this room."

Here, we listen to a recounting of a cocksure young consultant's first two projects and the mistakes that we should avoid repeating. Lesson: don't interrupt clients when they're talking.

Complexities of engagement with the client:
- there is usually internal conflict in the client company.
- understand the politics behind the scenes.
- consultants have influence, not power. The goal is to have a lot of influence.

Book: Flawless Consulting (There are two books by this title on Amazon and I don't know which one he meant.)

In general, there are only 3 reasons that anyone hires a consulting company:
  1. Genuine desire for outside expertise (they give you power)
  2. Political (infighting)
  3. Dirty work (firing people. similar to political.) <- in general TW avoids this strongly
Here, we hear the story of how TW ended up with a certain large contract, and the mess that we had to deal with when it finally arrived at our door. It is long and complicated.

Next, we hear a story about negotiation at the highest levels about toxic individuals and project style.

"Nothing in large organizations happens very quickly."
"Most of the toughest problems we face are non-technical."

Next, we hear a story about a mobile app and the political situation which surrounded its creation and who could access its database.

Skills: trainable vs. non-trainable (can only gain through experience) 

Strategy- building influence through excellence. And then using the influence to affect goals.

We went over the TW categorization system for accounts, in brief. It'll make more sense when we're actually working on a project.

We discuss stereotypes about Indian culture using the example of a shopkeeper who keeps a customer waiting rather than telling him that the item he wants to buy is not in the shop. We must tell the customer "no" and "can't" when those things are true. No beating around the bush. A lot of times, what the client is asking for isn't what they want. Keep asking "why". If you have doubts in a client meeting i.e. something seems impossible or undesirable, TELL your fellow coworkers + leader. Never agree with someone just because they are above you. Also, when telling the client no, offer options and alternative courses of action.

We watch a video about TW and a satisfied TW customer. The satisfied customer still has complaints, and we analyze those. Quote: "choose to understand the craft."

Consultant vs. contractor: respected expert vs. body shop. TW avoids being used as a body shop unless we're doing it as a way to build the client's respect for us so we can have a good consulting contract.

We hear a funny story which warns us against accidental unprofessionalism, and also against lax security permissions on your computer.

What is a risk log? We went over it at a very high level. "A risk log helps to quantify risk." 

We did an exercise "how to put on my shoe" which taught us about how people can (willfully or through ignorance) misinterpret instructions. This uses what I like to call the duty of creative disobedience for the purposes of education- i.e. exploit every loophole in order to show how a thing can be improved.

We did a session called Roles on a Project, which was pretty interesting and elucidated many acronyms. 

We did an exercise involving making paper hats and submitting them to a trainer posing as a client for evaluation... the client valued different things and we got to figure out what they were by question-answer. 

Session on how to give good feedback: art critic exercise. There was much hilarity. Renaud's picture was the best. "I think you should make it more clear that this man is vomiting." and "Is that blood???"

thekua.com/atwork  is an excellent blog for consulting skills

Sumeet recommends books:

Sumeet recommends a lecture by Randy Pausch called The Last Lecture. It's about "achieving your dreams" and that sets off my fluff-o-meter but the clip he showed of it was pretty excellent.  

Written feedback is often unspecific and has adjective overload. But this is ok or at least not that bad as long as you give good verbal feedback.

Constructive feedback as the number of incidents increase: first talk about content, then about pattern, then about relationship.