Guía de supervivencia para conferencias tecnológicas (II)

528958_399305150134080_1045519093_nAyer estuve inspirado para escribir la primera parte de esta guía, pero no quería extender el post y atiborrarlo de contenido. Prefiero separarlo en dos, y aquí está la segunda parte de la guía para sacar lo mejor de asistir a una conferencia tecnológica.

En esta parte voy a cubrir el tema de la logística, el networking y la relación con los expositores.

Cuña publicitaria: ¿No sabes a que conferencia asistir? Vamos….es de cajón….a la Iberian SharePoint Conference el día 10 de octubre en Madrid.
Vas a estar acompañado por los demás desarrolladores, administradores, jefes de proyecto, usuarios y diseñadores del mundo SharePoint. ¡No te lo pierdas!

Logística (o cómo meter el día en 24 horas)

La reacción natural a asistir a una conferencia es intentar hacer de todo y no perderse nada. Si queremos malgastar la asistencia, es el camino que tenemos que seguir. Si, por el contrario, queremos aprovechar al máximo las oportunidades que nos brinda estar allí, entonces tenemos que hacer un trabajo preparativo.

Preparando el viaje

  • La maleta: piensa que vas a volver con los goodies de la conferencia: camisetas, peluches, DVDs, bolis, USBs, trastos varios… Yo suelo calcular aproximadamente la mitad de una maleta de mano, como mínimo. Deja espacio para los goodies al hacer la preparación y te ahorraras dilemas más tarde. (algunos goodies siempre son buenos regalos para los niños, como los cochecitos, peluches etc). También puedes llevarte una bolsa de tela de las autoplegables por si necesitas espacio extra.
  • Zapatos: la parte más importante de tu vestimenta. De los que tengas, escoge los más cómodos. Tus pies de lo agradecerán.
  • Tarjetas de visita: llévate más de las que piensas que vas a repartir. No pesan nada y las necesitarás.
  • Prepárate: mirate el programa de la conferencia e identifica las que más te interesan (ya habrás determinado tu objetivo para la conferencia). Identifica a los expositores más interesantes y marca su ubicación en el mapa. Si vas a un país extranjero, aprende cuatro frases básicas.
  • Conectividad: piensa que en la mayoría de las conferencias la red WiFi suele estar colapsada como mínimo el primer día. Lleva siempre el plan B (un pincho 3G o algo parecido). Si estás en el extranjero, quizás te salga a cuenta una tarjeta de móvil prepagada.

Al llegar

  • Hotel: al llegar al hotel, comprueba como llegar de allí a la conferencia (y como volver). Mira varias opciones. Por ejemplo, en el último TechEd unos compañeros macedonios descubrieron que la vía más rápida de IFEMA a su hotel (donde estaba yo también) era yendo al aeropuerto de Barajas (1 parada) y cogiendo allí el minibus lanzadera al hotel (10 minutos). Yendo en el Metro todo el camino, el viaje duraba 1 hora con transbordos.
  • El sitio de la conferencia: familiarízate con 3 cosas:
    • Los lavabos (a poder ser, búscate los que no son tan obvios, luego te evitarás las aglomeraciones)
    • El mostrador de información del evento. No dudes en preguntarles cosas porque muchas veces te enterarás de cosas que no están en la guía de la conferencia. Recuerda que la mayoría son voluntarios y suelen ser locales, así que saben también donde puedes ir a cenar bueno, bonito y barato.
    • Los enchufes de electricidad. Los mejores (léase los más desapercibidos) suelen estar semiescondidos detrás de alguna mampara o una silla.

Durante la conferencia

  • Por la mañana, antes de la primera sesión, comprueba los posibles cambios que se hayan podido producir.
  • Llevate siempre una botella de agua. Luego la puedes rellenar en las fuentes durante el evento.
  • Los eventos sociales: como decía en el primer post, haz una criba. Piensa que aparte de pasártelo bien, suelen ser un sitio donde podrás hacer networking "menos agresivo".

Al final

  • Si marchas el último día de la conferencia, comprueba que en el sitio de la conferencia tengan el servicio de guardar el equipaje. Suelen tenerlo y así te ahorras tener que ir al hotel y recogerlo antes de marchar.
  • Haz una selección de los goodies que has ido almacenando y deshazte de los que no necesites. Equipaje más ligero y espacio para algun souvenir. 😉

Networking

Para mí es lo más importante de una conferencia. Las sesiones a las que vas a asistir serán un aliciente pero no te van a explicar nada que no puedas encontrar ya en Internet. De verdad. Lo que hace grande una conferencia es que allí va a estar gente como tú o gente interesada en gente como tú: potenciales clientes, proveedores o empleadores.

1052206_10152289092226542_2140915545_o(1)

Tienes que trazar tus objetivos de networking. ¿Quieres conocer algun ponente en concreto? ¿Quieres conocer gente que trabaja en un tema en concreto? Ordena tus objetivos y luego busca información: mira en el programa de las sesiones, mira los mostradores de las diferentes empresas o en las sesiones Ask the Experts. La gente que buscas estará allí.

Además, la mayoría de la gente estará encantada de conocer más gente que hace lo mismo que ellos e intercambiar experiencias. ¡Aprovecha! Si te ha gustado alguna cosa concreta de una sesión, díselo al ponente o invítale a una copa y lo harás contento. (cierto, siempre agradecemos que alguien encuentre interesante lo que explicamos).

No conviertas la conferencia en una competición de intercambio de tarjetas de visita. Sí que es cierto que vas a hacer muchos contactos (y por eso llevas tantas tarjetas de visita) pero más valen cinco buenos contactos que cien contactos pasajeros. Calidad, no cantidad. El truco que uso con la tarjetas de visita que recibo es apuntar en el dorso de la tarjeta el contexto de la persona (como lo he conocido o de que tema se trataba). Esto me sirve para no olvidarme esos detalles para más adelante.

Una buena oportunidad de networking es durante los descansos (alrededor del café) y en las comidas. No tengas miedo a establecer contacto con el vecino de mesa. Comer sólo puede ser más cómodo, pero no has ido a una conferencia para estar aislado del mundo, o al menos así lo veo yo.

Otra oportunidad de networking es durante las actividades sociales después de las sesiones. Siempre hay cosas, pero no olvides dosificarlas y hacer la criba previa:

  • Cenas de los asistentes que se organizan espontáneamente, atento al Twitter y al hashtag de la conferencia.
  • Fiestas que organizan los expositores, la mayoría suele incluir algo de comida. Consigue tu invitación pronto porque luego siempre hay gente que se queda fuera.
  • Quedadas improvisadas, como los famosos "SharePints". Otra vez, atento al Twitter

Después de la conferencia, en casa, recoge las tarjetas que has recibido (con sus notas en el dorso) y envía correos de saludo. Siempre se agradecen. Aprovecha para agregar esas personas en tu LinkedIn y/o Twitter (si los usas).

Expositores

Mucha gente ignora a los expositores pero yo los considero importantes por las razones siguientes:

  • Ellos pagan una buena parte de la conferencia. Si están contentos con el interés de la gente en lo que ofrecen, probablemente repetirán.
  • Muchas veces suelen tener algun producto o servicio que no conocías y que más adelante te irá bien en un proyecto o en un problema. Invierte un poco de tiempo para familiarizarte con lo básico del proveedor y apúntate la web por si tienes más preguntas.
  • Una vez que hayas pasado la pantalla de los comerciales, te sueles encontrar con gente como tú que están trabajando en cosas muy parecidas. Otra oportunidad para hacer networking.

Ten presente que la mayoría de ellos te pedirán datos de contacto para darte cualquier goodie. Luego te incluirán en una lista de correo para enviarte información comercial.

Yo no tengo problema para darles mis datos de contacto y al volver me espero hasta recibir un par de correos de cada proveedor. Si no me interesa lo que dicen, darme de baja no cuesta nada (dos click).

Hasta aquí el segundo post de la serie. En el post siguiente (y último) explicaré cómo aprovechar lo aprendido en la conferencia y como transmitirlo a tus compañeros.

Guía de supervivencia para conferencias tecnológicas (I)

MIT_EMBA_Survival_Guide_TravelLa Iberian SharePoint Conference está en plena marcha. Ya hemos abierto el proceso de registro para que podáis comprar vuestras entradas. ¿Ya tienes la tuya?

Pensando en la conferencia se me ocurrió escribir un pequeño post una serie de posts sobre lo que he aprendido asistiendo a varias conferencias tecnológicas durante todos estos años en el mundillo SharePoint. Espero que a alguien le pueda servir de mini-chuleta para aprovechar mejor la asistencia.

¿Cómo asistir a la conferencia?

La via más obvia es que la empresa (o tú mismo, si eres autónomo y tienes beneficios) te compre la entrada. Para ello, tienes que convencer a tu jefe (y/o a tu pareja) sobre los beneficios de estar en la conferencia y además tienes que calcular que el tiempo que vas a estar en ella no vas a estar disponible para otras cosas. He visto demasiados casos de gente que se perdió buena parte de la conferencia a la que asistía por estar haciendo parches o despliegues de última hora desde el hotel. Asegúrate de tener cubiertas tus "patatas calientes" antes de salir para la conferencia.

Si no puedes/quieres convencer a tu jefe para que te pague la entrada y no puedes/quieres pagarla tu mismo ya que suelen oscilar entre 500 y 2000 € (no la nuestra, ¿sabías que la entrada para Iberian SPC sólo vale 75€?), tienes más opciones para hacerte con la entrada:

  • Ser ponente: muchas conferencias buscan ponentes nuevos (puedes buscar por "call for speakers" o "call for papers" en internet) y suelen proporcionarte una entrada gratis si te eligen como ponente. Evidentemente, tienes que dominar el tema y venderlo bien a la organización y tener suerte para salir elegido. Sin embargo, con la tensión de hace bien tu parte puedes perderte el resto de los beneficios por estar allí en primer lugar.
  • Ser voluntario: en algunas conferencias se buscan voluntarios para la organización de la misma. Por ejemplo, en TechEd se buscan voluntarios para hacer de guías de los Hands-on Labs, en QCon se buscan voluntarios para el registro, soporte de los ponentes etc. A cambio de la entrada, tendrás que trabajar una buena parte de la conferencia. No podrás asistir a todas las sesiones que a lo mejor te interesarían pero te ahorras la entrada. Adémás, haces mucha vida social con los demás voluntarios.
  • Ser reportero: si mantienes un blog famosillo o escribes regularmente para uno (o para un portal o revista especializada), puedes probar de obtener un pase de prensa con el que podrás asistir a la conferencia.
  • Tener suerte: los patrocinadores de la conferencia o el organizador suelen hacer un sorteo de entradas previo a la conferencia. Es cuestión de apuntarte y tener suerte.

¿Cómo pasarlo bien, pero no demasiado?

No nos engañemos, asistir a las conferencias es lo más parecido a vacaciones que se puede hacer trabajando. Sobre todo si se trata de la SharePoint Conference que se suele hacer en Las Vegas, con lo que es muy fácil convertir la visita tecnológica a una visita jugadora. ¡No te conviertas en una víctima más de la "fiebre postconferencia"!

Para que no nos desviemos del norte, os comento los trucos que me van bien a mí:

  • Hacer la visita cultural el día antes: intenta llegar 2 días antes de la conferencia al sitio. Usa el día de llegada como aclimatación y el segundo día (el día previo al evento) para hacer la visita turística al sitio de la conferencia. De esta manera puedes dedicarte a la conferencia sin tener la sensación de perderte la visita a la ciudad. Además, como las conferencias suelen comenzar los lunes (o martes), puedes aprovechar el fin de semana. En última instancia, puedes coger un día de vacaciones por si un día de visita te queda corto.
    ¿Por qué antes y no después del evento? Sencillamente porque cuando llegas estás fresco y dispuesto a patearte los sitios. Cuando la conferencia se acaba, posiblemente estés reventado (y más todavía si eres ponente o voluntario).
  • Tener bien claro tu objetivo: muchísima gente va a las conferencias sin objetivos claros. Estos objetivos dependerán de tí, pero si vas sin ellos, te vas a despistar seguro. Los objetivos puede ser "aprender para que suelen usar las empresas los metadatos administrados de SharePoint" o bien "tener una noción base clara sobre Business Intelligence", tú decides. De esta manera irás descartando rápidamente las sesiones que no van alineadas con tus objetivos y así aprovecharás mejor tu tiempo disponible.
  • Controla tus fuerzas: sí hay un evento social al que quieras asistir un día, dosifica tu tiempo libre para poder realmente disfrutar de él. No te apuntes a todas las actividades posibles sino filtra. Ir toda la conferencia con una cara de sueño por haberse corrido juergas cada noche no sólo es cansado sino que también impacta tu reputación profesional. No te olvides que estás allí en calidad de profesional tecnológico y no como un turista normal.

En los posts siguientes comentaré sobre el networking, relación con los expositores o patrocinadores, la logística del viaje y como  transmitir lo aprendido a tu equipo o a los compañeros.

Configuring Content Organizer Rules with PowerShell

As you probably know from my previous posts, I have been configuring a wide-scale document management solution using Content Organizer feature of SharePoint. The idea is to use managed metadata to tag the document with information about the business unit and region it originates from (in my case Region and Section metadata columns) and let SharePoint classify it to the correct site and document library. I wrote about how to expose the cross-site content organizer hubs a few months ago.

As I had many regions and many sections to configure, I had to manage to build the whole hierarchy with a PowerShell script instead of doing the work by hand. In this post I will share with you the things I learnt by doing so.

Anatomy of the Content Organizer Rules

When you click the Content Organizer Rules in Site Settings, it will show you the contents of a hidden list called "Content Organizer Rules". You can see it adding /RoutingRules to the site URL.

image

Each rule is a list item with several fields of importance:

  • RoutingEnabled: this column should be set to 0 or 1 in order to disable or enable the rule.
  • RoutingPriority: a number from 1 to 10. 1 is the highest priority and 10 is the lowest one. A rule with higher priority will run BEFORE any rules with lower priority.
  • RoutingRuleName: a string with the rule name.
  • RoutingContentType: if the rule applies to a specific content type, here you should put the content type name (not the ID).
  • RoutingContentTypeInternal: this is the content type ID for the content type specified in the RoutingContentType field concatenated with the content type name using the pipe ‘|’ character as separator
  • RoutingRuleExternal: if the content organizer rule should route to another site, this field should be set to 1. Set it to 0 if the routing is done in the same site as the rule.
  • RoutingTargetLibrary: the destination library if the document is routed in the same site.
  • RoutingTargetFolder: the destination folder if the folder classification is used.
  • RoutingTargetPath: if you are routing to another site, this should be the name of the content organizer source (set in Central Administration).
  • RoutingConditions: this is an XML string with the routing condition. The XML syntax will be explained later.

In order to programatically create these rules, SharePoint server object model exposes a class named EcmDocumentRouterRule. This class simply surfaces the underlying list columns as class properties.

In order to create a new rule, just instantiate the EcmDocumentRouterRule passing the SharePoint site for the rule in the constructor (the SPWeb object). Populate the properties and call the Update() method on the rule. Job done!

Rule Condition XML

The most complex part of the creating the rule in code is how to correctly construct the condition XML. It should be in the form of:

<Conditions>
  <Condition Column=’column’ Operator=’operator’ Value=’value’>
  </Condition>

</Conditions>

All the children nodes of Conditions are evaluated together (i.e. it’s an AND of all of them). Each condition specifies the Column that is evaluated, the operator and the value to compare against.

The column is comprised of several pieces: field GUID|field internal name|field display name.  (in my case it was ‘5bc078e1-bcf6-4475-aadf-2b567726c696|Region|Region’)

The available operators are:

  • IsEqual
  • IsNotEqual
  • GreaterThan
  • LessThan
  • GreaterThanOrEqual
  • LessThanOrEqual
  • BeginsWith
  • NotBeginsWith
  • EndsWith
  • NotEndsWith
  • Contains
  • NotContains
  • EqualsOrIsAChildOf
  • NotEqualsOrIsAChildOf
  • IsEmpty
  • IsNotEmpty
  • ContainsAny
  • ContainsAnyOrChildOf
  • ContainsAllOrChildOf

The value is the literal value to compare against. If you are comparing against managed metadata columns, the value specified as ’16;#Austria|1953bfe9-95d0-4ec8-8b9f-7a58169a9a53Region’. The left part is the underlying lookup value for the managed metadata field and the right part is the Term ID for the selected term.

Note: all the managed metadata columns in SharePoint are implemented as lookup columns to a site-collection root site hidden list. Every time a new managed metadata value is added to a list item, SharePoint adds a new entry to this hidden list. The consequence of this implementation is that you must get the lookup value IDs to make a CAML query against managed metadata using TaxonomyField.GetWssIdsOfTerm method.

Putting it all together

So, let’s say that we have the text value of the managed metadata column and we want to create a content organizer rule that will route the document with the content type "My Content Type" to a different site when the value of that column matches our text value or its children (in my case the column name and the term set name is Region and its value is ‘Spain’). How should we construct our PowerShell script to do it?

First of all, we have to retrieve the Term ID that corresponds to the taxonomy node for the term set "Region" with the value of "Spain". In the $web variable we have the SPWeb object for the site we want to create the rule for.

$regionValue = ‘Spain’
$ts = Get-SPTaxonomySession -Site $web.Site
$tstore = $ts.TermStores[0]
$tgroup = $tstore.Groups["Group Name"]
$tset = $tgroup.TermSets["Region"]
$term = $tset.GetTerms($regionValue, $true)
$termValueGuid = $term.Id

Now we have the term ID that corresponds to ‘Spain’ entry in the ‘Region’ term set in the ‘Group Name’ term set group. Now we need to construct the full literal value of the managed metadata column (the lookup part and the GUID part). In order to do so, we use the TaxonomyFieldValue.PopulateFromLabelGuidPair method. It consists of the text value (‘Spain’) and its Guid separated by the pipe character (‘|’).

$docLib = $web.Lists["Document Library Name"]
$regionField = [Microsoft.SharePoint.Taxonomy.TaxonomyField]$docLib.Fields["Region"]
[Microsoft.SharePoint.Taxonomy.TaxonomyFieldValue]$taxonomyFieldValue = New-Object Microsoft.SharePoint.Taxonomy.TaxonomyFieldValue($regionField)   
$taxonomyFieldValue.PopulateFromLabelGuidPair([Microsoft.SharePoint.Taxonomy.TermSet]::NormalizeName($region) + "|" + $termValueGuid)

Now we can create the content organizer rule. Remember that the column name for the condition XML is the field Guid, static name and display name. In this case we route the document to another content organizer called ‘Spain’, that’s why the rule is marked as External. The value for the taxonomy field is retrieved using the ValidatedString property of the TaxonomyFieldValue object.

[Microsoft.Office.RecordsManagement.RecordsRepository.EcmDocumentRouterRule]$rule = New-Object Microsoft.Office.RecordsManagement.RecordsRepository.EcmDocumentRouterRule($web)
$rule.ConditionsString = "<Conditions><Condition Column=’" + $regionField.Id + "|Region|Region’ Operator=’EqualsOrIsAChildOf’ Value=’" + $taxonomyFieldValue.ValidatedString +  "’></Condition></Conditions>"
$rule.Name = $region + " rule"
$rule.ContentTypeString = $web.AvailableContentTypes["My Content Type"]
$rule.RouteToExternalLocation = $true
$rule.Priority = "5"
$rule.TargetPath = $regionValue
$rule.Enabled = $true
$rule.Update()

 

Summary

I hope that this code snippet can save you some time if you create a lot of content organizer rules and want to avoid doing it by hand.