Monday, January 31, 2011

Iteration 2, Mon

The logic and syntax of more involves shell scripts is a continual source of interest and intrigue to me. Specifically, an if-fi statement which determines whether a certain command returned an error and if so exiting the script flow, and if no error the if will continue with the install script. The logic behind double square brackets in conditional statements in bash is that they make a wildcard do "shell globbing" which I interpret as meaning that it is a true wildcard as they are usually used in bash rather than a wildcard limited by the local directory or logic function that they are enclosed in.

I spent some time reading about programming languages which use vocabularies other than English. Not everyone can code in english, even if the ASCII set is generally intolerant of the umlaut and accent marks of the world. To say nothing of ideograms.

I spent a little time with ~/.gitconfig and ctrl-comma to make my environment visually coherent. The standard aliases are also useful.
[alias]
st = status
ci = commit
co = checkout
br = branch

You make a symlink (which doesn't really exist in Windows) using ln -s origin destination and it is extremely useful, especially when trying to get all of the correct files into version control when one of them "has" to be in a certain directory which should not be under version control. I learned about how to copy a path using pwd | pbcopy and also the rules of meaning behind . .. / and ./

/absolute path
./path relative to current director
. local directory
.. out one dir (closer to root) 
Previously, I knew many correct usages but not the underlying syntax logic. 


I believe that it is currently impossible for a program to analyze code well enough that it could autotag a class or project with tags representing certain code technique chunks which are used in it, like the Observer design pattern or a for loop which iterates over an array in order to concatenate all the contents of the array into one long string, or a do while loop which iterates through a list to add the sums of all the odd numbers in it.

The purpose of this would be to be able to search your own (or communal) codebase for certain code chunks. This relates to the "I did that in a previous project but I don't currently remember how and googling this has a low cost-reward ratio" problem which I believe is somewhat common. This is kind of like a code snippet search system, except that the search is secondary because the identification of the purpose-driven techniques is the main point of the automation. Again, I don't think this currently exists or is even implementable, but if I'm wrong I will be very interested in the manner of the solution.

For future TWUers:
When you must order ice cream to clear the ice cream meter, keep in mind that the fruit Chikoo is very tasty and you can order ice cream flavored with it to B2 from a place called Natural.

Friday, January 28, 2011

Iteration 1, Fri

Today I spent a large amount of the time discussing analytic paths and the site visit yesterday rather than coding/configuring/scripting.

Git is a complicated beast which enables many fantastic data exchanges when you use its higher level commands and setting modifiers. I have found no tutorials particularly suited to my usage needs, although this one was informative.

I installed and spent some time using Wordpress today. Also, I learned some things about path errors in OSX and thus about .bashrc and .bash_profile.  

Thursday, January 27, 2011

Iteration 1, Thurs


Wednesday was Republic Day in India, which is a national holiday. Thursday, after the morning standup meeting, work continued on iteration 1. Tools I used included XML for Ant, bash scripts to automate pre-commit testing, git for version control, and Go.

In the afternoon, some team members participated in a site visit. Discussions with the client about terminology, logic structure, and priorities continued apace.

After the site visit, we had the weekly Pecha Kucha presentation night. Presentation topics included comparative education quality and its implications for the rise and fall of nations on the global stage, the history of Bangalore, inspirational quotes from Fight Club, the island Noronha, investing, Latin, and the Manneken Pis statue. 

Monday, January 24, 2011

TWU learning journal (project day 2) Tues

Today, donations for the client are up through Ammado. This is major value delivered.

The main representatives of our client visited us at the office today to observe the process, give feedback, and to discuss priorities and next steps.

In Go, you make a pipeline by writing it into existence in an XML file. In a pipeline, there are stages. In a stage, there are jobs. Jobs have input, and produce output files which are known as artifacts and which following jobs and stages can use as inputs. Agents are machines on which your build will run. Jobs can be run in parallel.

Power outages are not uncommon in most of India and thus our office has good protections and backups which prevent productivity disruption.

I worked with automating processes using shell scripts. I have made great strides with using IntelliJ efficiently. I am learning about git, especially the usefulness of git rebase. Also, chmod, which is a bash command. To call TextMate from the commandline, use "mate filename"

A .war file is a type of .jar file which is a type of .zip which is self contained i.e. has everything inside of it that everything inside of it requires to run.

In our project, an enhancement to a story should be a new story card.

You can write unit tests for XML. I wonder if this is a good idea for our project.

For the future TWUers: a good food delivery place near the office is
called Healthy Affairs. Phone# 9900690600



TWU learning journal (project day 1) Mon


Sonar is for code metrics, and is usually installed on a build server. It requires a database as well as access to a code repository. By default it uses localhost:9000.

A spike is a (usually timeboxed) experimental activity (usually by developers) to calibrate time estimates about new technology by gaining experience with that technology.

I am currently unable to find mentions of using Sonar with Apache Buildr.

Future TWUers: the food at the office is quite good, although it can be difficult to get used to if you are accustomed to a significantly divergent foodgroup norm. It is possible to order out for lunch either in a group or individually. In the pantries, you will find juice, soda pop, milk, bread, and snack items like chips and popcorn, as well as quite nice coffeemakers.

Sunday, January 23, 2011

Weekend in Bangalore

This weekend, many TWUers flew to Goa to enjoy the beach. In Bangalore, there was a political protest which caused the majority of shops to be closed until the evening.

Future TWUers: The Java cafe is a sit-down but informal 24hr resturant in G block which has passable hot food. Service may be slow.

Total Mall and Oasis Mall are both within a short rickshaw ride of Diamond, and both will supply your grocery and clothing needs more than adequately.

The Sunday brunch buffet at the Citrus restaurant in the Leela Palace is elegant and has an enormous selection of delicacies and deserts to taste, including gourmet cheese and lots of meat as well as many veg dishes. The cost is rather high but I consider the experience more than worth the cost. The gardens and architecture are beautiful.

Elsewhere in the Leela there is a shopping mall which contains a bookstore that also sells board games and nerf guns.

Friday, January 21, 2011

Training day 10 - Fri



The tech stack for the upcoming project is not unusually long and it's quite interesting. This is my first introduction to Jetty, Log4J, and Hibernate.

Today I installed Twist for the first time and learned some advanced user ways to use Mingle.   

Some types of testing include browser compatibility, security, performance, variety of users, usability.

Open space talks today included: our tech stack, the complexities behind floating point numbers, and origami. 

We've been experimenting with a variety of different ways to perform retrospectives, including writing our thoughts/concerns/goals on post-it notes and sticking them to various types of cartesian coordinate graphs drawn on whiteboards. 

Our first TWU pub night was very nice. The pub quiz was a great rendition of its sort, and TWUers had much fun with nerf darts, balloons, rubix cubes, and the hotel swimming pool. Later in the evening some us played with remote control helicopters bought at the toy store in Oasis Mall. 

Thursday, January 20, 2011

Training day 9 - Thurs


Stretching the mind to include not only new tools but new concepts involves a period of confusion as the knowledge is first acquired and then internalized and merged with the existing knowledge base.

Hibernate can create tables from your object setup. Presentation on Hibernate

A build should be crisp: complete, repeatable, informative, schedulable, portable.

The conventions for a project filetree are based on the need for structuring things so that the build won't include the source code or the tests.

New terminology: smoke tests

Configuration file discrepancies are the most common cause of "but it works on my machine!"

Today I extended my knowledge of MVC, SPring, java servelets and their usage as dispatcher servelets, some programming patterns including Observer, Controller, and Filter, IntelliJ keyboard shortcuts, and JSTL

Recommended books:


Wednesday, January 19, 2011

Training Day 8 - Thurs


Composition is preferred over inheritance because having a reference to another object rather than inheriting from the other object increases the amount of the flexibility in the system, which is inherently desirable for systems which will need to be modified. 
An important part of pair programming is having a mental map of each other's sentence structure and idiomatic phrases. This is not a cross-cultural problem so much as it is a problem experienced by people who do not yet share a common set of descriptors for the problems that work brings to them. 

Estimating project stories is an exercise which relies on relative measurements rather than absolutes, because absolutes (i.e. time taken per "point") will be discovered in the process of the first iteration. Also, points per unit of time are roughly equivalent across different groups of developers if and only if a "point" is understood to be like a unit of currency. In other words, I can buy a pair of sandals for Rs300 or for USD $6 but they still cost the same amount. In my opinion, this also has parallels in "absolute time" as it is measured across systems undergoing relativistic affects.  

The good citizen principle by Dan North discusses reasons why checking inputs that are passed internally within a program rather than in from user input is usually unnecessary.  

Mockito makes provisions for a test which is expected to throw an exception. @Test(expected=IndexOutOfBoundsException.class) delights me with its implications for testing sad paths. 

DBDeploy and types of test doubles came up today. Also, Junit is more complex than I knew about, and a little reading goes a long ways.

Future TWUers: 
  • There is a small object somewhat like an air freshener that plugs into a wall socket and glows orange. If you are having a problem with bug bites, stop by the H-block corner store (or N-block may have them also), buy one, and put it in your bedroom. I believe it costs ~300Rs and the price is absolutely worth the reward. 
  • In India, "sick" means "nasty" and "ill" means "sick" i.e. if you call someone sick, you're calling them disgusting. In general, everyone here is very understanding about nomenclature misunderstandings, and they're usually entertaining rather than offensive. "elevator" vs "lift" in the USA vs the UK appears to be the difference between a part of an airplane, and what one does to freeweight exercise equipment.
The internet tells me that somewhere in the world there are companies which have all of their code in a database, which they access with a thin interpretive layer. This is apparently an enormously bad idea because of its effects on testing, maintainability, and speed. I don't know how anyone thought that such a thing would be a good idea in the first place... and I'm curious. The way to refactor this codebase is to slowly add test coverage, and then refactor (in small chunks, starting with the most-used and -modified parts of the codebase) but first they have to start by making and watching a giant logfile to understand the current/expected/default behavior.

This was the first week of Pecha Kucha presentations, and some of the topics included constructive failure, clubs, the concept of "chaordic", science fiction, and saving the tigers. 

Tuesday, January 18, 2011

7

Often, presentations require slides, and often slides require pictures without copyright restrictions. FlickrCC, coolIris, SXC, and EveryStockPhoto.


Monday, January 17, 2011

Training Day 6


Today was my first day at the ThoughtWorks Bangalore 2 office. The people seem very nice here. We have floors 2-4. The second floor is where the snack room is, and the 4th floor (open to the air) is where lunch and breakfast are served, and there are games tables if you want to play pingpong. Everywhere in between is work space- classy, clean, well-supplied work space.

The first day in a new office (for new employees, no less) can be expected to be a sort of shaking-down period, wherein everyone loses their way and their train of thought sporadically.

Future TWUers: Between B2 and Diamond, there is a mall which contains a grocery store called Spar, which is reputed to have lots of "international" food if you're homesick. Although you can get popcorn, potato chips, and soda pretty much everywhere. A rickshaw ride from Spar to Diamond should be about 40Rs.

When typing up a retrospective, just put down the action points and the names of the people responsible for them.

Homebrew is a great tool for Mac users. It's roughly equivalent to apt-get for *nix.

TWU: week 2, day 1 (dev room)


The controller (in MVC) translates user actions into business logic actions. Keep controllers small, and be consistent in how you split them up.

The god object smell is too many responsibilities in one object.

A book that we (and you) should absolutely read as soon as possible: Working With Legacy Code by Michael Feathers.  We also discussed books by Kent Beck, which are also recommended reading.

A region in C# is for use with Visual Studio to collapse and expand views of code.

The refactor called Sprout Class is to extract a class out of an enormous file of code, so you can test the little extracted class. Future TWUers: minor refactorings like this will become part of your thinking, rather than a separate concept.

"Test-friendlies" are collaborators that you can trust and directly instantiate. Encapsulation promotes maintainability. I asked a question about YAIGNO vs elegance and where on the scale one should fall. A trainer answered that "This is a debate that you'll be having with yourself for the rest of your career." So just keep that in mind.

It turns out that "Try to make the code represent the domain that you're writing in" means "When you go to the codebase, you should see the same terms that the client uses." I didn't know in what way the code should represent the domain! I thought that he meant in structure... but now that I know that he meant key terms, it makes more sense. This is different from domain-specific language even though the term sounds similar.

Us TWUers may have the honor of being able to read (and give feedback on) a chapter on encapsulation that Jim is submitting to the next TW Anthology.

We did a short pair-programming exercise on implementing the class Rectangle, and another one on implementing the class Chance and making its not() work. This is basic stuff, but it was more to teach us about pair programming and understanding logic flow and requirements than anything else. I think the assignment did its job admirably.

Packages and naming of packages: I somehow exited university with no grasp of how or why. Now I know both, at least somewhat.

"If you use inheritance, use polymorphism." "Inheritance is very costly, very expensive. Make sure that you're getting something for it."

Value objects are: mutable, easier than immutable, passed by value, and provide seams for testability. Tomorrow we learn about source code management.

Identity/compare functions should be reflexive, transitive, symmetric, and consistent. (If they aren't, is it on purpose?)

If you use Visual Studio, you will probably benefit from using the Resharper plugin.

Future TWUers:
You will want a notebook during the first two weeks of TWU. You can find them in the red cabinet near the big printer in B1, or just ask around.
Also, you will rapidly become a power user of IntelliJ, but the learning curve (for both program structure, and keybindings) is steep and may feel unpleasant. Give in to the power of option-shift-A for accessing the refactoring menu. Resist the urge to navigate by mouse. Ctrl-B will go to the originator of the variable/method/class which you currently have highlighted. To pull up the rename menu, use shift-F6. Avoid renaming things without the rename menu if they are in wide usage.
Play around with git and svn a bit. You can make yourself a github repository and experiment with it, then delete it if you want. If you are assigned a PC by 8600, strongly consider getting it dual-booting some form of *NIX, and/or run a virtual machine, depending on your preferences. This will affect your security arrangements but it can be worked around- just ask the help desk people; they're excellent. 

I am having some difficulty adjusting to using a Mac, but I know it'll be worth it.

"If you don't know where to put behavior, maybe you need another class." <- this was very helpful to me. Also, "Don't expose size unless you have to; use iterator." (if you're using size to iterate over something)

Sonar makes reports on metrics of code.  It is very useful for getting an overview of a codebase too large to read ("thousands of classes"). In smaller codebases, it help you monitor your test coverage. You want to install Sonar on your ci (checkin) server in such a way that when someone pushes code to your repository, your CI server will re-build the project and then trigger Sonar to run.

   * problem : our fix (in the practice codebase)
   * loop doing too many things : split loop
   * feature envy : move method
   * too many parameters : extract class (created History class)
   * magic numbers : constants i.e. express intent by using variable names
   * temporary variables : inline
   * violating law of Demeter : create getter in Movie for title instead of calling though

Law of Demeter - only talk to your immediate neighbor. too many calls chained is called a train wreck.


minGW, cygwin, and puTTy are all *nix commandline emulators. Of the three, I prefer puTTy for its UI, but they're all pretty equivalent.

The trainers recommend that analysts should look into software which creates wireframes quickly and easily, rather than mocking them up in Illustrator. For these things, you need intermediate steps or the client will mistake a picture of the thing for the final object.

There's a google app called browsersize which helps you test your webpage in different browsers and monitor sizes etc so you can see where the fold goes.

Sunday, January 16, 2011

"Where I grew up, speaking English would get you teased."

Sitting around after hours, we were discussing TWU-related difficulties. "I don't understand 50% of what you say. Everything is out of context." And here I thought that my diction was passable... "100% of it I don't understand." (About understanding an Irish accent)

I also currently have an auditory comprehension problem with Indian accents. Trying to understand someone who is speaking quickly will make me say "I'm sorry, can you say that again?" repeatedly. Which is bad, because eventually the other person gets fed up and says "Never mind, it wasn't that important anyway!"

Discussing the differences in social dynamics, it seems that in Indian culture (according to one of my teammates) "The person with the laziest opinion wins," and "usually no one goes anywhere." Also, it's considered rude to split the group, when there is a group hanging out together. (?)

We were discussing the service culture and how I was surprised and displeased by some aspects of it, and the phrase "It's like heaven on earth for us." was spoken- meaning that Diamond District feels very luxurious for some of the students.

I also learned for the first time about the Hofstede Index (about how cultures value various person attributes) and where India falls on it. 

Saturday, January 15, 2011

the Undiscovered Country (is next week)

For a pile of 22 recent college grads, only 2 of whom have ever been on a client project before, knowing that next week we get to Actually Do Something is a little exciting, like ziplining for the first time is a little exciting. "We're going to push you off this cliff," they say, "but it's okay because you're wearing a harness and the harness is attached to a metal rope." The trainers are the harness, the rope is TW, and the TWU students are, collectively, the lucky schmuck who's getting pushed off the cliff. People do this for fun, you know.

It's possible to learn while performing mindless tasks, if the material upon which you are performing the mindless task contains information which is new to you.

Future TWUers: here is a short list of cultural differences.

  •  "take a click" = take a picture
  • "jumper" = sweater (any kind)
  • Waiters at classy restaurants may argue with you and try to get you to order more food or more expensive food, or appetizers when all you want is a main course. Just be firm and after two or three rounds you can have your way.
  • Bars in Bangalore close at 11:30pm. You will be asked to leave by 12pm. Liquor stores close at 10, I believe.
  • At a classy restaurant, you will get more table service than is the Western norm. They may try to serve you from the main dishes in the middle of the table when you're eating "family-style."
  • When you go through a buffet line, you will still only rarely be able to serve yourself.

The title of this is from the Star Trek VI: The Undiscovered Country, which is in turn a quote from Shakespeare. "The undiscovered country from whose bourn (boundary) no traveller returns."

scattered showers of TWU predicted for this evening

Central organization of assignments will be much easier when we have a story wall. At the moment, everyone is evolving their own system.

Exploratory testing and black box testing are similar but not the same. 

TWU homework continues

Having developers write user stories is enormously useful. It changes your perspective.

Future TWUers: you will have a housekeeper. I personally find this difficult to get used to. However, he does do the dishes and bring you an ironing board when you request one. 

Friday, January 14, 2011

Service culture: housekeeping

I feel that Diamond District could be much improved by including "Do not disturb" signs with the apartments.

Future TWUers: that strange switch by the door that doesn't appear to do anything controls the power flow to your doorbell. 

making popcorn in India

It takes four to five minutes for most microwaves in Bangalore to pop a bag of popcorn. Watch it closely, because it varies.

I've noticed that ice cream is a luxury here moreso than it is in the US- perhaps because of the power outages? It would be difficult to keep ice cream from melting here. However, I believe that it can be delivered. 

comments broken? && PowerPoint on Mac

I was told today that someone left comments on my blog, but I checked and there are none that I can see. So I believe that google reader doesn't interface completely with Blogger.

PowerPoint on Mac is the most powerful presentation tool I have ever used. It is glorious. I was playing in a sandbox before. A small sandbox with no toys. And then someone gave me a water park. I think I'm beginning to understand how Sumeet does the ridiculously awesome things with slides that he does. I'm doing my pecha kucha on science fiction.

Learning journal (training day 5)


Future TWUers: many people travel in India outside of Bangalore on weekends. Buy your tickets a minimum of two weeks in advance, or ticket prices rise dramatically. Some stay in Bangalore and find other entertainments. The bar Geoffery's at the Royal Orchid is just next door, and has prices roughly comparable to what you'd find in a neighborhood bar in Chicago.

I should post the retrospective notes (perhaps using this? http://retro.play.railsplayground.net/)

Reticular Activating Syndrome is concept within neurolinguistic programming, which we had an open space on today. 

Training Day 5

Recap of Thursday last session: TDD, refactoring, hot keys, ping pong, unit test, JUnit, hamcrest, statics, methods which are there only so you can test them (are bad)

For those of us who are completely done with the curriculum, we can help with the setup for the project. Stuff like setting up Go, the repository, etc.

I learned that UK Macs have a slightly different key layout- just enough to screw up my muscle memory.

It is very important that we have a deep understanding of what null pointers are and are not, because interpreting error messages is a large percentage of what one does. 

Session on retrospectives:
We talked about the "safety check" exercise, where everyone puts a number from 1-5 (5 is comfortable, 1 is on the verge of setting the place on fire?) on a postit, crumples it, and someone comes around with a bag and collects them anonymously. Uncrumple them and put them on the board and see what the group is feeling..

Sometimes the safety exercise is followed by an anonymous round of "what would make you feel more safe?" (Sometimes the answer is for the senior architect to leave the room... or for the client to leave... etc and sometimes the recommendations are followed if the facilitator judges that that would be a good idea)

Make sure that your retrospection makes action items! Also that there are specific individuals' names on them- ownership is essential. Group ownership does not work. 

One of our number has a rather bad toothache, unfortunately. Current resolution is painkillers and soon a dentist. 

Future TWUers: consider making an excel spreadsheep of weekend trips, with columns for cost, organizer, activities, and dates.

We had an open space that included discussing several TED talks and their value as presentations. 

Thursday, January 13, 2011

Why static methods and variables complicate everything

My most useful sources for this were:
rancorbeast
blog by misko
blog by jagregory

Unit testing depends on being able to set the variables which part of your program uses, and then see whether the part of your program which you're testing uses them correctly. But if what you're testing requires manipulating or reading static variables, the test cannot be written efficiently, because the static variables are static and hold their value for the entire run of the program. Because having static variables makes unit testing difficult or impossible, it is less likely that a programmer who uses static variables will use unit tests. This implies that their test may break without the programmer knowing about it, and that the programmer might not follow other best practices, since they don't follow the one about testing.

Static methods make code harder to change, because other parts of the code may rely on the static methods being static. This coupling makes your design difficult to change. Having a design that is easy to change (refactor) is good, because then you can refactor it to make it better. Static methods imply the presence or incoming presence of bad design because the programmer has not given thought to making the program easy to add functionality to, and to refactor. If refactoring and/or added functionality is tried in the future, the code may begin to accumulate workarounds to the static methods. This will make the code longer and more complicated than it needs to be.

Static variables make thread safety almost impossible to achieve because they are a shared state, which is almost always bad. Static variables, and anything they access, can be accessed concurrently by different threads unless you take pains to synchronize access to them. While you can guard them, if you have too many of them your design is harder to validate because the locking will be more complicated. If there are enough of them, then performance will suffer because of different parts of the program waiting for other parts of it to wait for locking to resolve.

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.



History of TW assignment.

How did TWU get its current name? See the long below quote. 

Make sure it doesn't scare off immigration/border protection officers! We got into trouble when it was called "Global Boot Camp" because immigration officers thought that ThoughtWorks was sending people off to India to train with some sort of para-military organization. http://twuname.ideascale.com/ (check out the comments for more info)
The original name of the program was "Global Boot Camp", something most people felt was good and described how new hires from college would be trained once they joined TW. "Global Boot Camp" was also catchy; we could use it when talking to our customers, and even they started asking if we could run boot camps for them.
Unfortunately, this name doesn't work so well when it comes to crossing borders. Everyone involved had to be instructed to use "technical training course" when going through immigration at airports and border crossings, so we wouldn't cause any alarm. Apparently, that still didn't matter, because a ThoughtWorker unrelated to the GBC was stopped at an airport and asked "what is this 'Global Boot Camp' thing all about?"
In the search of a new name that still sounded catchy but had less of a militant edge, we through around a few names for the next round of training. Some of those that were rejected included the following:
"ThoughtLearning" (according to our brand guidelines, we can't break up ThoughtWorks)
"Global Thought Learning"
"Technical Training Course"
"ThoughtWorks Center of Excellence"
"Neville Singham's School for the Gifted" (Gary Larson fans united around this one)
"[ThoughtWorks.edu]" (couldn't get the domain)
So, we ended up with "ThoughtWorks University." We're not trying to be smart-alecky nor are we full of ourselves. We just needed to find a name we could use consistently to throw to the recruits, regional invitation letters, t-shirts and the corporate website.
We want something that rolls of the tongue and is easy to understand. If you want a better name, please suggest one soon.
https://confluence.wazokazi.com/display/GBC/About+the+Name

Monday, January 10, 2011

OpenSpace on Arduino, soldering, and makerbots (possibly with practical demonstrations)

What is (bring mine)
  • soldering
    - flux
    - lead-free or notlead free
  • an Arduino
    Show it off. Microcontroller. It has its own dev language.
  • a makerbot? (I only wish that I had one of these)
    - prints plastic, can make shapes that modern manufacturing can only do in many steps
    - prototyping
    - ideally self-replicating
  • hackerspaces
    - there's one in pretty much every city, and usually several
    - PS1 in Chicago
    - Janga in Bangalore http://www.jaaga.in/bangalore-hackerspace
What would you do with one?
  • Everyone say an idea
And then we will discuss... I expect it to be over relatively quickly (especially considering that not that many people are signed up for it...)

defeating jet lag

I slept during the normal hours of the night! Woke up to my alarm at 7:30 feeling triumphant but groggy. Now we're at the Orchid, eating breakfast... and it turns out that when I take both my wake-me-up pill and the weekly malaria pill at the same time- even if I take them both with food like they're supposed to be- the feeling it creates is to say the least interesting. I wonder how well I can learn while under the influence of pills which reportedly give mild psychoactive side effects.

The ill appears to have vanished for me and several other TWUers, which is excellent. I hope it stays away!

Service culture

The nice man in the uniform at the buffet ladles your soup for you, and the nice man in the uniform by the coffee pours that for you, and asks you how much milk you want, and if you add sugar he uses your spoon to mix it in for you. And there's full waiter used-plate-pick-up service during/after the buffet meal. I thought that the point of a buffet was that it was self-serve, lol.

Anyway, just another culture difference

My first post to the main forum!

Was totally inspired by Rrodrigo's courage in going first. I mean, I just sent an email to the entire company (or at least the ones who don't filter out the townhall mailing list) ...that's like 1800 people and includes people whose books I've bought and read. It's exciting.

I was replying to a thread about diversity in hiring, i.e. quotas vs. goals, with a side of how to get the pool of interviewees to be more diverse.


On a related note to diversity recruiting, I also am currently at TWU (dev, Chicago office) and I am interested in the small and diminishing presence of women in IT and what can be done to redirect the trends towards a ratio which more closely resembles parity.

My favorite document on the topic is a (longish) howto by Val Henson about how to avoid driving female Linux users out of groups, and how to find more and retain them. I believe that his points are very generalizable to the IT industry as a whole. http://tldp.org/HOWTO/Encourage-Women-Linux-HOWTO/

When it comes to interviewee's backgrounds in computer science, I too am one of those who came to the field from an unexpected direction. I was in the Humanities department during my undergraduate career, and programming didn't gain me anything in my particular academic or social circles. I think that, as a solution, "lowering the bar" is worse than the problem because it gives fuel to the cultural theory that women in IT are not as skilled as their male counterparts.

I believe that mentoring of female students by women in the IT industry gives good result percentage per time invested on the part of the mentor. Mentoring needs to start with students before they enter college, where they have already begun to choose their specialties. In fact, I think that late middle school (7th and 8th grades) may be the ideal start time for introducing the specific field and attributes of our field to students.

Random notes

Future TWUers: the 24-hour cafe in G-block named Java is a sit-down place but you can get take-out. Take-out is an extra 7Rs. A box of white rice is 35R - jut under $1USD.

Bug bites are a perpetual and severe annoyance.

One of the door greeting guys at the Royal Orchid has an amazingly excellent hat, and shook everyone's hand as they came in the door. :)

Cultural differences regarding complementing clothing continue to confuse me. 

ponderings on professionalism

What are traits of professionalism? Here's a short list of my current learnings.
  • staying late if the situation requires it
  • having a passion for your job
  • making sure things get done properly
  • everything that falls under customer commitment- not just for the hours or the money but because you're proud of what you do
  • showing up on time
  • if they ask for something and you think it's not the best thing to do, tell them no, no matter what. You could do it and just pocket the money, but don't.

Sunday, January 9, 2011

Training Day 1




Future TWUers: the "ice cream list" means that the people on the list buy us all ice cream at the end of the week. Things that will get you onto it: being late, writing emails with poor spelling, cell phone during work, sitting all with people from your office (during sessions, not when actually working). 

I hear that TW has a service where they can do our taxes if we want them to. I wonder how that works... 

Today we did something called a fishbowl, where there are two rings of chairs, and the ring on the inside is 4 or 5 people with one empty chair, and only people in the middle are allowed to talk. And anyone who wants to from the outside circle can come sit in the empty chair, but then someone from the inside has to get up and leave. And only people who have spoken already are allowed to leave the inner circle for the outer circle! It was really fun.

The fishbowl and our independent lunch discussions were about some value studies of value issues within TW: recruiting women, client:TWer environment issues, management issues, and the truck factor + salary differences between countries.

"There is no better way to get people hooked in [to our company] than to give them what they want." (talking about the fact that TW supports employee entrepreneurial efforts)

Geek nights- each office has basically a study party for people's independent projects. Frequency varies by office
PM groups- usergroups for project managers where non-TW people come in and hang out and talk about best practices.

opensource.thoughtworks.com Paul Hamitt is the go-to guy for questions about open source at TW. /

Quotes about leaders:
"TW pushes its leaders quite a bit"
"That's because I'm hard on my leaders."
Reminds me of the V for Vendetta quote about how a government should be afraid of its people.

Apparently when Roy comes into the TW offices (he visits all of them to make sure they're going well) he talks to the lowest person on the ladder and if they're happy than it's probably a happy office. 

On a completely unrelated note, I think that India should buy thousands of these and put them in Poo River.  

TWUer: "What makes you tick?"
Me: "Large amounts of obstinance."

As part of a diversity discussion, we had a discussion about Chuckecheese. :)

The "truck factor" is how many people on a project can be run over by a truck before the project grinds to a halt. 

Pro tip: the trainers say to order takeout chinese food from "Mainland China" (although possibly only after your stomach has adjusted to the food!

Is there any country with a large % of women in tech? (According to one of the Brazil TWUers, Brazil is even lower % than the USA(?))

One of the things that the company considers best practice (Google aslo does this!) is to have a woman or a member of a minoity group or a person in a very different age cohort in on at least one round of an interview, to check the interviewee for obvious negative reactions which would imply that they would be unemployable by a global company.

Prezi is a cool way to give presentations. 

"technology stack" means what platforms and tools you will be using to develop on a particular project.

The last several TWU teams created an internal application called Chronicle.

At the very beginning of the morning, we did:
  • facts exercise where we have to fun around the room asking everyone whether particular obscure facts that our trainers pulled from facebook are true.
  • put up anonymous postits about our hopes and concerns on a board on the wall
  • listened to a presentation that covered:
    knowing the big picture concept vs. knowing the tools (tools can be looked up; big pictures can't)
    fail fast to reach perfection iteratively (less total effort)
    TWU is a proving ground: people have washed out before and you could do it now. We'll be graded on:
    - tech skills
    - consulting skills (how well we interface with a client and our team)
    - people skills (are you a good person to work with?)
    - drive (do you learn fast and enthusiastically?)
  • Over 4 weeks, we will have 160 hours of practice on a project to teach us what to do when we get assigned to something billable.
I want to keep a chart of who gets sick and when... just for statistical purposes... but eh, it might be difficult.

Values are things that outweigh practicality. (my definition)

Origin of the name TWU: used to be TW Global Boot Camp. Also there used to be "lateral immersion" for two weeks...?

The TW Director of Social Responsibility has some cool projects. I want more details.

Professionalism (part deux)

http://davidmaister.com/search/ > "professionalism" > read everything

But if I do that right now I'll be exhausted at work today, so it has to wait.

I like this guy's writing style.

Sleepless in Bangalore

The ill seems to have receded for now, but I went to sleep so early that I woke up just past 4am. I wonder whether I will ever get my sleep schedule regularized. Going by the activity on the mail.thoughtworks chat list, and the lights that are on under my flatmates' doors, I don't think I'm the only one with this problem.

I do like having a quiet hour to myself to upload photos and catch up on blogs... maybe this isn't so bad.

The Amazing Race

Today we met up at 8:15 and took a bus down the road to a large temple of Shiva. We took many pictures. Then we went to a park and ate breakfast sandwiches in boxes. i also had lychee juice, which was tasty but had an odd aftertaste.

We walked a little ways further into the park and played some games.
  1. Bag and skipping game (teammates put a bag on their feet, hop to the skipping rope, then skip to a marker, then run back- it's a type of relay race, with the winner being the team that completes the course the fastest.)

  2. Balloon game (inflate as many balloons as you can and tie them to one of your teammates before the time limit, then we all stand in a circle and the balloon people try to crush each others balloons for a minute... the team whose gladiator has the most balloons left at the end of the game wins!

  3. Was there a third one? I forget.

  4. The Amazing Race, which was actually pretty fun. Teams are given a starting clue which will lead them to somewhere on MG road, and then into fancy shops at which the front desk has another envelope for their team. We went to five shops I think, and also solved all the clues for what to buy at roadside stands.

    At one point we piled all 5 of us into one rickshaw! (I hear that this is pretty normal) We depended very heavily on the Indian TWUers to help us find stores. I had some trouble at first because running did not go well... but my team actually won, thanks to our amazing teammates! Go Red Rhinos. :)

    The last lue led us to a restaurant at which we ate a delicious buffet meal. Sadly, I was feeling badly in the stomach (so was another guy) and I didn't partake heavily... I tried to try one of everything, and I accidentally ate a pickle (which is not recommended and didn't go well!) The desert was very good though- a kind of rice and cinnamon pudding. There was also papaya and light whipped-cream-texture ice cream.
We got back to Diamond around 4pm. I think that most of us went to our rooms to shower and rest; it was a very exertion-y day. :)

Tomorrow we meet at the Orchid next door! (I can see it from my balcony.) 9am class starts... 8:30 breakfast. Mmmm, breakfast. I hope there's coffee.

I'm feeling a little ill. It's kind of like the feeling when you drink on an empty stomach, except I only feel it when I eat or drink something. :/

Saturday, January 8, 2011

future TWUers:

1. Indian driving is not scary to me. It is similar to how some of my friends drive. Some facts:
- the cars get very close to each other, but never intersect. you can count on this.
- they honk before they overtake from behind
- they honk when they're coming up to an intersection
- it's kind of like in Chicago where you're required to honk when exiting an alley so that oncoming traffic knows that you're there
- when you cross the street, it;s best to do it in a group. The drivers can see that you are waking towards their path. People do this every day, and they will let you by. All road-crossing is a giant game of chicken, and even the timid (me) learn how to play fairly well in under a day or so.


2. I have no proof for this and I haven't run scientific trials, but I strongly suspect that the reason I got a giant pile of bugbites those two days was that I was using American soap that I brought with me. Other current TWUers who wear cologne also have bugbite problems. Bring your own soap just in case, but only use it if there is no soap waiting for you in your room. Buy soap in the N block grocery. Buy anything that looks local to India and you should be good.

3. The grocery store is in N block basement. Go downstairs in N and just walk around. It looks scary and the ceiling is very low, but it is a safe place and the prices are reasonable. The entrance is not very easy to see, but aim towards the light and wander. Bring your own bag/backpack if at all possible so that you will not have to buy a plastic bag (5R and also some disdain - there is a large saign saying "avoid plastic bags!" (they are bad for the environment) It is open form roughly 8am to 9pm.

There is an all-night cafe in G building. Walk into the building and turn, and it should be right there...
Somewhere there is a pharmacy but I haven't found it yet. I think it's under N building.

3. At a resturaunt, they will bring you bottled water, and the cap should be sealed. That click of the cap pulling open and snapping the little plastic partitions that hold it on is yur safety sign. Unless your waterbottle does that in your hearing, don't drink from it. Also, avoid ice. You have no way of knowing what water was used to make the ice. It is probably not safe water.

4. At the B1 office, meals work like so: they're in the back pantry (all the way back and to the right after you walk in the front door after the security desk on the 2nd floor)_ you take a plate and go through the buffet line putting things on it. It;s considered acceptable to skip the line if you only want something from the end of it (but I haven't seen many do it?). When you're done eating, scrape your plate off into the trash can (behind the long table that had all the food on it) marked food scraps. Then give your plate a pre-rinse in the sink and put it in the stack for the professional dishwashers. Ditto for forks, cups, etc. If you leave any plates/cups in the office, eventually a man in a maroon polo (the catering staff) will come around and pick it up off your desk.

5, I strongly recommend that you never use a public toilet. They are the epitome of filth. If you need one badly enough to approach it despite the smell, I can only say good luck to you. Try to use a bathroom in a resturaunt if you can find one. Walk in, order something if you have time or possibly pass the waiter a bill if you don't, and aim for the loo. You may want to develop a habit of never using a toilet before proving that you know how to flush it. This is sometimes a problem.

6. A rickshaw from Diamond to MG should be around 40R, although paying up to 60 is ok. I know that you don;t care because you have lots of money, but rich tourists overpaying for rickshaws make the drivers exhort the locals too. Don;t be part of the problem. Frequently, rickshaws will refue to carry you; try to negotiate in an area where there are several rickshaws and just go from one to one arguing. Using the meter is preferable but it's hard to get them to do that. Frequently when you get out of the cab after negotiating verbally, they will want more than the agreed-upon price. Just keep saying no, pay them, and leave.

While you are in a rockshaw stopped in traffic, it will not be uncommon for beggars to come up to you. Say no. They will go away sooner or later. I did give a packet of cookies to a child who was begging, but she looked at them with disdain and obviously preferred money. So do as you will, but eh.

7. Diamond District is surrounded by bars and you will probably see most of them during your stay. The correct price for a shot is around $1-2 USD, no higher than that. The correct price for a pitcher of import beer is around 600R.

8. The office will give you a phone. It will not be a very good phone (think USA era 1999ish, and heavily used by the previous owner) but it will work. If you have an unlocked phone, just put the sim card from your office phone into it. If not, eh.

9. Your apartment's electrical system is unable to run more than any three items which are air conditioners or water heaters. If you try to turn on all 3 ac and water heaters at once you will knock your power out and have to call the office to have it reset.

10. Your bed will be harder than USA hotel beds. Personally I find it comfortable but to each their own.

Chille's in India

Is much more expensive than most things. The food is good, the beer isn't anything special, and they charge for surprise birthday cake (Tom, Jan 6).

We did have fun, though.

It's on Airport Road on the same side of the street as Diamond, a long walk. I'd estimate a little over a mile over broken terrain in the dark.

Almost all sidewalks in India count as broken terrain. Absolutely nothing is wheelchair-friendly. We saw two dead squashed rats on teh sidewalk on the walk there, and five or six street dogs. Passed ten-ish street vendors.

the first shopping adventure

Last night, I woke up at 4am and didn't get back to sleep until 6am. I planned to wake up at 9 and meet people at 10:30, but in the morning I got a phone call from Ron. "Good morning, Sunshine!" "Hrrrr?" ...it was 10:45, oops. So it turned out that a group of 5 TWers walked out of Diamond, saw a camel, ate at a standup, caught a rickshaw to MG(ish), and bought all sorts of cool stuff... got separated for a while (because you can only get 3 ppl into a rickshaw and we got out at different places) I was in the one with Ron and Becca. It was a lot of fun. We were stuck in traffic for a while and almost had a race!

We stopped in at a classy local clothing store and I ended up buying 3pr pants and 4pr shirts for about $61(including bank fees)... they are absolutely gorgeous. I didn't have enough rupees on me, so I paid by card.

We wandered around... stopped in at a Baskin and Robbins in a mall and got Lychee ice cream and fig and honey ice cream. Yum! Met up with some more people, tried out McDonalds India and KFC India on the main drag, shopped at a thousand tiny stores, waited wile one of our number got fitted at a tailors, and then took a rickshaw back to Diamond with Uchenna and Shane, arriving around 4 or so.

I know how to cross streets now. It's pretty excellent. I feel pretty acclimated.

Rickshaw 1 cost 35 and rickshaw 2 cost 45, neither of which is bad. Another group of people caught one for the same distance for 80, which is far beyond the appropriate price.

In general, you don't bargain for things that aren't rickshaws. many stores have "set price" or "fair price" signs which mean that the price is set pretty fairly and isn't eligible for change.

My fellow TWers seem to spend a lot of time talking about the places they've been (Barcelona, Amsterdam, London) and no time at all talking about code... which worries me a little. I don't talk very much when we're hanging out. I guess part of it is that we don't have many tech projects in common yet, so there's not much ground to discuss?

Later tonight, the plan is to go out and drink. Shots are apparently around $1 or $2 here, so

Friday, January 7, 2011

Books

I want one of each of these and the time to read them and good reasons to use what I learn in them. http://accu.org/index.php?module=bookreviews&func=browse

Or I could try to go back to sleep.

Professionalism

I fell asleep at midnight over my homework, woke up at 4am with more bug bites. Finished and turned in the homework. Searched "professionalism" on twitter.

Some traits of professionalism that I think I've identified:
  • Keep a straight face when the client says unfortunate things. Keep a filter on your verbalized thoughts. 
  • Plausible deniability
  • Create a paper trail for everything
  • Stick to "best practices" i.e. don't do the probably-not-bad but also not-what-you're-supposed-to-do things... I think the equivalent would be a professional painter always putting edging tape around the windows even though he thinks he could do the job perfectly without it.
  • Don't say frivolous or entertaining things; always think through something before it leaves your mouth and have logic to back it up. I.e. never say anything that makes you sound like you're being flip/don't know what you're talking about.
  • Taking pride in your work (I like this one!)
  • Basically act like the client is crazy and can't be communicated with in a normal interpersonal way without risking (lawsuit? some kind of consequences) i.e. do not attempt to attain understanding, just go by the rulebook...?
  • When when things go wrong, don't make excuses; you should have not let it happen. Explain what happened/why you don't know/why you can't do it, and describe how you plan to fix it, if it can be fixed, or how you plan to figure out if it can be fixed, if it seems like there's a way. If it's irrecoverable, accept responsibility and then IMMEDIATELY STOP TALKING i.e. don't make excuses or ramble on.
  • "Professionalism is the adherence to a set of values comprising statutory professional obligations, formally agreed codes of conduct, and the informal expectations of patients and colleagues." http://www.google.com/search?hl=en&defl=en&q=define:professionalism&sa=X&ei=tZ8nTeKOKpGIrAej6NimDA&ved=0CB8QkAE

As an example, I'm pretty sure that this entire post is unprofessional, because I haven't dressed it up in slippery language? Actually I'm not sure why this post is unprofessional, but I'm pretty sure that it is.

Reasons that I care about professionalism:
  • My trainer thinks that it's an important skill that I lack, and I agree
  • It's good to know how to seem professional because it gets you credibility, clients, and money
Reasons that I don't think much of professionalism:
  • I think it's another way of saying that you're adhering to internal/external industry standards but I don't think the standards are ever defined for my industry in a way which I can study and use. (On second thought, they probably are, and I should go find them.)
This is the google query which is my starting point for chasing an answer for the above question http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=professionalism+in+programming+consulting

A professional never:
  • uses offensive language to or near the client
  • cuts corners (in visible/important places?)
  • makes excuses (need more explanation here)
  • uses capslocks
Article on professionalism in consulting: http://davidmaister.com/articles/1/3/
This article is long but I've read all of it and frankly I think that it's the thing that has most increase my understanding of professionalism, ever. I think I'll reread it in the morning.

Timesheets and expense reports

I completed my first of each yesterday/today. I'll find out tomorrow whether I did it right, i.e. money will show up in my account.

Dinner took forever

We went to a Chinese/thai-ish place. There were 19 of us, and we arrived there around 8pm... the food took forever to order and prepare... we finally got the check paid a little after 11pm and now it's midnight! The food was good but not too interesting. When the check was split it came to 385 R each, which is about $8.50.

Tomorrow we plan to go shopping!

learning journal format - rough draft

How is training going?
How am I doing?
What did I learn today?
What do I still need to do?
Something that someone else did that was good:
Thing that I did that i shouldn't repeat:
Something that I did that was good:

Treasure hunt

My team won the prize! There was a long fun treasure hunt with several parts. I don't know if I should detail them here, since I think they reuse elements between years... but I want to remember things! I'll just leave out the answers... (This all except the last step took place on the2nd and 4th floors)
  1. piece of paper with 3 logic puzzles (my team did poorly and needed help from another team
  2. puzzle where you have to trade puzzle pieces with other teams in order to finish
  3. I forget what this step was
  4. you must find someone and convince him to give you the next clue (by bribing him)
  5. you must find someone and sing them a song
  6. you must solve a complicated logic puzzle (or get the same answer by an easier way, which we did after a hint)
  7. you must solve a crossword puzzle which can only be solved by asking random Indian TWers around the office (no laptops allowed)
  8. you are given a picture of something and you have to ask people around the office where it is, then go find it. at it is the prize (guarded by one of the trainers)
Our prize was a game of Monopoly and a dinner voucher for our team. :)

I have many enormous bug bites and it makes me sad. I need longsleeved shirts and bug repellant but when I tried to find the grocery store under N building I could not find it. I'll try again later. One of the trainers says that it is open from 8am to 9pm.

During the treasure hunt, we were very loud and disturbed everyone's work but I think that that was partly the intent? We ran around the office a lot and I think provided much amusement.

Tonight Ron organized dinner- meeting by the atm at 7pm. Go Ron!
Other leadership moment of the day- when Uchenna divided us into teams when we were having trouble with that at the start of the treasure hunt. :)

My team: me, Dani (curly and enthusiastic!), Shane (irish guy), Pavithra (my flatmate)

How is training going: A little slow, but camaraderie is developing. We're still having self-segregation problems with the Chicago people vs everyone else, but they're fading.
How am I doing: I'm ok. I'm looking forward to less games and more work/learning. My feet are owwie and I don't know why. The cell phone we were issued is old pathetic hardware which borders on useless.
What did I learn today?: I'm not really sure. I'm a little tired.
What do I still need to do?: The strengthsfinder test, get dinner with people, finish the Industrial Logic courses (oops)

I don't feel too bad about the Il courses because I know that some of my fellow trainees didn't take them all that seriously or in detail, but I still intend to finish them (my way) before monday.

I asked Wolter how much of the sessions next week I can blog publicly- because blogging is my way of taking notes... and the answer I guess is almost all of it, but that I should run it by him first for the first few days.