26 de feb. de 2014

Los mandamientos del desarrollador

  1. Comprende y acepta que te vas a equivocar . Nadie es infalible… ni siquiera tu.
  2. No eres tu código . Si alguien te dice que algo en tu código está mal, no te lo tomes como un ataque personal que haya que resolver en un duelo al alba.
  3. No importa cuanto sepas de algo, siempre habrá alguien que sepa más . O lo que es lo mismo: a los sabelotodo les terminan tocando la carita, acepta los consejos de los demás.
  4. No reescribas código sin consultar primero
  5. Trata a la gente que sabe menos que tu con respeto, deferencia y paciencia . A nadie le gustan los perdonavidas y similares.
  6. La única constante en el mundo es que cambia . Es decir: no tengas miedo al cambio. Es más, aprovéchalo.
  7. Las verdaderas posiciones de autoridad parten del conocimiento, no del puesto
  8. Lucha por lo que crees firmemente, pero acepta la derrota si se produce . Vamos, que no seas un Roncero de la vida y el desarrollo.
  9. No seas el tipo del cuarto oscuro . Siempre es mejor trabajar en espacios abiertos y colaborativos… y con ventanas.
  10. Critica el código, no al programador. Se amable con el desarrollador, no con el código. El reverso del segundo mandamiento.

19 de feb. de 2014

Cualidades de un buen programador

  • Un programador, un economista, un profesional, un lo que sea, debe ser un artesano, un amante de su trabajo, de su ciencia, con fuertes conocimientos técnicos.
  • Todo emprendedor debiera tener conocimientos jurídicos y de programación. Suponen una nueva forma de pensar, de entender los procesos y al otro. (justo como con los idiomas).
  • La empresa debe pensar siempre en el cliente, en facilitarle la vida, en acercar a los que no son expertos al producto.
  • Debes ser capaz de detectar de talento, de atraerlo y de exigirle, incluso con feedbacks muy duros. Asume que es difícil, seguramente imposible, no quemar gente en este proceso.
  • Frente al oportunismo y la perseverancia, potencia valores superiores como la innovación, la calidad, el diseño.
  • Ten clara cual es la filosofía de la empresa, sus valores, y cíñete a ellos.
  • El gestor de la empresa debe ser un hombre que conozca las distintas facetas de la misma, pero el conocimiento del producto es básico.
  • Los buenos artistas copian, los genios roban . Tu misión es copiar y sacar chispas a aquellas tecnologías, productos y procesos no explotados suficientemente por otros.
  • Olvida el ego.
  • Conserva la inquietud y una mente despierta.

25 de set. de 2013

Pruebas

Cuando se desarrolla un proyecto de software nunca se debe subestimar el plan de pruebas. Este apartado es crucial, tanto para ofrecer la calidad que espera el cliente bajo los criterios que se acordaron en la definición del proyecto como para ofrecer un software robusto libre de errores. Como desarrolladores tenemos que procurar que nuestro código esté libre de bugs y cumpla los requisitos funcionales.

Cuando definamos un plan de testing o QA es importante recordar algunas de la lecciones que prácticamente todos los desarrolladores que hemos participado en un plan de pruebas hemos aprendido de forma práctica incluyendo algún quebradero de cabeza en su momento.

¦Aunque el proyecto vaya mal en tiempo o en costes, nunca hay que recortar el tiempo de pruebas. Nos tenemos que asegurar siempre que el proyecto que entreguemos esté libre de errores, si recortamos en pruebas y además vamos apurados estaremos cometiendo muchos más errores de los habituales.

¦Lo más importante que tenemos que probar son los requisitos funcionales que definen el alcance del proyecto. En definitiva, esto es lo que conforma la parte del negocio que fijamos con el cliente y los usuarios como entregable y tiene que satisface sus necesidades.

¦No debemos olvidar las pruebas de carga, es la única forma de que probemos al 100% que toda la parte técnica funciona correctamente.

¦La gestión de configuraciones y versiones es un apartado fundamental del alcance y la gestión de cambios. No debemos descuidar este apartado ya que nos podrá acarrear problemas a corto/medio plazo.

¦Siempre que corrijamos un error debemos volver a testear todo. Es fundamental asegurarnos que no se haya roto nada por otro lado.

¦Aunque parezca obvio, nunca hagas pruebas en el entorno de producción. Invierte lo que haga falta en un entorno de pre-producción sólido y lo más parecido posible. Es una inversión que te salvará de muchos apuros y te permitirá asegurar que no habrá diferencias entre las pruebas y cuando se suba definitivamente a producción.


¦Es recomendable tener especialistas en testing o un equipo dedicado al QA en tu empresa. Testear no se debe tomar a la ligera ni ser un mero tramite burocrático para declarar la tarea como finalizada. Es fundamental que se haga un trabajo completo probando cada funcionalidad. Si no es posible tener un equipo sólo dedicado a eso, es conveniente que los encargados en ese momento de testear sólo se dediquen a probar y reportar errores.

¦Es muy recomendable involucrar a los usuarios claves que han participado en la definición de los requisitos de la aplicación. Mientras se prueba pueden obtenerse un importante feedback de usabilidad.

¦Antes de comprar un producto comercial para nuestro proyecto, es importante testearlo.

¦Nunca hagas pruebas en producción. Por si no había quedado claro.

Algunos temas relevantes que se tratan en la carrera son:
  • Pruebas en el desarrollo del software
  • Metodologías y gestión de testing
  • Testing funcional
  • Testing de performance
  • Documentación y reportes
  • Test cases
Fuente: desconocida

Crisis

  • Tú no eres tu profesión. Eres una persona con virtudes y conocimientos que quizás no hayas explorado. Fórmate en algo distinto a lo que te dedicabas, pero que te guste, te apasione y sobre todo que sepas que puede ser una labor necesaria en la sociedad.
  • No estás tan mal. Tal vez me odies al leer esa frase ¡Hasta yo me caigo regular! pero es cierto. Malo es vivir una guerra (y en la actualidad, existen) no tener nada, ni ayudas sociales, ni familia, ni amigos… nada.
  • La autoestima alta. Por favor huyamos de los vampiros emocionales, ese tipo de gente a la que le va bien y están deseando que salgas a la calle para hacerte un interrogatorio. Sí, son esas mujeres y hombres que se alegran de los problemas de los demás. Tengamos compasión por sus vacías vidas.
  • Fuera depresión. Conozco a muchas personas que la están padeciendo. La depresión es peor que un dolor de muelas, te parte por dentro y lo peor, crees que no hay luz al final del túnel. Tranquilo, saldrás. Y no solamente lo harás sino que te habrás convertido en una persona más fuerte y que sabe quién es.
  • Apaga la televisión. No todos los medios de comunicación disfrutan narrando desgracias, pero la gran mayoría sí: captan audiencia. Ni estamos tan mal ni estábamos tan bien. Lee un libro, si tienes acceso a Internet consulta blogs, páginas web relacionadas con temas laborales e infórmate de lo que a ti te interesa.
  • Lo siento, pero no hagas mucho caso a los economistas. Ellos mismos suelen decir que pueden hacer análisis brillantes pero una vez que el problema ha pasado. Las soluciones normalmente están en manos de un ciudadano anónimo que no tiene acceso al poder. La inteligencia no la reparten en las universidades.
  • Si has pensado en marchar a otro país: aprende el idioma antes, comprueba qué necesidades tienen y en qué sector podrías encajar, nada de irse a la aventura, al menos en estos tiempos donde cada euro tiene mucho valor.
  • Sonríe. En serio. Escucha programas de humor en radio, la risa es la mejor terapia. En este país hemos tenido grandes cómicos como Gila (que tuvo una vida muy dura)que supo convertir las penurias y algo tan duro como una guerra en su profesión: haciendo humor negro.
  • No te rindas. Jamás. No creas en los “no puedes”, “no vales”, “eres demasiado mayor”. Falso. Siempre se está a tiempo cuando se está vivo. En cuanto el agobio acuda a ti haz lo que más te guste, no te sientas culpable. Tienes derecho a divertirte

Fuente: desconocida

15 de set. de 2013

Como documentar tu codigo fuente



Sin duda es uno de los puntos que no nos agrada LA DOCUMENTACION, mas sin embargo es importante tanto para tu equipo de trabajo y para nosotros mismo, esto debido a que no siempre recordamos todo y cuando alguien viene a dar mantenimiento a nuestros garabatos se le dificultara y a su vez se convierte en pérdida de tiempo, así que dejo un resumen de que podemos hacer para tomar en cuenta en nuestros proyectos y algunos enlaces de apoyo:

  • Comenta solo el codigo que no pueda decir la funcionalidad por si mismo
  • Comenta a varios niveles (recuerda hacerlo uniformemente)
    • Documentacion por clases (descripcion,autor,fecha y ultima modificacion)
    • Documentacion por metodo (descricpion del objeto, funcionalidades, parametros y resultados)
    • Documentacion de variables IMPORTANTES
    • Documentacion de limitaciones
    • Documentacion de algoritmos implementados
Recuerda hacer los estandares que se llevaran acabo con tu equipo de trabajo es importante definir las sintaxis para llevar un mismo lineamiento, ademas existe en VS tags que puedne apoyarte en facilitar estas tareas.
  • Usa parrafos comentados (no uses solo una linea dividela en parrafos para que sea mas legible)

// Comprobamos si todos los datos
// son correctos
foreach (Record record in records){
    if (rec.checkStatus()==Status.OK){
        ...
    }
}
  • Tabular los comentarios de lineas consecutivas

const MAX_ITEMS = 10; // Número máximo de paquetes
const MASK = 0x1F;    // Máscara de bits TCP
  • No dudes de la capacidad de analisis de tu equipo

if (a == 5)     // Si a vale cinco, ...
    counter = 0; // ... ponemos el contador a cero
    ...
  • Se profesional (No insultes o coloques frases fuera de contexto de lo que es tu trabajo)
    • Ejemplo: "este parche corrije el efecto colateral producido por la patética implementación del inepto desarrollador inicial"
  • Revisa la ortografia
  • No comentes si no es necesario y en caso de ser necesario solo se simple y directo
  • Piensa a futuro y escribe la idea que te gustaria leer si fuera el caso en que tu revisaras la documentacion para alguna correcion
  • TODO es esencial en trabajos de equipo
  • Documenta mientras desarrollas NO DESPUES ya que pudieras NO recordar detalles esenciales despues
  • Actualiza los comentarios asi como el codigo fuente
  • Regla de oro ESCRIBE CODIGO LEGIBLE a la vista (a menos que sea JAVASCRIPT :)
  • Evangeliza a los de tu equipo con estas buenas practicas, por el bien comun.

FileUpload en ASP.Net con carga automatica



Una de las cosas que más nos molesta usando con los controles de ASP .Net es que el asp:FileLoad no cargue automáticamente los archivos y tengamos que hacer más trabajo para ello, bueno aquí les dejo un proyecto que he realizado con el cual se hace la carga automática con ayuda de JQuery y un poco de magia, les dejo el enlace al proyecto.

 GitHub

14 de set. de 2013

Plugin para progressbar

Progress:%

Tu perfil está un 70% completado, añade una foto desnudo/a.


function updateProgress(newValue) { 
    var progressBar = document.getElementById('p');
    progressBar.value = newValue; 
    progressBar.getElementsByTagName('span').textContent = newValue; 
    return false;
}

updateProgress(33);

Cómo evitar los problemas durante el desarrollo de un proyecto

La mejor estrategia para tratar errores, es evitando que sucedan. Muchas veces escuchamos la ya conocida frase "Tienes que ser proactivo y no reactivo", es decir, planear las cosas y no estar apagando fuegos. A continuación veremos 10 consejos que te podrán ayudar a mejorar y a aprender cómo puedes evitar errores desde antes que se presenten.

Aprende de los errores de los demás

Muchas veces nos dicen que "nadie aprende en cabeza ajena", eso es totalmente falso, muchas veces tenemos compañeros experimentados o amigos que han tenido tropiezos o fallas en sus proyectos y muchas veces algunos de ellos tienen el valor de hablarlos y explicar cómo fue que enfrentaron esa situación díficil, tal vez no sea lo mismo a que si tu lo vivieras, pero por lo menos te pueden dar un panorama sobre cosas que ya se han hecho en el pasado de manera erronea y que puedes evitar hacer lo mismo.

Investiga primero

Hace unos años era aceptable la práctica de "prueba y error", pero ahora con tanta información disponible en Internet creo que es más conveniente que siempre antes de tirar 1 sóla línea de código de algo que no sabes o no entiendes claramente (tal vez una nueva tecnología) debes investigar a fondo para posteriormente trabajar en la solución, esto te evitará muchos problemas de re-trabajo a la larga.

Planeación estratégica

La planeación estratégica es pilar fundamental para un proyecto, si no planeamos no sabemos hacía dónde vamos y hacía dónde queremos llegar, siempre tenemos que tener bien trazada la ruta de nuestras metas y objetivos, así que si aún no has hecho una planeación para tu proyecto no esperes más, sin duda es el punto más importante para el éxito de un proyecto.

Utiliza estándares y plantillas

Los estándares se crearon con la idea de hacer siempre las mismas cosas de la misma manera y que además un grupo de personas expertas en el área fueron los que aprobaron dichos estándares, es decir, es bueno a veces ser creativo y original en nuestros trabajos, pero en ciertas áreas siempre se deben seguir estándares, de lo contrario se nos dificultarían las tareas y podríamos tener algún problema en un futuro.
De igual manera el uso de plantillas es bien visto, por ejemplo, podrías usar una plantilla de algún contrato o documento oficial, imáginate que cada vez que tengas que hacer uno lo empieces desde cero, y además si llegarás a tener algún error en algún documento importante podría costarte muy caro.

Comunicación y coordinación con todo el equipo

La comunicación es fundamental para el éxito de un proyecto, todo el equipo debe conocerse y tener buena comunicación y coordinación, una herramienta imprescindible para el trabajo colectivo es un controlador de versiones, en lo personal recomiendo Git y Github, aunque muchas empresas todavía siguen utilizando SVN, por su fácil integración al Jira.

Toma el tiempo necesario

Muchas veces debemos saber trabajar bajo presión, eso es normal en los proyectos, pero en ocasiones hay actividades que requieren de más tiempo para que salgan bien, y si tu caso es este házlo saber a tu project manager o a tu líder de proyecto, que la tarea que te asignaron requiere más tiempo del estimado originalmente, tal vez por que necesitas investigar más a fondo, o tal vez por que la infraestructura actual no es suficiente para llevarlo a cabo, etc, hay muchos factores que pueden retrasar una actividad, pero siempre debes ser consciente y decirle la verdad a tu superior, si la actividad no se puede solucionar en el tiempo estimado dilo no te quedes callado, pero también argumenta el por qué, muchas veces es peor trabajar mal por trabajar rápido en una actividad que al final tendrás que volver a re-trabajar, así que ten presente eso.

Reutilización de código

Muchos programadores siguen creyendo que tienen que hacer todo el código ellos mismos, si no se sienten que están copiando o que no están haciendo bien su trabajo. Esta mentalidad debe desaparecer, para eso fue creado el Software Libre justamente para aprender y compartir el conocimiento que adquirimos en cada proyecto, y si alguien ya realizó algo que tu estas buscando y además publico su código con licencia libre, ¿por qué no usarlo?, inclusive puede ser que tu puedas mejorar esa librería y compartir tus mejoras con el autor, esto sin duda ayuda bastante para no "reinventar la rueda" y hacer las cosas de una manera más rápida y fácil, debido a que ya la mayoría de librerías o códigos abiertos cuentan con documentación o alguna comunidad que le pueda dar soporte.

Utiliza listas de actividades

Antes de un viaje de avión, el piloto y el copiloto están ocupados en llevar a cabo una larga y detallada lista de actividades. Listas de verificación se pueden utilizar durante las diversas fases del proceso de desarrollo del proyecto. Son particularmente útiles cuando se trabaja con sistemas grandes y cuando una sola persona se encarga de múltiples tareas.
Por ejemplo, una lista que detalla los pasos necesarios para el sistema de encendido del avión ayudará a evitar la realización de tareas fuera de orden y prevenir errores de omisión. Todo es demasiado fácil para los desarrolladores, dan elementos importantes como el acceso al sistema cuando están ocupados haciendo las pruebas finales y la documentación.

Prueba, prueba, prueba y vuelve a probar...

Hay un nivel saludable de paranoia acerca de la entrega de trabajo libre de errores. Debes probar tanto como sea posible tan pronto como sea posible. Los errores en el código son típicamente más caros de corregir cuando se encuentra cerca del final del proceso de desarrollo. Normalmente cuando se acerca la fecha de nuestro deadline es cuando algunos errores que debieron ser reparados semanas o meses atrás aparecen, es por eso que desde un principio debes ser muy cuidadoso con las pruebas que haces.

Vuelve a probar con terceros

Siempre antes de lanzar un nuevo producto de software, es bueno lanzar primero una versión Beta la cuál podrá ser utilizada y probada por usuarios mortales que serán capaz de detectar errores más fácilmente que el propio desarrollador, esto pasa por que uno como desarrollador ya sabemos como hacerlo funcionar, pero cuando otra persona ajena al proyecto utiliza el proyecto puede realizar cosas que tal vez ni siquiera teníamos contempladas y esto podría causar varios errores, pero siempre es mejor arreglarlos antes de lanzar el producto final.


fuente

Tecnica pomodoro

Una de las tecnicas paa el manejo de mis actividades sin duda ha sido el POMODORO, uno como desarrollador le facilita el manejo de actividades y el flujo de concentracion, les dejo una app que es mi favorita [recomendada por @navaroa], espero que es sirva, ademas le dejo mas informacion por si desean saber mas del tema.

https://github.com/ninoseki/pomodoro-daisuki
http://es.wikipedia.org/wiki/T%C3%A9cnica_Pomodoro