Thursday, October 25, 2007

Religious wars

Today one of my co-workers asked me in which language do I feel coding for our next project. Perl, Mason, Ruby on Rails, PhP, Java, etc.?

I'm old. I don't fight religious wars in terms of programming languages anymore. I guess, the last one was Java around '96 when people got tired of debugging C pointers or dealing with friendly classes in C++. Java is popular but hasn't displaced C nor C++ (actually both are in high demand nowadays). Also, long long time ago, there was an article on Byte (remember Byte?) that said "Is UNIX dead?". That was Microsoft announcing Windows NT. Not only UNIX is alive and kicking, it has a new incarnation called Linux. Even the Mac has UNIX! So, to go back to the original point: never, ever, ever, fight religious wars in terms of programming languages. If you plan to, do it in the name of theory: get a new lower bound, solve NP=P, and things like that.

My answer to the first question: I'm agnostic. I might be rusty but I'll code in anything.

Consolidación

La consolidación en el area de enterprise software sigue a full. Larry quiere ahora a BEA y SAP compro BusinessObjects. Esta ultima no la entiendo muy bien ya que no veo como cuernos pueden llegar a hacer uso de Inxight. Como siempre, el tema de adquirir nuevas empresas es a veces para ganar clientes o mercado. Desafortunadamente, también se pierde gente ya que el choque cultural es lo mas difícil.

Por otro lado, si bien no es consolidación, mucha infraestructura de Internet esta siendo armada alrededor de varios módulos de Apache, sobre todo Hadoop. Vamos a ver si me pongo las pilas y después hago algunos posts de código.

Wednesday, October 17, 2007

Internet speed

Uf ... a solo 3 dias en mi nuevo trabajo y ya puedo notar lo que es trabajar en algún lugar que es básicamente Internet. Todo es rápido. No hay vueltas, las reuniones son al grano y todo se mide: trafico, gente, consultas, click-throughs, todo, todo. Y casi la mayoría tiene Macs!

Monday, October 15, 2007

Lytton Avenue

Mucho tiempo atras solia recibir reportes de investigación de un laboratorio muy conocido que estaba ubicado en Lytton Avenue. Hoy cierro el circulo ya que es mi nuevo trabajo. Distinta empresa, claro esta, pero en un edificio de mucha historia.

Wednesday, October 10, 2007

Genesis @ San Jose, 09-Oct-07

Otra reunión familiar. No solo Genesis sino que esta vez fui con toda la familia y hasta otro argento bien conocido andaba por la multitud.

Como algunos sabran Genesis salio al ruedo otra vez a tocar material conocido ya que no hay disco nuevo. Y como siempre estan los que les gusta la era de Peter Gabriel versus la de Phil Collins. El tema es que el catalogo de canciones es muy grande y armar algo que guste a todo el mundo es, indudablemente, muy difícil. Asi que hay fuimos otra vez para el HP Pavillion para vivir en carne propia uno de los ultimos conciertos de la gira mundial. El lugar estaba re-lleno como era de esperar.

Un poco pasada la hora se apagaron las luces y ahi con los primeros acordes de "Behind the lines" salieron Collins, Banks y Rutherford seguidos de los ya conocidos Chester Thompson y Daryl Stuermer. La primera sorpresa es obvio escuchar a Collins y Thompson en sus respectivas baterias. Ya no se ven esas cosas últimamente.



Indudablemente los muchachos solo tocan por la gloria. Musicalmente uno de los mejores conciertos que he visto. Casi 3 horas de una selección de rock progresivo, pop, baladas y el típico sonido Genesis. Una escenografía y juego de luces impecable. El sonido me dejo un poco que desear ya que el lugar no es lo mejor y se notaba que la voz de Collins no estaba tan bien mezclada. Para los fans de Genesis un verdadero festín de casi todos los discos. Obvio que quedaron canciones que no tocaron pero mas no se puede pedir.



Los puntos altos del show segun mi punto de vista:

  • Home by sea/Second home by the sea. No esperaba la parte dos y fue una verdadera sorpresa. Mas aun con Collins a duo con Thompson y sin usar la batería electrónica como en el disco o en los shows de los 80s. Banks en los teclados impresionante, lo que hizo que el tema sonara como una verdadera maza.
  • In the cage. El clasico de "El cordero ..." completo con medley al final.
  • Mama. Difícil en las vocales para el pelado pero zafo. Excelente el juego de luces cuando abre la batería.

No me gusto mucho "Invisble touch" para terminar el show pero bueno, son muchos temas y los tipos querían complacer mas que nada.

Lei algunas criticas por ahi y dicen que los tipos estan viejos, etc. Lo mismo de siempre asi que nada mejor que alquilarse algunos conciertos viejos para después comparar. El fin de semana estuve viendo los shows que hicieron en Wembley a mediados de los 80s y no han cambiado mucho. Banks sigue sin una sonrisa y ultra concentrado en los teclados. Rutherford con su pinta de ido como siempre. Thompson y Collins unas maquinas con los palos y Stuermer mas que solido con todos los solos.

Un parrafo especial para Collins. Todo el mundo siempre se rie del pelado que, hay que reconocer, a veces lo ves en todos lados. Sacando eso, el tipo un verdadero showman. Interactúa con la audiencia (hasta saco fotos desde el escenario), hace bromas, canta y encima toco la batería en la mitad de los temas. Completito el petiso y te tenes que sacar el sombrero porque el tipo lo vale. El solo de batería con Thompson hay que escucharlo para tener una dimension de lo difícil que es hacer eso a duo. Como dije antes, cosas que ya no se ven.



Set list:

Behind The Lines / Duke’s End
Turn It On Again
No Son Of Mine
Land Of Confusion
In The Cage / The Cinema Show / Duke’s Travels
Afterglow
Hold On My Heart
Home By The Sea / Second Home By The Sea
Follow You Follow Me
Firth Of Fifth / I Know What I Like
Mama
Ripples
Throwing It All Away
Domino
Drum Duet
Los Endos
Tonight Tonight Tonight (intro)
Invisible Touch

I Can’t Dance
The Carpet Crawlers

Tuesday, October 2, 2007

Entrevistando en el Valle

En las ultimas semanas me han preguntado sobre consejos para entrevistas y como he estado justamente entrevistando en diferentes lugares, nada mejor que poner todo en un post para el avance de la humanidad.

Hay un montón de artículos y blogs de consejos/ayudas para entrevistar en Silicon Valley. Lo mio tiene un sabor sudamericano que me parece puede ayudar algo. Las opiniones y experiencias son personales asi que a tomarlo con un grano de sal, como siempre. Lo siento por los acentos, pero este teclado lo hace muy difícil ;-)

Para empezar entonces, nada mejor que un poco de preparación de terreno:
  1. Buscando un nuevo trabajo. Todos sabemos que no hay trabajo ideal y siempre nos van a tocar esos dias en que uno no se aguanta nada. Cuando la cosa se torna insoportable porque no aguantas a tu jefe o en tu grupo son una manga de descerebrados, entonces si hay que empezar a pensar en algo pronto. Por eso siempre hay que tener la ultima versión del CV o resume listo para mandar. Eso si, buscar lleva tiempo. Sobre todo en este lugar del planeta donde talento abunda.
  2. Donde y como. Lo mejor es no apuntar a un solo lugar sino a varios y después ver cual es el mejor. Personalmente he entrevistado con todo el mundo menos Microsoft. Y no es por una cuestión religiosa. Siempre que me han contactado para saber si tengo interes en algún cargo, contesto que si pero la burocracia es tan grande que nunca termina en algo concreto. El otro tema es los cargos. Al menos en software o high tech, y sacando los cargos de management, hay dos puestos que cortan el bacalo: software engineers y product managers/program managers. Todo lo demas como testing, marketing, ventas, consultoría, etc. gira alrededor de ese entorno. Incluso los grupos de investigación también de alguna manera estan marginados.
  3. Impacto. Independientemente de que cargo y que empresa, no hay nada mejor que trabajar en algo que tenga un impacto muy grande. Esto es básicamente oro en polvo en un CV. Cada empresa tiene sus productos lideres y vale mucho trabajar en ellos; lo demas es secundario. En Microsoft es Windows/Office; Oracle es la base de datos; Google, AdSense/google.com; etc. Por supuesto que todas tienen otros productos pero nada genera tanta plata como ellos. Y la elección pude ser entre un cargo de investigación top en un grupo mediano vs. un soldado en el grupo que toma las decisiones.
  4. Rechazos. Inevitablemente hay que estar preparado mentalmente para el rechazo. Hay gente que no te llamara o que no ve tu CV como algo interesante. Son las reglas del juego y en lugar de bajonearse hay que seguir. Te van a rechazar varias veces y es inevitable.
Suponiendo que tenemos una buena idea de lo queremos hacer y luego de haber mandado nuestra preciosa copia de nuestras calificaciones en PDF hay que esperar a ver si alguien pesca. Recordar que habra rechazos asi que a no aflojar. Pero como no todo es tan negativo en la vida, siempre alguien mostrara interes y se empieza el proceso de entrevista.
  1. Llamado telefónico. Eso es lo normal por estos lados. Generalmente es un email de alguien que te pide 30min para hablar y ver si hay algo de interes mutuo. La llamadita es bastante importante asi que hay que ser honesto y contestar firmemente lo que te preguntan. Cosas como "por que te queres ir?" o "que estas buscando" son comunes. A no contestar "mi jefe es un h.d.p" o "esta empresa se va al joraca" porque no te llaman mas. Profesionalismo por favor.
  2. Primera ronda. Si el llamadito salio bien, es probable que te llamen para una entrevista en persona. Generalmente es una sesión donde hay 4 o 5 personas y te preguntan de todo por unas 3 o 4hrs. Movidito asi que hay que prepararse. Que se puede esperar? De todo. Como diria Noel Gallagher "expect the unexpected". Ejemplos. Para una primera ronda en Google, estudie como condenado y todo fue muy fácil. Para una startup, en la cual trabaja un amigo el cual me dijo que era todo tranqui, estuve 2hrs hablando de algoritmos de grafos y complejidad. Les hago una lista de lo que si pueden esperar:
    • Acertijos (brain teasers). A estos los conocemos de la primaria (de que color era el caballo blanco de San Martin?) y secundaria (Juan y Pinchame se fueron al rio, Juan se ahogo, quien quedo?). La diferencia esta en que son bien pesados y no tenes mucho tiempo para resolverlos. Algunos van desde cosas como "hay que cruzar un rio y tenes el lobo, la len~a, una oveja, etc." Personalmente no tengo buen record (50-50) y la mejor forma es no entrar en pánico y hablar en vos alta de lo que harias.
    • Cálculos mentales (back of the envelope calculations). Aca la idea es ver como calculas algo para ver la noción de como harias algo. Por ejemplo: cuantos autos hay en tal autopista por dia? Se empieza con el numero de personas de una ciudad, se calcula el porcentaje que tiene auto, que de esos algunos van a trabajar, etc. Son todas cuentas de sumar y multiplicar - nada mas que eso. Fijense en el libro de Bentley "Programming Pearls" que tiene un capitulo dedicado a eso.
    • Algoritmos. Nada mejor que pegarse una repasada al Cormern, Leiserson, Rivest, Stein (CLRS) porque es lo que se espera que sepas. Muchas preguntas generales que con saber como encontrar el algoritmo pueden andar bien. Muchas preguntas también vienen mal paridas y nada mejor que teoría. Una vez en Yahoo! me preguntaron que haga un calculo de complejidad el cual involucraba hashing, ordenamiento, colas de prioridad, etc. A cada uno le puse su Big-Oh y me dijeron bien, pero como podía mejor ordenamiento. Mi respuesta "O(n log n) es lo mejor", el fiera "podemos hacerlo mejor?". Cuando aparecen las preguntitas can we do it better, hay que tener mucho cuidado. Puede ser que haya una solución óptima que no la nombramos o que nos quieran hacer pisar el palito. Y aca la teoría pesa. Mi respuesta "la cota mínima para un algoritmo de comparación es O(n log n) que se calcula basado en el arbol de decisión". No quiero hacer alarde pero es el tipo de respuesta que se espera que des: bien precisa. Mi entrevistador dijo bien y seguimos con otra cosa. Tiempo después me di cuenta que quizas quería que conteste que radix sort te puede dar un costo lineal. Pero como no es basado en comparación, no me podia decir nada.
    • Situaciones. Muchas preguntas son del estilo "si tuvieras que hacer X, como lo harias?". Si hiciste algo parecido es obvio que hay contestar al toque. En caso contrario evitar inventar con poco fundamento. Es mejor preguntar por mas datos o clarificaciones.
    • Disen~o. Esta parte es mas que nada para ver el grado de conocimiento en ciencias de computación. Las preguntas varían y van desde como disen~arias un lenguaje mejor que SQL o XQuery para una base de datos hasta como armarías una arquitectura diferente a una máquina de Turing. Como contestar bien? No hay una sola respuesta, es mas que nada imaginación y fundamentos.
    • Mejoras. Muchas veces preguntan como mejorarías su producto y si bien parece una pregunta fácil, hay que tener mucho cuidado. Por dos razones. Si sos muy negativo, pues nadie quiere una persona negativa que no sepa ver las cosas buenas. Por otro lado si contestas que todo esta bien, no hay ojo critico. Por ejemplo, con los muchachos de Amazon, les dije que habia ciertos resultados en el website que daban la impresion de que algo no andaba bien. Por supuesto que seguro saben todas las malas noticias, asi que uno tiene que dar una respuesta de como se resolvería la situación. Siguiendo en el mismo rubro, me hicieron la misma pregunta en eBay para cual respondí que la recuperación no era tolerante a errores de tipeo (show/shoe es lo mismo en ciertos contextos). El tema subio un poco de tono porque mi entrevistador decía que era un caso extremo y yo argumentaba que el algoritmo estaba fundamentalmente mal disen~ado. Otra vez, hay que andar con cuidado de no hacer calentar al otro al dope. Asi que solo sugerí una corrección menor que mejoraría la calidad. En otras palabras, evitar confrontar innecesariamente.
  3. Segunda ronda. Cuando pasas a la segunda ronda es que ya estas entre los pocos elegidos para el puesto. Puede ser que seas vos solo o un par de tipos mas. Lo que se puede esperar es conocer mas gente y mas que nada ser consistente con las respuestas que diste en tu primera ronda. Si antes dijiste que gustaba hacer testing y ahora decis que no, el tema no va a funcionar. También significa que no hay que dormirse en los laures y no preparse. Tuve una segunda ronda en Gooogle donde despues de 5hrs (si, cinco) el ultimo fiera me tiro dos acertijos muy venenosos que después descubri que se resolvían con "Gray codes". Obvio que no sabia Gray codes y obvio que hice agua. La segunda ronda también sirve para entrevistar al grupo. Aca ya podes darte cuenta de que es lo que buscan y cuales son sus ventajas y desventajas. Sin hablar de dinero, claro esta. Pero si cada tipo que te entrevista te nombra el mismo problema, es una indicación que los tipos pueden estar en serios problemas. También hay oportunidad para hacer preguntas. Yo por ejemplo pregunto que me digan una cosa que aman y una cosa que odian de tu trabajo. Imperdible la informacion que se obtiene de esa manera.
  4. La hora de la verdad. A esta altura seguro ya hablaste con 6 o 8 personas. Ellos tienen una buena idea de como andarías y vos de ellos. Y aca vienen los rechazos. Te van a decir que no y obvio que duele después de varias rondas escuchar eso. Por otro lado, también vos podes decir que no queres seguir mas lo cual es valido.
Finalmente tendremos una oferta en las manos o quizas mas de una. Que hacer?
  1. El vil dinero. Una vez que te dan los numeros lo primero es no ser codicioso. Seguro todos queremos ganar un montón de plata haciendo lo menos posible pero todo tiene un precio. Y si bien hay ofertas que son muy difíciles de decir que no, también tienen mucho riesgo. En mi caso le dije no a una oferta muy tentadora pero parecía pan para hoy hambre para man~ana sin contar con la presion de andar con el trasero a dos manos.
  2. Seguir negociando. Puede ser que X te paga 10 y Y te paga 15. Obvio que te gusta X, pero 15 es buena plata. Que hacer? Decirle a los muchachos de X que Y te paga mas y que mejoren la oferta. En casi todos los casos funciona. Pero siempre y cuando no descuides la regla 1 que nombre antes.
  3. Cuando empezar. A tomarse unos dias al dope y dar el aviso de que te vas de tu lugar de trabajo. Antes que nada profesionalismo. Nada de que me voy porque no me los banco o son una manga de inutiles. Nunca se sabe si los vas a encontrar de vuelta en un par de a~os. A no quemar las naves.
Un párrafo aparte para las startups. Todo lo que escribi es mas que nada basado en lugares que cotizan en la bolsa, que tienen recursos humanos, productos importantes y atraen gente como un iman. Las startups son diferentes porque no tienen eso ni tiempo. Entonces las entrevistas son fundamentalmente diferentes. Por ejemplo, te meten en un cuarto con todos (si todos) y te cascotean a preguntas de lo que quieran. Personalmente, me encanta hablar con ellos ya que son muy honestos en lo que buscan (no tienen tiempo para dar vueltas) y van al grano enseguida. El problema es, claro esta, el alto riesgo.

Bueno, esto es todo. Espero que les haya servido y buena suerte en la búsqueda laboral.