Departamento de Sistemas organizado en Círculos, Comunidades u Holocracia… ¿De verdad sirve?

La holocracia es una forma de organización de las empresas que consiste en la conformación de círculos o comunidades autogestionables, cada comunidad tiene un propósito, un dominio y un conjunto de responsabilidades bien definidas y está conformado por un conjunto de individuos que pueden asumir uno o mas roles. Estas comunidades, si bien son autogestionables, no son autodirigidas. Son dirigidas por una comunidad mayor, con el objetivo de que los esfuerzos estén orientados hacia la misma misión y visión, pero cada círculo es libre de organizarse de la mejor manera para alcanzar sus objetivos y cumplir sus responsabilidades.

¿Suena bien no? Pero, ¿como nace? ¿cuando es necesario? ¿cómo se implanta?, ¿cómo se puede hacer la transición? ¿se ven resultados inmediatos? Me extendería mucho explicando todo esto, sin embargo, afortunadamente, te tengo dos casos de estudio, el primero (Snapper, empresa de servicio de emisión de tickets en Nueva Zelanda), aplicado en una organización en el primer mundo, y el que te voy a contar, vivido en persona, en un país en vías de desarrollo, bajo un contexto económico social bastante desastroso.

Los inicios

Hace 2 años y medio que el anterior CIO de la empresa organizó el departamento en comunidades, el área conformada por cerca de 40 colaboradores, se dividió en 7 comunidades. La iniciativa fue presentada ante directivos quiénes dieron su aprobación y ante el equipo.

Esta forma de trabajo se fijó bastante rápido tanto en quienes conformaron cada comunidad, y nuestros clientes de igual manera comprendieron rápidamente nuestra nueva forma de organización y competencias. En menos de dos meses se creó la cultura de trabajo bajo los principios en la que esta se fundamenta. Quizás esto se deba a la naturalidad humana de trabajar en equipo desde la época en que o lo hacíamos, o nos devoraban los dinosaurios.

¿Por qué tuvimos que organizarnos de esta manera?

Las estructuras jerárquicas y burocráticas, donde un requerimiento pasa días mientras es canalizado por un jefe y escalado a sus subordinados, son el enemigo de un departamento de TI que busca ser ágil y dar respuesta, no en días sino horas.

Con las comunidades, los cargos pasaron a un segundo plano cuando la nueva estructura organizativa hizo énfasis en roles y las responsabilidades de éstos. Cada comunidad tiene un líder y todos los miembros pueden ser el líder en cierto momento.

Los requerimientos de prestación de servicio se encaminan mucho mas rápido, cada comunidad sabe qué le compete, que no y a quién otro sí; propiciando la gestión correcta del requerimiento; el tiempo de respuesta, dependerá de la agilidad de sus miembros.

Los resultados

La comunicación horizontal permitió llevar el equipo a un nuevo nivel. El tiempo de gestión de requerimientos se redujo considerablemente. Los proyectos inician mas rápido y finalizan con mayor tasa de éxito. El ambiente de trabajo es mas cálido, dinámico y competitivo.

A su vez, se crea y reforza en la persona el sentido de pertenencia, y llega a reconocer la importancia de sus habilidades y competencias, independientemente del rol que tenga dentro de la comunidad, creando consciencia de que su trabajo es apreciado directamente por quiénes envían los requerimientos y por el resto del equipo. En síntesis, es una de las estructuras organizativas que permite reforzar el compromiso.

Manteniendo el orden

De igual manera, toda estructura auto-organizada, adquiere independencia en la toma de decisiones, independencia que debe estar normada, supervisada, mas no controlada. Esta es la responsabilidad de una comunidad de gestión.

Si tienes consultas adicionales, o quisieras que adentremos mas en el tema, me lo puedes hacer saber en los comentarios.

Hoy en día, quizás te interese conocer, que estamos haciendo un experimento de expansión en escala, partiendo de esta estructura. De 40 personas, a más de 200 ¿Será posible? ¿Funcionará? ¿Deberá cambiarse algo, todo o nada?

Les cuento en la medida que vaya ocurriendo…

 

 

 

Si somos mas, ¿por qué ahora somos menos?

¿Te parece?

Le pregunté a mi compañero de trabajo el día de hoy. Un sábado que, en la nueva y económicamente revoltosa Venezuela, normalmente, es de descanso.

Y es que estábamos ambos dos, él ahora como un recurso de quien ahora es mi proveedor, y yo, como el máximo representante del área de IT, supervisando y dando las instrucciones para la corrección de lo que fue una tortuosa, fallida, y corregida implementación de un nuevo modelo de administración de los recursos que conforman el principal insumo de la cadena de valor de uno de mis clientes.

El considera que su nuevo líder debió estar ahí, yo considero que las personas que tengo para supervisar a mis proveedores, debieron estar ahí.

¿Cómo consigo el compromiso de las personas? ¿Cómo consiguieron el mío y el de mi compañero?

Sin duda es una decisión personal, pero estoy claro que no llega sola.

En Internet consigo que “… las personas comprometidas son generosas, ayudan a los demás y contribuyen a crear un clima positivo. Promueven el compromiso de otros… “

Me autoevalúo y recuerdo, cuando, de las personas a quien he mentoreado o liderado, han estado un fin de semama, hasta tarde o con hora de entrada pero sin salida, solucionando, mejorando o implementando, algo que sin duda es beneficioso para el negocio. Algunas siguen en el equipo, otras ya no.

Si, si he tenido personas comprometidas. Inculcadas o no por mí o por el entorno, las he tenido. Y no las conseguí de la noche a la mañana, como ocurrió con mi equipo actual, se tuvo que hacer camino. Debo recordar eso, cada persona se trabaja distinto.

¿Por qué siempre somos los mismos 10, de 60 que somos?

Si, recuerdo cuando éramos el dream team de 10 y hacíamos lo que hoy 60 hacen.

Bueno, también es que nos hemos hecho mas complejos…

Te estas autorespondiendo

Capacidad de adaptación y crecimiento ordenado, son características que hemos querido de nuestro software, en su mayoría, hecho en casa. 10 no podemos ya hacernos cargo de todo, para construir rápido necesitamos muchos y de los mas talentosos que podamos tener, para solucionar rápido quizás deban ser menos, muchas manos en la olla dañan el guiso.

Han entrado personas muy talentosas al equipo, me parece

A mi también. Quien quita amigo, quizás siempre serán los mismos 10, lo bueno, es que tenemos con qué mantener ese número o subirlo.

 

Un nuevo reto

Soy una persona con una memoria muy volátil, pero cuando algo me hace clic, una imagen, unas palabras, un momento… comienza a tomar un primer plano en mi mente pausando o interrumpiendo lo que sea que este haciendo.

Hace par de meses recibí el ascenso definitivo en la empresa para la cual trabajo. Soy el nuevo CIO del grupo de empresas para el cual trabajo. 5 años me tomó llegar desde el nivel de entrada en el área de TI, y el día del nombramiento, en almuerzo con el CEO, me dijo las siguientes palabras:

El tiempo en Venezuela es distinto al tiempo en cualquier otra parte del mundo, no espera por nadie. Somos perros. Vivimos años perrunos.

¿Y ahora qué?

En castellano Venezolano, “esto es un peo de otro nivel”. En estos dos meses “he llevado mas palo que una gata ladrona”, ya no tengo problemas personales, tengo cerca de 40 personas y sus problemas que ahora son mis problemas, pasé de estar asando un solo conejo a la vez y preocuparme de que quede bien cocido, a asar 10 o mas a la vez y que ninguno quede incomible.

Pero fuera de eso, me gusta.

Me gusta establecer estrategias y que sean consideradas por quienes veía como “los Dioses del Olimpo”. Me gusta la aceptación que han tenido mis compañeros de trabajo y el reto que supone para quiénes consideran que me queda aún grande el puesto. Significa que puedo hacerlo mejor. Me gusta conocer las necesidades de crecimiento de las personas y cómo puedo ayudarles a obtenerlo. Me gusta ver cómo optimizo los recursos de IT de la organización, cómo negociar con mis proveedores y saber que cuentan conmigo para maximizar la relación costo/beneficio de la continuidad operativa de 5 negocios en Latam.

Me gusta como este movimiento es la oportunidad, y me da la oportunidad, de formar otras personas y sucesores.

Venezuela no es un paraíso laboral precisamente, pero si uno de lleno de muchas oportunidades si sabes lidear con la presión económico social que nos envuelve día a día. Son años perrunos, pasan cosas todos los días, nos pasan cosas todos los días, nada es estable ni constante, lo único constante es que mañana no será para nada igual a hoy y que riesgos es lo que sobra.

Quien no se adapte a esta velocidad en este entorno, está destinado al fracaso.

Se dice que no hay profesional en Latam como el Venezolano, donde con poco o nada, haces milagros. Veremos si puedo hacer la magia.

Seguiremos informando.

Mi oficina ideal: espacios abiertos con opción a privacidad

Recientemente leí un post el cual describía por qué una de las personas entrevistadas se concentra mas en un café que en su propia oficina.

La tendencia de oficinas abiertas no es nueva, sin embargo sí lo es compartir el escritorio de trabajo; esto se ha impuesto con fuerza en el sector creativo y TI. Oficinas que requieren poco papeleo y donde la mayoría del trabajo se realiza y almacena en medios digitales, han adoptado esta práctica con el objetivo de crear espacios de trabajo mas “cómodos”.

Embed from Getty Images

Toda gran idea tiene sus detractores, los espacios abiertos suelen ser estéticamente hermosos, la sensación de amplitud, techos altos y espacios anchos, dan paz. Facilitan la comunicación y socializar con compañeros de trabajo. Pero todos estos beneficios se acaban cuando todos quieren conversar al mismo tiempo; sin paredes que atenúen los ruidos, te encuentras inmerso en muchas conversaciones y sonidos en tu cabeza que no permiten que escuches tus propios pensamientos y te concentres en tu trabajo.

Embed from Getty Images

Mi espacio de trabajo actual no dista mucho de esta tendencia. Somos islas de 6 a 8 escritorios cada una. Cada quien con los adornos o decoración que prefiera en su espacio. Todo es blanco, suelo, techo, paredes, escritorios, archivadores. Su único contraste son las sillas negras y la ropa que traemos encima. Ventanas panorámicas permiten la saludable y deliciosa iluminación del sol y a su vez una hermosa vista al cielo estrellado cuando cae la noche. Mi espacio actual cuenta con café expreso “ilimitado”, y 3 cubículos de reuniones con capacidad de hasta 8 personas cada uno. Como plus, tiene un balcón de la mitad del tamaño de la oficina principal con mesa de Ping Pong, plantas, TV pantalla plana, sonido y una barbacoa.

No me quejo, pero estas son las cosas que agregaría/quitaría para hacer el lugar en el que paso entre 8 a 10 horas diarias, aún mas cómodo de lo que es.

  • Áreas alfombradas: nada mas reconfortante que una pisada silenciosa y atenuada. Mi oficina ideal tiene áreas con sofás y alfombras donde relajarse o atender una llamada. No me quejo si mi isla esté alfombrada también.
  • Cubículos pequeños adicionales: si bien hay experimentos que demuestran que el sonido ambiental estimula el pensamiento y análisis, todo en exceso es malo. De vez en cuando uso una de las salas enormes para crear un espacio entre mi mente y mi laptop. Estos cubículos, preferiblemente alfombrados, serían el espacio ideal para el final del día o cuando toca acompañar a la noche.
  • Salas de siesta: yo no necesito dormir por las tardes para sentirme bien, pero cuando lo he hecho he sentido un plus de energía y concentración. Esto lo hago un momento en la hora de almuerzo en mi escritorio. Los mismos cubículos anteriores podrían acondicionarse para ello.
  • Mas color, menos blanco.
  • Suelo de madera y espacios con muebles con apariencia y olor a esta: la madera siempre me ha parecido relajante, tanto a la vista como al olor. Sé que es difícil de cuidar, ¿pero que cosa valiosa y buena no lo vale?
  • Café con leche ilimitado: porque un cappuccino al menos al día siempre es bueno. Sueño que en mi trabajo coloquen una máquina de café o en su defecto, un Nespresso. No me molestaría con varias de estas en distintos lugares 🙂

Compartí un Post con mis compañeros de trabajo, y quedé como el malo

 

Y no es la primera vez que ocurre. Mi papá siempre dice que nací para llevarle la contraria al mundo, y cuando dice mundo se refiere a él y a sus absurdas aseveraciones o normas sin fundamento.

De manera natural en casa se fué formando en mí esa necesidad de no aceptar las cosas tal cual son o que tratan de imponer sin una explicación objetiva, o al menos una evaluación crítica. “Eres demasiado terco”, “Es lo que tu dices y yá”, “Eres demasiado necio”, “Eres demasiado imbécil”, “Te encanta el caos”, entre otras frases de ‘defensa’ cuando no logran mi aceptación… al que le importe mi aceptación.

Este post describe un fenómeno que me encanta. El autor llama una nueva tendencia de desarrollo de software basado en la ‘moda’. Yo lo traduzco como desarrollo basado en emociones. En general, los desarrollos basados en emociones son aquellos cuando tomas X tecnología nueva porque has visto muchos posts en twitter o blogs referente a ella, la mencionan en conferencias, o Facebook o Netflix estan haciendo uso de ellas, y entonces decides emplearla para tu siguiente proyecto en el trabajo o startup, solo por eso, porque es lo nuevo y cool.

Chévere, pero luego ocurre lo siguiente:

  • La tecnología no es sencilla de entender porque es todo un paradigma nuevo, tu proyecto se retrasa, se retrasan las entregas, y se frustra el equipo.
  • Estas en medio del proyecto y ya existe una nueva versión que depreca cerca del 80% de lo que ya has hecho pero era un cambio necesario para madurar el nuevo framework del que todos hablan. Toca hacer todo de nuevo.
  • Diseñaste toda una solución basado en premisas y documentación y la hora de implementar las promesas de funcionalidades, velocidad y estabilidad que tanto presumían en realidad no están ahí.

Personalmente me encanta siempre probar nuevas cosas, de manera crítica, y comparando contra lo que ya conozco. En el trabajo he introducido tecnologías de integración que hoy sustentan gran parte de la automatización de la cadena de valor del negocio. Y cuando lo hice, fue porque previo a eso ya había probado otras alternativas, y empleando un análisis de características. Otro compañero de equipo probó varias soluciones para el desarrollo de aplicaciones móviles antes de elegir el enfoque que la nueva generación ha heredado. Pero esto solo lo saben mi antiguo jefe, compañeros de trabajo y yo.

Hoy por hoy, de mi grupo inicial de trabajo quedamos solo tres, y hay cerca de 30 personas mas jóvenes, igual de emocionados y enérgicos en probar nuevas cosas.

Recientemente se eligió emplear dos tecnologías emergentes para dos nuevos desarrollos, se han hecho mesas de trabajo alrededor y se ha empleado mucho tiempo realizando pruebas y prototipos. Todo muy bien salvo por eso último, mucho tiempo empleando pruebas y prototipos y cuando pregunté cuál es la opción B contra la que van a comparar sobre qué van a decidir usar obtuve esto: “Bueno, creemos que no hará falta una opción B”

Wrong, really Wrong

Compartí entonces el artículo que les menciono al inicio con el siguiente mensaje en el asunto del correo “Leamos de manera crítica y revisemos nuestras recientes decisiones”.

A la mañana siguiente: “Por qué eres así?”, “Estas creando caos”, “Solo porque no fue tu idea…”.

Recibí muchas acusaciones que solo confirmaban que los acusadores no habían leído el artículo por completo. El mismo, al final, detalla varias estrategias para que los desarrollos basados en emociones salgan exitosos y saber bien que esperar antes de realizar un plan de trabajo y propuesta de producto.

Me decepcionó horrible los juicios levantados contra mi intención de ayudar, pero me reconfortó que algunos si leyeron por completo el post y los vi estableciendo nuevas tareas que se desprenden de esas estrategias dentro de la programación del proyecto.

Mi mantra como desarrollador, evangelizador de tecnologías y gerente de proyectos de software es muy sencilla: no hay que reinventar la rueda, ya todo esta hecho, solo hay que descubrirlo, probarlo y usarlo.

Cómo configurar la conexión a SQLServer mediante JDBC (NetBeans, Java 8, SQLServer Express 2016, Windows 10…)

Nunca antes, luego de haber aprendido cómo conectarme a distintas bases de datos mediante JDBC, me había costado tanto una como lo fue con SQLServer (casi 15 minutos). Gracias a Google, Stack Overflow y conocimiento previo salió medianamente rápido, pero vamos, que a esta gente le gusta complicar a veces las cosas.

Archivo de propiedades de conexión (config.properties)

Ya sabemos que es de muy mala educación, y prohibido además, hard-codear valores o atributos que pueden cambiar en el tiempo de una computadora, una red, etc… a otra; entre ellos las propiedades de conexión a una base de datos. Es por eso, que lo ideal es colocarlo en un archivo de propiedades como los que estamos acostumbrados a hacer:

#Ubicado en src\res\config.properties
db.url=jdbc:sqlserver://servidor\\SQLEXPRESS;databaseName=nombre_bd;integratedSecurity=true
db.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
db.user=usuario
db.password=clave

Respecto a los valores db.url y db.driver, recordemos que cada manejador de base datos  (o DBMS, como quieran llamarlo) tiene su forma de establecer estos valores, los que les indico funcionan con SQLServer Express 2016; acá mucha mas información respecto a cómo formar la url.

Y una clase en Java sencilla que lo lea:

package th.control.db;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;

/**
 *
 * @author jescobar
 */
public final class DBConnection {
 static InputStream inputStream;
 static Connection conn;
 
 public static void connect() throws Exception {
 inputStream = Class.forName("th.control.db.DBConnection").getClassLoader().getResourceAsStream("config.properties");
 
 Properties prop = new Properties();
 
 prop.load(inputStream);
 
 
 Class.forName(prop.getProperty("db.driver"));
 conn = DriverManager.getConnection(
 prop.getProperty("db.url"), 
 prop.getProperty("db.user"), 
 prop.getProperty("db.password"));
 
 System.out.println("Me conecté!!!");
 }
}

Todo bien, compila al pelo, pero al ejecutar un indeseado java.lang.NullPointerException te aparece en la línea donde intentas cargar el archivo de propiedades mediante el método prop.load(inputStream).

run:
Exception in thread "main" java.lang.NullPointerException
 at java.util.Properties$LineReader.readLine(Properties.java:434)
 at java.util.Properties.load0(Properties.java:353)
 at java.util.Properties.load(Properties.java:341)
 at th.control.db.DBConnection.connect(DBConnection.java:26)

El punto es que ni NetBeans ni Eclipse te van a decir dónde colocar el archivo para que sea leído, debes especificar en cada IDE que rutas incluir en el classpath. En NetBeans una solución sencilla es moverlo al directorio src.

#Ubicado en src
db.url=jdbc:sqlserver://servidor\\SQLEXPRESS;databaseName=nombre_bd;integratedSecurity=true
db.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
db.user=usuario
db.password=clave

Ahora tu problema va a ser otro…

Colocando donde es el Driver de conexión

Yo estoy partiendo de que ya te habías descargado el driver JDBC de Microsoft, bien sea el sqljdbc41.jar o el sqljdbc42.jar (clic acá si no lo has hecho) para conectarte con su BD, creaste un directorio lib en el proyecto, y ahí lo metiste. Pero al tratar de ejecutar, recibes otro mensaje de que no vas…

run:
Exception in thread "main" java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
 at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
 at java.lang.Class.forName0(Native Method)
 at java.lang.Class.forName(Class.java:264)
 at th.control.db.DBConnection.connect(DBConnection.java:29)

Y es que tienes que decirle a NetBeans donde estas colocando tus librerías externas. Algo así logras presionando sobre el botón “Add JAR/Folder” y especificando la ruta que visualizas en la imagen.

002

Y con lo anterior, al tratar de ejecutar… Cambiamos de problema! Uno mas de no sabemos cuantos mas… Pero lo que si sabemos, que como todo, es que en algún momento ya no habrán.

Ahora la librería que colocamos nos está diciendo que no logra conectarse con el servidor SQLServer…

run:
Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: No se pudo realizar la conexión TCP/IP al host localhost, puerto 1433. Error: "Connection refused: connect. Verifique las propiedades de conexión, compruebe que hay una instancia de SQL Server ejecutándose en el host y aceptando las conexiones TCP/IP en el puerto y compruebe que no hay ningún firewall bloqueando las conexiones TCP en el puerto.".
 at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:191)
 at com.microsoft.sqlserver.jdbc.SQLServerException.ConvertConnectExceptionToSQLServerException(SQLServerException.java:242)
 at com.microsoft.sqlserver.jdbc.SocketFinder.findSocket(IOBuffer.java:2369)
 at com.microsoft.sqlserver.jdbc.TDSChannel.open(IOBuffer.java:551)
 at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1963)
 at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1628)
 at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1459)
 at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:773)
 at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1168)
 at java.sql.DriverManager.getConnection(DriverManager.java:664)
 at java.sql.DriverManager.getConnection(DriverManager.java:247)
 at th.control.db.DBConnection.connect(DBConnection.java:30)

Acomodando las cosas para que SQLServer escuche

No tiene sentido que si usas el Microsoft SQL Server Management Studio, y ahí puedes hacer lo que te plazca (creates, updates, inserts, tanto de datos como esquemas, bases de datos, etc…) si tratas de conectarte desde otra aplicación, estén las puertas cerradas. Para abrirlas hay que hacer lo siguiente:

En una línea de comandos (cmd), o desde el comando ejecutar (Tecla Win + R), ejecuta los siguiente:

 C:\Windows\SysWOW64\SQLServerManager13.msc

Se te abrirá una ventana como la siguiente (yo ni sabía que existía). Es el SQL Server Configuration Manager.

001

Y tal como muestra la imagen siguiente, habilita las comunicación TCP/IP dentro de Protocolos de SQLEXPRESS.

003

El SQL Server Configuration Manager te va a decir que necesitas reiniciar el servicio para que los cambios tomen efecto, la siguiente imagen te indica cómo hacerlo.

004

Le damos play a la clase y…. Otra excepción… Lo bueno es que esta nos dice explícitamente que hacer!

run:
Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: No se pudo realizar la conexión con el host localhost, instancia con nombre sqlexpress. Error: "java.net.SocketTimeoutException: Receive timed out". Verifique los nombres del servidor y de instancia, compruebe que no hay ningún firewall bloqueando el tráfico UDP al puerto 1434. Para SQL Server 2005 o posterior, verifique que el servicio SQL Server Browser se está ejecutando en el host.
 at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:191)
 at com.microsoft.sqlserver.jdbc.SQLServerConnection.getInstancePort(SQLServerConnection.java:5247)
 at com.microsoft.sqlserver.jdbc.SQLServerConnection.primaryPermissionCheck(SQLServerConnection.java:1871)
 at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1608)
 at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1459)
 at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:773)
 at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1168)
 at java.sql.DriverManager.getConnection(DriverManager.java:664)
 at java.sql.DriverManager.getConnection(DriverManager.java:247)
 at th.control.db.DBConnection.connect(DBConnection.java:30)

Nos dice que verifiquemos que un fulano servicio llamado SQL Server Browser debe estar iniciado. Y si revisamos la última imagen, hay algo ahí llamado igual. No hace falta imagen para esto sino sentido común: Clic derecho -> Iniciar… Play de nuevo!

run:
feb 05, 2017 9:59:38 AM com.microsoft.sqlserver.jdbc.AuthenticationJNI <clinit>
ADVERTENCIA: Failed to load the sqljdbc_auth.dll cause : no sqljdbc_auth in java.library.path
Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: Este controlador no está configurado para la autenticación integrada. ClientConnectionId:056b6f27-b750-4a8d-bda7-188d11f2aae9
 at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:2400)
 at com.microsoft.sqlserver.jdbc.AuthenticationJNI.<init>(AuthenticationJNI.java:68)
 at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:3132)
 at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$100(SQLServerConnection.java:43)
 at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:3123)
 at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7505)
 at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2445)
 at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1981)
 at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1628)
 at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1459)
 at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:773)
 at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1168)
 at java.sql.DriverManager.getConnection(DriverManager.java:664)
 at java.sql.DriverManager.getConnection(DriverManager.java:247)
 at th.control.db.DBConnection.connect(DBConnection.java:30)

Ok, esto sigue descontrolado! Y ahora qué?

Bueno, resulta que Microsoft permite dos maneras de conectarnos con su base de datos, y eso se lo decimos en el archivo de configuración. El parámetro integratedSecurity (integratedSecurity=true) indica si se usan las credenciales de Windows para conectarnos o si por el contrario, debemos especificar un usuario o contraseña (integratedSecurity=false), tal cual estamos haciendo. En otras palabras, SQLServer se esta pasando por el forro nuestro usuario y clave porque está usando nuestras credenciales de Windows para iniciar sesión…

Hay dos soluciones para esto… La que puedes inferir en el párrafo anterior (coloca en false el valor de integratedSecurity), o la otra, localizar el bendito sqljdbc_auth.dll y pegarlo en la carpeta System32 de Windows. Ambas funcionan, y el fulano .dll está en el mismo archivo donde bajaste los drivers JDBC de SQL Server hace unos parrafos mas arriba.

Cuando ejecutes de nuevo tu clase, este será el mensaje que obtendrás:

run:
Me conecté!!!

Saludos!

Acerca de posts que te dicen cómo llegar a la cúspide del éxito y otros ideales…

Una de mis reglas personales es nunca eliminar o marcar como leído correos o digests de mis suscripciones favoritas, entre ellas Medium, LinkedIn e InfoQ. Medium es una excelente fuente de lecturas ligeras para cualquier tema o tópico. Sin embargo, una de las cosas que me ha llamado la atención  es cómo ha crecido el volúmen de artículos basados en tips para conseguir el éxito, ser productivo, alcanzar la felicidad, entre todas esas otras cosas que todos deseamos para nosotros.

Los hay de todas formas, desde textos que fácilmente pueden ser un libro, tips cortos, ejemplos de ‘lo que yo hice y mírame donde estoy ahora’, entre otros…

Y yo me pregunto, es en serio posible eso? Y cuando digo ‘eso’, me refiero a que existen recetas inequívocas para rendir el tiempo al máximo, ser conocido por todos, y haber hecho $1.000.000 antes de cumplir 30 años.

Sin desprestigiar ninguno de esos posts, porque de hecho me gusta leerlos y tomar para mi lo que en verdad siento se fundamenta bien, creo que las circunstancias influyen mas de lo que creemos en alcanzar ese estado de iluminación.

El post mas reciete que he leido al respecto es este, y me gustaría discutir cada uno de esos puntos.

13 Cosas a las que debes renunciar si quieres ser exitoso

  1. Renuncia a tu estilo de vida insaludable. En resumen, deja de comer comida basura y ejercítate. Todos sabemos que esto es saludable para el cuerpo, pero estoy seguro que existen mas gordos millonarios, buenos o malos, súper exitosos y adinerados. En lo personal, me gusta comer de todo, y también ejercitarme. A mi la comida chatarra me desestresa, y la actividad física me reduce estrés, ansiedad y me ayuda a dormir mejor.
  2. Renuncia a metas de corto plazo. Y busca tener mas bien de largo plazo. Esto a mi no me sirve, en lo personal considero que ambas son importantes. Mis metas de corto plazo, que son la mayoría, me motivan y mejoran mi autoestima. Nada mas gratificante que sentir que alcanzaste algo en poco tiempo lo cual creías podría tomar mas. Quizás el mejor enfoque que se le puede dar a esta recomendación es tener metas de largo plazo compuesta de muchas metas que se puedan conseguir mas rápidamente. Hitos lo llaman.
  3. Deja de irte por lo seguro. Arriésgate a tomar grandes oportunidades y no tengas miedo de fracasar. Es fácil decirlo, pero el miedo al fracaso es natural y mas cuando te lo estas arriesgando todo. Sin un plan B, no creo esta sea una buena idea en un mundo en el cual si te quedas sin medio, no sobrevives. Aunque en realidad existen muchos contextos para esta recomendación, confieso ser del grupo que arriesga en grande pero porque tengo un soporte que me sostenga si caigo: mis padres, amigos y recientemente, una relación que me ha enseñado viendo su ejemplo de vida. Me ha tocado ambas, volver a empezar y terminar con el doble con lo que empecé.
  4. Deja de excusarte. Eres el único responsable de tu vida, sin importar qué. Bueno, agree completamente con esto.
  5. Deja de tener una mente cerrada. Y creer que las personas exitosas lo son porque tienen cierto talento y ya. Dicen que todos tenemos un talento en el que difícilmente alguien nos supera con facilidad. Puede ser frustrante tratar de ubicar ese talento que dicen que todos tenemos; por esto, estoy de acuerdo con el post en que las destrezas deben construirse.
  6. Deja de creer en la bala mágica. El éxito de un día para otro es un mito. Creo es mas de lo mismo que se puede ver en puntos anteriores…. Es llenar espacio de más. Y si, yo si creo en la bala mágica o como lo llamo, suerte. Las casualidades existen y así como traen cosas buenas, ya que el éxito es algo bueno, por qué no podría pasar así? Por casualidad…
  7. Deja el perfeccionismo. Nada será perfecto, no importa cuanto trates. Otro agree. Mi franela favorita tiene escrito ‘Perfect is boring’. No se que opinen los japoneses de este lineamiento. Y particularmente en mi trabajo, me ha tocado lidear con mentes así. En lo personal, busco que lo que hago sea realmente útil y se sienta muy bueno. Creo que nada me ha salido perfecto en la vida.
  8. Deja de ser multi-tasking. Estar siempre presente y enfocado en una sola tarea hasta completarla, es importante. Ush… Me dolió. En lo particular me cuesta hacer esto en mi día a día. Y mi complejo de multi tarea se ha incrementado ahora que vivo solo. Cómo cocinas, lavas y limpias tu hogar en medio día si solo hay agua de 7 a 8 de la mañana? Pues lavas los alimentos primero, luego pones una tanda de ropa en la lavadora, luego llenas barriles de agua, picas los alimentos porque ya tienes hambre, sacas la ropa sin tenderla y colocas la segunda tanda, sigues recolectando agua, colocas los alimentos en la cocina, tiendes la primera tanda de ropa, hay mucha hambre y comes lo que va estando listo, queda poco tiempo, 3ra y ultima tanda de ropa, el resto de los alimentos se te quemaron un poco, igual te los comes porque aún hay hambre y desperdiciar comida es algo que no toleras… Etc… Eso en el hogar, si les doy un ejemplo del trabajo, me salen cientos de líneas. No considero que el multitasking sea malo, considero que el multitasking mas ansiedad, es malo. Y de la ansidedad hablaré mas abajo. Pude mas bien limpiar y lavar y luego comer con calma, aguantar hambre es algo por lo que todos hemos pasado y nadie (sabiendo que tiene cómo y qué comer) ha muerto. La sensación de terminar varias cosas de golpe en lo particular me agrada.
  9. Deja tu necesidad de controlar todo. Despégate de las cosas que no puedes controlar y enfócate en las que sí puedes. Doble ouch! Si hablamos de este complejo que con mucho trabajo me ha tocado trabajar, sale un libro. Pero ha resultado, no para sentir que alcanzo el éxito, sino para tener tranquilidad emocional. Aún me queda trabajo por hacer con esto.
  10. Deja de decir SI a las cosas que no contribuyen con tus objetivos. Saber decir que NO es liberador, punto. Lo aprendí que si ayer.
  11. Deja las personas tóxicas. Las personas con quien mas no las pasemos, influirán en lo que nos convertiremos. Medianamente agree. Lo de personas tóxicas lejos, si. Nadie medianamente razonable quiere a su lado a alguien que aporte negatividad. Pero  considero que la individualidad sí existe sin importar con quién mas te la pases.
  12. Deja la necesidad de gustarle a todo el mundo. Eres un nicho en el mercado, algunos estarán interesados, otros no. Estoy clarísimo con esto. La búsqueda de la aceptación puede ser frustrante, mas bien enfócate en acercarte en quien en tí por tus atributos y forma natural de ser ha puesto interés.
  13. Deja tu dependencia a las redes sociales y la televisión. No sufro de lo segundo, nunca me sentí atraído por ese aparato, y de lo primero me he dado cuenta a tiempo… Que pobre me sentía luego de sábados y domingos enteros pegados al Twitter e Instagram. Tiempo totalmente perdido diciéndole a otros que me gusta lo que colocan en vez de estar paseando, leyendo un libro, escrito un post o un programa (si, programar), estudiando o compartiendo con personas en persona. Como los vicios, las redes sociales deben consumirse con moderación.

Se leen opiniones…