Often, presentations require slides, and often slides require pictures without copyright restrictions. FlickrCC, coolIris, SXC, and EveryStockPhoto.
Tuesday, January 18, 2011
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.
Labels:
learningjournal,
rewrite,
TWU
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.
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.
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."
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.
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.
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.
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.
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.
Labels:
rewrite
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.
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.
Labels:
pecha kucha,
powerpoint,
rewrite,
TWU
Subscribe to:
Posts (Atom)