martes, 27 de noviembre de 2012

¿Que es Desarrollo Ágil de Software?

El desarrollo ágil de software son métodos de ingeniería del software basados en el desarrollo iterativo e incremental, donde los requerimientos y soluciones evolucionan mediante la colaboración de grupos auto organizados y multidisciplinarios. Existen muchos métodos de desarrollo ágil; la mayoría minimiza riesgos desarrollando software en lapsos cortos. El software desarrollado en una unidad de tiempo es llamado una iteración, la cual debe durar de una a cuatro semanas. Cada iteración del ciclo de vida incluye: planificación, análisis de requerimientos, diseño, codificación, revisión y documentación. Una iteración no debe agregar demasiada funcionalidad para justificar el lanzamiento del producto al mercado, pero la meta es tener una «demo» (sin errores) al final de cada iteración. Al final de cada iteración el equipo vuelve a evaluar las prioridades del proyecto.

Los métodos ágiles enfatizan las comunicaciones cara a cara en vez de la documentación. La mayoría de los equipos ágiles están localizados en una simple oficina abierta, a veces llamadas "plataformas de lanzamiento" (bullpen en inglés). La oficina debe incluir revisores, escritores de documentación y ayuda, diseñadores de iteración y directores de proyecto. Los métodos ágiles también enfatizan que el software funcional es la primera medida del progreso. Combinado con la preferencia por las comunicaciones cara a cara, generalmente los métodos ágiles son criticados y tratados como "indisciplinados" por la falta de documentación técnica.

lunes, 26 de noviembre de 2012

¿Qué es SCRUM?

Scrum es un proceso en el que se aplican de manera regular un conjunto de buenas prácticas para trabajar colaborativamente, en equipo, y obtener el mejor resultado posible de un proyecto. Estas prácticas se apoyan unas a otras y su selección tiene origen en un estudio de la manera de trabajar de equipos altamente productivos.

En Scrum se realizan entregas parciales y regulares del producto final, priorizadas por el beneficio que aportan al receptor del proyecto. Por ello, Scrum está especialmente indicado para proyectos en entornos complejos, donde se necesita obtener resultados pronto, donde los requisitos son cambiantes o poco definidos, donde la innovación, la competitividad, la flexibilidad y la productividad son fundamentales.

Scrum también se utiliza para resolver situaciones en que no se está entregando al cliente lo que necesita, cuando las entregas se alargan demasiado, los costes se disparan o la calidad no es aceptable, cuando se necesita capacidad de reacción ante la competencia, cuando la moral de los equipos es baja y la rotación alta, cuando es necesario identificar y solucionar ineficiencias sistemáticamente o cuando se quiere trabajar utilizando un proceso especializado en el desarrollo de producto.

domingo, 18 de noviembre de 2012

Dos formas de protección del software

La protección del software se puede dividir en dos partes:

  1. Protección del software desde la misma programación, desde el mismo código fuente.
  2. Protección del software utilizando Ingeniería Inversa. Esto se suele hacer con programas denominados packers.
Podríamos añadir una más y es la combinación de ambas, ya que determinados packers  permiten interactuar desde el código fuente y desde el código ensamblador final.
  • La protección desde el mismo código fuente la realiza el programador. El programador según su propia experiencia, conocimiento de Ingeniería Inversa, imaginación será el que ponga las dificultades al cracking de su software. Crear licencias, programa DEMO y protección puede ser una labor muy costosa en tiempo y pruebas, pero también existe muchísima información en la red.
  • La protección utilizando Ingeniería Inversa es a partir de tu programa ya compilado, crear impedimentos al cracking. Esto se hace normalmente con programas protectores denominados: packers, empacadores. La utilización de estos programas son una gran ventaja ya que permiten crear licencias, crear programas DEMO o con restricciones, crear protección contra debuggers y/o desensambladores, comprimir tu aplicación, crear un sólo ejecutable sin tener dependencias y unas cuantas opciones que dependen del packer que estemos utilizando.
Al final de todo esto, como puedes observar, el camino que queda es largo y muchos programadores dejan la protección de su software a las empresas de packers.


Programador vs Webmaster

Programador:  

Se encarga de la implementación de prototipos mediante un lenguaje de programación que pueda entender la computadora. Inicialmente, la profesión se formalizó desde el enfoque Tayloriano de la especialización de funciones en la empresa. Así, el proceso de producción de software se concibe como un conjunto de tareas altamente especializadas donde está claramente definido el papel de cada categoría profesional.
La profesión de analista también ha evolucionado, surgiendo el concepto diseñador (de software). Esto se debe a los avances de la ingeniería del software donde se reconoce que el análisis es una actividad distinta del diseño. El análisis describe el problema (el qué hacer) mientras que el diseño describe la solución (el cómo hacerlo). En la mayoría de países industrializados esto ha dado lugar a la categoría profesional del diseñador o arquitecto del software.


Webmaster: 

La labor de un Webmaster es multidisciplinar debido a la gran cantidad de tareas que realiza y a la complejidad de las habilidades para ejecutarlas, por lo que es muy importante una capacitación constante.
Sin embargo hay algunos puntos básicos que debería conocer para realizar mejor su trabajo. Es común que un Webmaster sea alguien con formación técnica, de perfil tecnológico, como ingenieros o licenciados en computación, ciencias informáticas, cibernética, telecomunicaciones, mecatrónica o mecánica, y sin embargo no es un requisito.
Un Webmaster debe tener habilidades de análisis de problemas, capacidad para razonamiento abstracto, proyección a futuro y resolución de problemas. No es necesaria una gran habilidad matemática pero es muy útil tener cierta habilidad para el análisis de procesos.


Código de Etica del Webmaster: 
  1. Respetar los sitios web ajenos y nunca intentar crackear o estropear la web de otro webmaster. 
  2. Mostrar respeto a la profesión como industria con honestidad y cortesía. 
  3. Incrementar la base de conocimiento de la profesión a través del estudio constante y de compartir este conocimiento con otros colegas. 
  4. Construir una relación constante de confianza y buena voluntad con el público usuario. 
  5. Llevar una conducta laboral de la manera más ética y competente posible cuando se solicite un servicio profesional o busque empleo, en honor a su conocimiento e integridad. 
  6. Aceptar nuestra parte de responsabilidad en un servicio constructivo a la comunidad. 
  7. Proteger la propiedad intelectual de otros. 
  8. Esforzarse en lograr y expresar un carácter sincero que enriquecerá sus contactos humanos.  
  9. Trabajar siempre con su grupo de desarrollo.

jueves, 1 de noviembre de 2012

Técnicas de Depuración de Programas

Cuando se escriben programas, es normal cometer errores (bugs). De hecho, en promedio, un programador comete un error cada 10 líneas de programa. Esto significa que la probabilidad de que el programa funcione a la primera vez es prácticamente nula.
Por lo tanto, el desarrollo de un programa siempre incorpora una etapa de depuración (debugging), que consiste en buscar y resolver los errores cometidos durante la programación. Para facilitar la etapa de depuración es conveniente usar herramientas especializadas para estos efectos. La más común es el depurador o también llamado debugger.
El depurador:
Un depurador es una herramienta que permite intervenir durante la ejecución de un programa, para saber cómo se está ejecutando. El depurador permite:

  • Ejecutar paso a paso un programa (stepping).
  • Establecer puntos de detención (breakpoints).
  • Examinar el contenido de las variables y objetos.
  • Conocer el encadenamiento de llamadas de procedimientos.
  • Retomar la ejecución hasta un nuevo punto de detención.
En este curso usaremos el depurador que trae incorporado JBuilder.Depuración manual:
Cuando no se dispone de un depurador, se debe recurrir a la depuración manual. Esta consiste en preparar el programa para poder conocer como se está ejecutando el programa. La técnica más usual de depuración de programas consiste en colocar println's en puntos estratégicos del programa para desplegar el contenido de las variables. Siga las siguientes recomendaciones para establecer estos puntos estratégicos:

  • Dentro de un while, siempre coloque algún println que permita detectar cuando cayó en un ciclo infinito su programa (un loop). Despliegue el valor de contadores, datos leídos de un archivo, acumuladores, etc.
  • Al inicio de una función o procedimiento, despliegue el valor de los parámetros recibidos y al retornar despliegue el valor retornado (mediante return).
  • En un if, despliegue cuál de las ramas se tomó: la que corresponde a la condición verdadera o el else.
Para que resulte más fácil la depuración, comience ejecutando su programa con poquísimos datos. Nunca olvide, incluir datos que representen las condiciones de borde del programa. Por ejemplo: n=0, el archivo esta vacío, etc.La biblioteca del curso incluye mecanismos para poder grabar todos los mensajes que aparecen en la pantalla. Para hacer esto, utilice la opción -l al ejecutar su programa:

    java Run -l MiPrograma
Su programa se ejecutará igual que antes, pero además creará un archivo de nombre console.log que contiene todos los mensajes que aparecieron en pantalla durante la ejecución del programa. Esto resulta muy útil, pues las 24 líneas de la pantalla se hacen escasas con tanto despliegue con println. Cuando Ud. estime que su programa funciona adecuadamente, comente los println que introdujo para efectos de depuración (es decir agregue // para transformalos en comentarios). No los borre, porque más tarde podría darse cuenta que su programa todavía no funciona completamente cómo debería.

Fuente: http://users.dcc.uchile.cl/~lmateu/CC10A/Apuntes/debug/index.html

¿Qué es Auditoría de Software?

La Auditoría de Software es un término general que se refiere a la investigación y al proceso de entrevistas que determina cómo se adquiere, distribuye y usa el software en la organización.
Conducir la auditoría es una de las partes más críticas de un Programa de Administración de Software, porque la auditoría ayuda a la organización a tomar decisiones que optimicen sus activos de software.
Un estudio de Print UK Limited, firma de Administración de auditoría, descubrió que una organización típica con más de 500 PCs muchas veces tiene un 20% más de computadoras de lo que cree. El Gartner Group también descubrió que más de un 90% de las organizaciones han incrementado su base de activos de TI sin haber hecho ningún proceso para su seguimiento.
Una de las razones por las que las organizaciones no maximizan su inversión en activos de software es que no hay información exacta disponible. La recopilación de toda la información necesaria es un proceso intenso, especialmente cuando se hace por primera vez. Otro problema es que la perspectiva de una auditoría puede ser vista con algunas reservas por algunos directivos de la organización, preocupados porque pueda interrumpir el flujo de trabajo, y por algunos usuarios finales que pueden ser forzados a abandonar sus programas o procedimientos favoritos.
Una de las formas de evitar las objeciones y dejar de lado estos problemas es planificar cuidadosamente la Auditoría de Software y comunicar su valor por adelantado.
Los siguientes factores favorecerán la colaboración entre la gerencia y el personal a través del proceso de planificación, el cual es una llave para el éxito de cualquier auditoría de software.
  • Establecer y acordar una serie clara de objetivos y comunicarla a todos los empleados asociados con la auditoría.
  • Focalizarse en los resultados que se requieran de la auditoría y discutir las áreas donde se crea pueda haber problemas.
  • Identificar las áreas simples pero muchas veces olvidadas que necesitan ser consideradas, tales como:
    • Acceso a sitios y creación de mapas de esas locaciones
    • Conocer con anticipación los log-on scripts de seguridad o claves.
    • Horario de la auditoría (durante el día, noche o fin de semana).
  • Diseñar el plan y el cronograma de la auditoría, así como también las herramientas de auditoría que serán usadas.
  • Asignar recursos para cada elemento específico de la auditoría.
Fuente: http://www.microsoft.com/argentina/public/kit_base/licenciamiento/licsemgt/softaudt/intro.htm

Procedimientos Recomendados para la Confiabilidad del Software

El objetivo de conseguir un software de calidad abarca todo el ciclo vital de desarrollo del programa. Se recomiendan los siguientes procedimientos para crear aplicaciones confiables:

1. Pensar en la confiabilidad:

Las aplicaciones confiables han de ser compatibles con operaciones confiables y necesitan también procesos de implementación confiables. Céntrese en el modo en que se proporciona el servicio y busque posibles problemas allí donde las alternativas de diseño o de procedimiento permitan reducir las causas de error.

2. Invertir en personal:

El personal de operaciones y los programadores deben conocer a fondo las prácticas de administración del ciclo de vida y de la arquitectura, poniendo especial atención en la prevención de los errores más comunes.
Cree una referencia cultural de equipo en la que la confiabilidad sea un aspecto crítico. Proporcione educación sobre los procedimientos de la compañía, las herramientas de programación, las tecnologías de aplicación y 
los conceptos de confiabilidad.

3. Eliminar los puntos con errores desde el diseño de aplicaciones:
Un sistema confiable es más fácil de mejorar que un sistema no confiable (con eventos de error ocultos y distribuidos por todo el programa), que es muy costoso cambiar.

4. Utilizar un sistema operativo consistente.

5. Proporcionar supervisión de confiabilidad continua:

Todas las aplicaciones críticas para una misión deben proporcionar datos de supervisión. El análisis de los datos recopilados desempeña un papel importante en la observación del estado, de los problemas actuales y de 
las tendencias de largo alcance de las aplicaciones críticas.

6. Invertir en procesos de diseño de software de calidad:

• Utilizar una metodología de ciclo vital de desarrollo
• Uso de revisiones de código y estándares de codificación
• Desarrollo de procedimientos de recuperación
• Uso de procedimientos de control de cambios probados

7. Utilizar pruebas inteligentes

Los procesos de prueba de control de calidad deberán proporcionar una respuesta a tres cuestiones importantes:

¿Están correctamente implementadas en la aplicación las funciones descritas en las especificaciones?

¿Satisface la aplicación las situaciones de usuario previstas sin producir errores?

¿Se ajusta el perfil de confiabilidad de la aplicación a los requisitos originales o los supera?

Cuando el nivel de calidad y confiabilidad no sea aceptable, deberá corregirse el software hasta que se alcance el nivel deseado.

8. Implementar cambios con cautela.

9. Prestar atención al presupuesto.

Fuente: http://carolina.terna.net/ingsw3/datos/Pruebas_de_Confiabilidad.pdf

¿Qué es Calidad de Software?

Es la concordancia con los requerimientos funcionales y de rendimiento previamente establecidos, con los estándares de desarrollo debidamente documentados y con las características implícitas que se esperan de todo software desarrollado profesionalmente.

Existen 3 puntos importantes de la definición de calidad de software:
  1. Los requerimientos del software son los fundamentos desde los que se mide la calidad.
  2. Los estándares específicos definen un conjunto de criterios de desarrollo que guían la forma de aplicación de la ingeniería de software existen requerimientos implícitos que no se mencionan.
  3. Un producto de alta calidad requiere menos mantenimiento y facilita tanto el desarrollo como el mantenimiento de la productividad. Con la medición de la calidad se pueden lograr estos objetivos. En lo que se refiere al mantenimiento, la medición de la calidad del software ayuda a identificar problemas de confiabilidad y a mejorar las técnicas para identificar las necesidades de mantenimiento.
Confiabilidad

Es la probabilidad de operación libre de fallas de un programa de computadora en un entorno determinado y durante un tiempo específico.
El fallo es cualquier no concordancia con los requerimientos del software. Hay distintos grados de fallos, estos pueden ser simplemente desconcertantes o catastróficos.
La confiabilidad del software se encuentra en un etapa de formación de desarrollo y es la caracterísitca de rendimiento más costosa de conseguir y difícil de conseguir y de difícil de garantizar. La naturaleza del proyecto ayuda para la formulación de estimaciones de costo y el esfuerzo que asegure la confiabilidad requerida.
Los modelos de confiabilidad del software se usan para caracterizar y predecir el comportamiento importante para directores e ingenieros.
La generación de fallos depende del código desarrollado, tales como tamaño y las características del proceso de desarrollado tales como las tecnologías y herramientas de ingeniería de software usadas.
La eliminación de fallos depende del tiempo y del perfil operativo. Los modelos de confiabilidad del software son generalmente procesos aleatorios. 

Estos modelos se pueden dividir en 2 grandes categorías:
  1. modelos que predicen la confiabilidad como una función cronológica del tiempo
  2. modelos que predicen la confiabilidad como una función del tiempo de procesamiento transcurrido
Control de Calidad

El costo de corregir y detectar errores producidos en las primeras fases de desarrollo de software es mayor a medida que nos encontramos más alejados de éstas. A causa de esto, la propuesta de control de calidad es empujar las tareas relacionadas con la calidad desde las primeras fases del proyecto. Esto permite encontrar los errores en forma temprana sin que se sigan propagando en las siguientes fases.

Otro motivo para el control de calidad es que la prueba de software no puede garantizar que encuentre todos los errores. Los programadores profesionales pueden y deben producir software el cual esté libre de errores desde el comienzo. Esto puede ser llevado a cabo a través del control de calidad.

La garantía de calidad de software engloba:
  1. Métodos y herramientas de análisis, diseño, codificación y prueba 
  2. Revisiones y técnicas formales que se aplican en cada fase de la ingeniería de software
  3. Una estrategia de prueba multiescalada 
  4. El control de la documentación del software y de los cambios efectuados 
  5. Un procedimiento que asegure un ajuste a los estándares de desarrollo
  6. Mecanismos a medida y de información

Fuente: http://www.ub.edu.ar/catedras/ingenieria/ing_software/ubftecwwwdfd/calidadsw/calidad.htm

¿Qué es Confiabilidad de Software?

La confiabilidad de software significa que un programa particular debe de seguir funcionando en la presencia de errores. Los errores pueden ser relacionados al diseño, a la implementación, a la programación  o el uso de errores. Así como los sistemas llegan a ser cada vez mas complejos, aumenta la probabilidad de errores. Como mencionamos, es increíblemente difícil demostrar que un sistema sea seguro. Software seguro debe de funcionar abajo de un ataque. Aunque casi todos los software tengan errores, la mayoría de los errores nunca serán revelados debajo de circunstancias normales. Un atacante busca esta debilidad para atacar un sistema.

Fuente: 
http://www.seguridad.us/privada/empresas/confiabilidad-de-software/

martes, 30 de octubre de 2012

Afirmaciones erróneas acerca de la Seguridad Informática

  • Mi sistema no es importante para un cracker
Esta afirmación se basa en la idea de que no introducir contraseñas seguras en una empresa no entraña riesgos pues ¿quién va a querer obtener información mía?. Sin embargo, dado que los métodos de contagio se realizan por medio de programas automáticos, desde unas máquinas a otras, estos no distinguen buenos de malos, interesantes de no interesantes, etc. Por tanto abrir sistemas y dejarlos sin claves es facilitar la vida a los virus.
  • Estoy protegido pues no abro archivos que no conozco
Esto es falso, pues existen múltiples formas de contagio, además los programas realizan acciones sin la supervisión del usuario poniendo en riesgo los sistemas.
En general los programas antivirus no son capaces de detectar todas las posibles formas de contagio existentes, ni las nuevas que pudieran aparecer conforme los ordenadores aumenten las capacidades de comunicación, además los antivirus son vulnerables a desbordamientos de búfer que hacen que la seguridad del sistema operativo se vea más afectada aún.
  • Como dispongo de un firewall no me contagio
Esto únicamente proporciona una limitada capacidad de respuesta. Las formas de infectarse en una red son múltiples. Unas provienen directamente de accesos al sistema (de lo que protege un firewall) y otras de conexiones que se realizan (de las que no me protege). Emplear usuarios con altos privilegios para realizar conexiones puede entrañar riesgos, además los firewalls de aplicación (los más usados) no brindan protección suficiente contra el spoofing.
  • Tengo un servidor web cuyo sistema operativo es un Unix actualizado a la fecha
Puede que este protegido contra ataques directamente hacia el núcleo, pero si alguna de las aplicaciones web (PHP, Perl, Cpanel, etc.) está desactualizada, un ataque sobre algún script de dicha aplicación puede permitir que el atacante abra una shell y por ende ejecutar comandos en el unix.

Fuente: http://es.wikipedia.org/wiki/Seguridad_inform%C3%A1tica

domingo, 28 de octubre de 2012

Lenguaje Python

Python es un lenguaje de programación de alto nivel que se utiliza para desarrollar aplicaciones de todo tipo. A diferencia de otros lenguajes como Java o .NET, se trata de un lenguaje interpretado, es decir, que no es necesario compilarlo para ejecutar las aplicaciones escritas en Python, sino que se ejecutan directamente por el ordenador utilizando un programa denominado interpretador, por lo que no es necesario “traducirlo” a lenguaje máquina.

Python es un lenguaje sencillo de leer y escribir debido a su alta similitud con el lenguaje humano. Además, se trata de un lenguaje multiplataforma de código abierto y, por lo tanto, gratuito, lo que permite desarrollar software sin límites. Con el paso del tiempo, Python ha ido ganando adeptos gracias a su sencillez y a sus amplias posibilidades, sobre todo en los últimos años, ya que facilita trabajar con inteligencia artificial, big data, machine learning y data science, entre muchos otros campos en auge. 

Python remonta su origen a principios de los años 90, cuando Guido Van Rossum, un trabajador del Centrum Wiskunde & Informatica (CWI), un centro de investigación holandés, tuvo la idea de desarrollar un nuevo lenguaje basándose en un proyecto anterior, el lenguaje de programación “ABC”, que él mismo había desarrollado junto a sus compañeros.

Su filosofía fue la misma desde el primer momento: crear un lenguaje de programación que fuera muy fácil de aprender, escribir y entender, sin que esto frenara su potencial para crear cualquier tipo de aplicación. En aquellos años, el hardware que había no permitía tal cosa, y es por eso por lo que Python ha resurgido durante los últimos años, porque el avance de la tecnología ha permitido alcanzar el objetivo inicial de este lenguaje de programación adelantado a su tiempo.

Python es un lenguaje de programación multiplataforma, algo que permite desarrollar aplicaciones en cualquier sistema operativo con una facilidad asombrosa. Una gran cantidad de tecnologías se llevan muy bien con Python debido a su sencillez y a su gran potencia para el tratamiento de datos, algo que sin duda ha hecho resurgir este lenguaje a nivel laboral, donde cada vez son más las empresas que solicitan expertos en Python.

Usos:

  • Data analytics y big data: El uso de Python está muy extendido en dos áreas que han estado, y estarán, en boca de todos: el análisis de datos y el big data. Su simplicidad y su gran número de bibliotecas de procesamiento de datos hacen que Python sea ideal a la hora de analizar y gestionar una gran cantidad de datos en tiempo real. Python está siendo utilizado en la actualidad por muchísimas empresas, tanto de forma directa, como indirecta. Analizar una gran cantidad de datos para transformarlos en información útil para el big data es una de las especialidades de Python. 

  • Data mining: La minería de datos o data mining es un proceso que permite analizar grandes bases de datos con el objetivo de predecir futuras tendencias. Se trata de un proceso complejo al que Python puede arrojar luz a través de la limpieza y organización de datos y del uso de algoritmos de aprendizaje automático que simplifica el análisis de datos.
  • Data science: Tras la creación de los motores numéricos como “Pandas” o “NumPy”, Python está desbancando MATLAB, un lenguaje utilizado por científicos a la hora de trabajar con un gran número de datos. La razón es la misma que en los anteriores apartados; la sencillez y la potencia para trabajar con un gran número de datos, unidos al gran número de bibliotecas existentes, hacen que Python sea ideal para este tipo de tareas. 
  • Inteligencia artificial: Seguro que durante los últimos años has oído hablar muchísimo de la inteligencia artificial (IA). Gran parte de su avance se debe a Python. Su facilidad de escritura y su robustez han convertido a Python en el aliado perfecto de la IA. Su capacidad de plasmar ideas complejas en pocas líneas, unidas al gran número de frameworks existentes, han hecho que Python sea uno de los lenguajes de programación que están impulsando a la IA.
  • Blockchain: La base de datos distribuida Blockchain, conocida mundialmente por ser la base sobre la que se sustentan las criptomonedas, también funciona muy bien junto a Python. Como lenguaje versátil, seguro y rápido, es muy útil para formar cadenas de bloques, e incluso permite a los desarrolladores crear una cadena de bloques sencilla en menos de 50 líneas de código, haciendo sencillo algo muy complejo.
  • Machine learning: El machine learning o aprendizaje automático es otra de las tecnologías que está cambiando el mundo tal y como lo conocemos. La robótica y la IA son ahora capaces de aprender por sí mismas a medida que van procesando más y más datos. De esta forma, obtienen información cada vez más relevante que les permite tomar las decisiones adecuadas. Por supuesto, Python es también muy eficaz en este campo, en el tratamiento de datos eficaz es esencial.
  • Desarrollo web: Python también permite desarrollar webs complejas en menos líneas de código, lo que permite que estas sean más ligeras y optimizadas. Django es uno de los frameworks de Python más populares de la actualidad, que puede ser utilizado para crear webs dinámicas y muy seguras. Python es también muy utilizado para hacer scraping, es decir, para obtener información de todo tipo de webs, tal y como lo hacen Netflix, Instagram o Pinterest.
  • Juegos y gráficos 3D: Python también posee una gran capacidad para manejar gráficos 3D gracias la gran cantidad de marcos de trabajo y herramientas existentes. PyGame, Blender o Arcade son algunos de los más conocidos. Uno de los juegos más populares desarrollado con Python es Battlefield 2, un juego de acción bélica lanzado en 2005 en el que el motor gráfico, las animaciones y sus distintas funcionalidades fueron desarrolladas con Python. 

sábado, 27 de octubre de 2012

¿Qué es Crystall Ball?

Oracle Crystal Ball, es un software que permite la utilización de modelos predictivos, previsión, simulación y optimización con el objetivo de identificar las variables críticas de un modelo específico, así como también evaluar escenarios basados en el comportamiento estadístico de las variables del mismo.

Para estas evaluaciones, Oracle Crystal Ball utiliza, entre otras, la técnica de simulación de Monte Carlo, el cual es empleada para estudiar modelos con variables que siguen un determinado comportamiento estadístico.

Entre los modelos que pueden ser evaluados utilizando Oracle Crystall Ball se incluyen: financieros, físicos y matemáticos entre otros.

Características principales de Oracle Crystal Ball
  • Hojas de cálculo: Permite elaborar modelos de prevención, simulación y optimización de riesgos.
  • Análisis de riesgo: Brinda una perspectiva extensiva y completa de los factores críticos que afectan las variables probabilísticas del modelo.
  • Suite de aplicaciones: Facilita un análisis exhaustivo que permita calcular los posibles resultados y determinar los factores que ayudarán a la evaluación del modelo a corto y largo plazo.
  • Decisiones acertadas: Ayuda en la toma de decisiones correctas y que se adapten a las condiciones actuales del mercado.
  • Software adaptable: Permite utilizar datos guardados y actuales de las hojas de cálculo, para la búsqueda de soluciones adaptadas a las restricciones y actualizaciones del mercado.


martes, 4 de septiembre de 2012

jueves, 5 de julio de 2012

¿Que es VMware?

VMware es el nombre de una de las herramientas de virtualización más usadas a nivel mundial.

Es la mejor solución para cambiar a un equipo Mac y ejecutar Windows sin tener que reiniciar.

Es compatible con los principales sistemas operativos y aunque la versión de escritorio recibe el nombre VMware Workstation, existe una opción para servidores conocida como VMware ESXi.

Los usuarios tienen la oportunidad de configurar máquinas virtuales en su equipo y hacer uso de ellas de una manera paralela sin necesidad de tener acceso a las propias máquinas. El uso de Vmware se encuentra muy optimizado, permitiendo que en cada máquina virtual tengamos nuestro propio sistema operativo, lo que proporciona una gran serie de posibilidades. Si no utilizamos sistemas operativos propietarios, podemos sacar partido a este entorno de forma gratuita gracias a la versión de Vmware de libre acceso. Pero en el caso de querer usarlo con Windows sí que deberemos disponer de las licencias correspondientes.

Una vez el sistema se está ejecutando todo es como si estuviéramos usando ese equipo de manera física ante nosotros. No hay diferencia ninguna y podemos, si así lo necesitáramos, ejecutar distintas virtualizaciones desde un mismo ordenador. Esto nos permitiría tener diferentes sistemas operativos virtualizados para llevar a cabo pruebas de software con plataformas a las que de una manera habitual no tenemos acceso. Este es solo un ejemplo, dado que la virtualización se tiende a usar de manera más común en tareas enfocadas al ahorro de recursos y optimización de los equipos.

Para realizar todo tipo de procesos complejos y exigentes la virtualización se convierte en la mejor opción, de la cual hacen uso empresas y profesionales por igual. Cada vez más virtualizar se posiciona como la respuesta a fin de poder exprimir los recursos de manera absoluta siempre con buenos resultados y sin las limitaciones que supone operar con un solo sistema operativo.

Mountain Lion

Mountain Lion estará disponible en julio en la Mac App Store.

Fuente: http://www.apple.com/es/pr/library/2012/06/11Mountain-Lion-Available-in-July-From-Mac-App-Store.html

miércoles, 9 de mayo de 2012

¿Qué es Teamviewer?

TeamViewer, es el mejor programa gratis para controlar remotamente un equipo. 

Lo más relevante del Teaviewer es que puedes:
  • Compartir escritorio con otros usuarios.
  • Dar asesoría remota y asistencia técnica.
  • Hacer conferencias o demostraciones de productos.
  • Ayudar a un amigo a hacer alguna operación frente al PC.
  • Compartir archivos entre ambos usuarios.
  • Estar al pendiente de nuestro PC remotamente.

jueves, 15 de marzo de 2012

Tips

Instrucciones en VBA para Excel, para saber el número máximo de líneas y columnas de la Hoja activa:

Max_Lineas = Cells.SpecialCells(xlLastCell).Row
Max_Columnas = Cells.SpecialCells(xlLastCell).Column

viernes, 2 de marzo de 2012

Tips

Recomiendo el siguiente Blog:

http://vbadud.blogspot.com/

Tips

Es importante buscar el momento adecuado para programar, se requiere de mucha concentración. Es preferible terminar lo que estas haciendo, antes de programar algo mal y después tener que arreglarlo.

Tips

Antes de programar desde cero, primero busca en internet si ya existe una función o módulo que haga lo que necesitas, te permitirá ahorrar tiempo. Hay mucho código fuente gratis.

Por lo general podemos encontrar muchas funciones listas para utilizar, pero lo interesante es estudiarlas, ver cómo funcionan, de ahí aprendemos. Si solo copiamos y pegamos, vamos mal.

lunes, 20 de febrero de 2012

Fases de la Programación Extrema (eXtreme Programming - XP)

1ª Fase: Planificación del proyecto.
2ª Fase: Diseño.
3ª Fase: Codificación ó Programación.
4ª Fase: Pruebas.

Fuente: http://programacionextrema.tripod.com/fases.htm

Tips

La retroalimentación cliente-programador durante la etapa de programación-prueba del sistema en desarrollo, reduce significativamente el re-trabajo. 

Tips

Debemos tener claro el objetivo de nuestro programa, sus datos de entrada, procesos y resultados esperados. Comenzar con un prototipo que en conjunto con el cliente se irá transformando en un producto terminado. Las pruebas son muy importantes. Pruebas funcionales y modulares. El análisis de los resultados obtenidos nos dará confianza del funcionamiento del mismo.

domingo, 19 de febrero de 2012

Tips

Comentar el código fuente es muy importante, nos ahorrará tiempo a la hora de hacer modificaciones a nuestro programa. Comentar módulos, funciones y estructuras de datos. Si son modificaciones, colocar la fecha y hora del cambio.

jueves, 16 de febrero de 2012

Tips

Una de las mejores formas de elevar tu nivel de programación es leyendo y modificando los programas ejemplo de los libros.

Tips

Nunca te rindas ante un error. Utiliza el método científico para detectarlo y cuando lo encuentres, corrígelo usando la misma sistematicidad que usaste para hallarlo de forma que su corrección sea efectiva y sin efectos colaterales.

Método de solución de problemas

Método de solución de problemas:
  • Definir el problema (efecto)
  • Identificar las causas probables
  • Identificar las causas reales mediante: mediciones, hechos, análisis, opiniones de expertos, etc.
  • Registrar las causas reales
  • Desarrollar propuestas de solución
  • Priorizar  y seleccionar las soluciones
  • Obtener autorización
  • Implantar soluciones
  • Evaluar resultados
  • Actualizar procesos, procedimientos, métricas, indicadores, capacitación, políticas, reglamentos, etc.
  • Preguntarse ¿en dónde más se me puede presentar este problema o uno similar?
  • Seguir con la mejora continua

miércoles, 15 de febrero de 2012

¿Qué es la programación extrema (XP)?

La programación extrema es una metodología de desarrollo de software que forma parte de lo que se conoce colectivamente como metodologías ágiles. XP se basa en valores, principios y prácticas, y su objetivo es permitir que equipos pequeños y medianos produzcan software de alta calidad y se adapten a los requisitos cambiantes y en evolución.

Lo que diferencia a XP de las demás metodologías ágiles es que hace hincapié en los aspectos técnicos del desarrollo de software. La programación extrema es precisa sobre cómo trabajan los ingenieros, ya que seguir las prácticas de ingeniería permite a los equipos entregar código de alta calidad a un ritmo sostenible.

La programación extrema consiste, en pocas palabras, en las buenas prácticas llevadas al extremo. Como programación en parejas es buena, hagámosla siempre. Ya que las pruebas tempranas son buenas, probemos antes de escribir el código de producción.

¿Qué es Design Thinking?

Es un método para generar ideas innovadoras que centra su eficacia en entender y dar solución a las necesidades reales de los usuarios. Proviene de la forma en la que trabajan los diseñadores de producto. De ahí su nombre, que en español se traduce de forma literal como «Pensamiento de Diseño», aunque nosotros preferimos hacerlo como «La forma en la que piensan los diseñadores».

Se empezó a desarrollar de forma teórica en la Universidad de Stanford en California, EEUU a partir de los años 70, y su primera aplicabilidad con fines lucrativos como «Design Thinking» la llevó a cabo la consultoría de diseño IDEO, siendo hoy en día su principal precursora.

Según Tim Brown, actual CEO de IDEO, el Design Thinking «Es una disciplina que usa la sensibilidad y métodos de los diseñadores para hacer coincidir las necesidades de las personas con lo que es tecnológicamente factible y con lo que una estrategia viable de negocios puede convertir en valor para el cliente, así como en una gran oportunidad para el mercado».

Empresas como Apple, Google, IBM, Nike o Zara lo utilizan. Al ser un gran generador de innovación, se puede aplicar a cualquier campo. Desde el desarrollo de productos o servicios, hasta la mejora de procesos o la definición de modelos de negocio. Su aplicabilidad tiene como límites nuestra propia imaginación.


lunes, 13 de febrero de 2012

¿Qué es DevOps?

DevOps es un marco de trabajo y una filosofía en constante evolución que promueve un mejor desarrollo de aplicaciones en menos tiempo y la rápida publicación de nuevas o revisadas funciones de software o productos para los clientes.

Con DevOps se promueve una comunicación continua más fluida, la colaboración, la integración, la visibilidad y la transparencia entre equipos de desarrollo de aplicaciones (Dev) y sus homólogos en operaciones tecnológicas (Ops).

Esta relación estrecha entre «Dev» y «Ops» se extiende a cada una de las fases del ciclo de vida de DevOps: desde la planificación inicial del software a las fases de codificación, compilación, pruebas y publicación, y en la puesta en marcha, las operaciones y la supervisión continua. Esta relación impulsa un bucle de retroalimentación continua con los clientes sobre las mejoras, el desarrollo, las pruebas y la puesta en marcha. Uno de los resultados de todos estos esfuerzos puede ser la publicación continua y más rápida de las adiciones y los cambios que se necesitan en las funciones.

Algunas personas agrupan los objetivos de DevOps en cuatro categorías: cultura, automatización, medición y uso compartido (CAMS, por sus siglas en inglés), y las herramientas de DevOps pueden ayudar en estas tareas. Con estas herramientas, los flujos de trabajo de desarrollo y operaciones se convierten en tareas más optimizadas y colaborativas al automatizar tareas que antes eran manuales, estáticas o que llevaban mucho tiempo, y que son necesarias para la integración, el desarrollo, las pruebas, la puesta en marcha o la supervisión.

Además de los esfuerzos por romper las barreras de comunicación y fomentar la colaboración entre los equipos de desarrollo y operaciones tecnológicas, uno de los principales valores de DevOps es lograr la satisfacción del cliente y prestar sus servicios en menos tiempo. DevOps también se ha creado para impulsar la innovación empresarial y ser el motor de continuas mejoras en los procesos.

La práctica de DevOps propicia que cada empresa se ponga como objetivo ofrecer un mejor servicio cada vez, en menos tiempo, de mejor calidad y con mayor seguridad a sus clientes finales; por ejemplo, con actualizaciones, funciones o versiones de producto más frecuentes. Puede reflejarse en la rapidez con la que llega al cliente una nueva versión del producto o una nueva función manteniendo los mismos niveles de calidad y seguridad, o en el poco tiempo que se necesita para identificar un problema o un error y, a continuación, solucionarlo y volver a publicar una versión corregida.

Sin duda, todo este trabajo de DevOps se sustenta en una infraestructura subyacente con un rendimiento, una disponibilidad y una fiabilidad fluida y sin interrupciones del software, el cual se desarrolla y se prueba en primer lugar y, luego, se lanza a la fase de producción.

Métodos de DevOps

Existen varios métodos de DevOps comunes que las organizaciones usan para acelerar y mejorar el desarrollo y las publicaciones de productos. Normalmente se presentan como prácticas y metodologías de desarrollo de software. Entre los más populares están Scrum, Kanban y Agile:
  • Scrum. Scrum define la forma en la que los miembros de un equipo deben colaborar para conseguir entre todos acelerar los proyectos de desarrollo y control de calidad. Las prácticas de Scrum incluyen flujos de trabajo principales y terminología específica (sprints, bloques de tiempo, scrum diario [reunión]), y roles designados (Scrum Master, propietario del producto [product owner]).
  • Kanban. Kanban se originó a partir de las eficiencias que se alcanzaron en la fábrica de Toyota. Kanban prescribe que el estado «en curso» (WIP, del inglés «work in progress») de un proyecto de software debe controlarse en un tablero Kanban.
  • Agile. Los anteriores métodos de desarrollo de software Agile siguen teniendo una gran influencia en las herramientas y las prácticas de DevOps. Muchos de estos métodos, incluidos Scrum y Kanban, han incorporado elementos de la programación Agile. Algunas de estas prácticas están asociadas a una mayor capacidad de respuesta a los continuos cambios en requisitos y necesidades, los requisitos de documentación en forma de casos prácticos, la realización de reuniones diarias para ponerse al día y la incorporación de comunicación continua con los clientes para conocer sus opiniones. En Agile también se estipulan ciclos de desarrollo de software más cortos en lugar de los tradicionales métodos de desarrollo «en cascada» que se prolongaban en el tiempo.

¿Qué es VBA?

VBA son las siglas de “Visual Basic for Application”, un lenguaje de programación disponible para los usuarios de Microsoft Office en programas como Excel. VBA se desarrolló en los años noventa para unificar los distintos lenguajes de macros de cada uno de los programas. VBA para Excel te permite automatizar los flujos de trabajo repetitivos y generar herramientas prácticas para la gestión de proyectos o la contabilidad. La programación VBA en Excel facilita el intercambio de datos, tablas y diagramas entre los distintos programas de Microsoft 365 como Excel, Word o PowerPoint.

El lenguaje de programación VBA está disponible en Excel desde la versión 95, y aprenderlo resulta sencillo incluso para principiantes en materia de programación gracias a los numerosos tutoriales de VBA que pueblan la red. Al igual que cualquier otro programa de Office, Excel también se compone de distintos objetos como, por ejemplo, hojas de trabajo, celdas o tablas. Los métodos y propiedades de estos objetos se pueden controlar bien de forma manual, bien mediante la programación VBA si lo necesitas. Si tienes que repetir las mismas tareas una y otra vez, la programación Visual Basic de Excel te permitirá ahorrar mucho tiempo. Esto se debe a que VBA te permite crear, seleccionar o eliminar objetos de forma automática con solo dar la orden.

¿Cómo sucede esto exactamente? El editor VBA integrado en el programa te ayuda a generar tareas automatizadas, lo que no es en absoluto complicado, puesto que cada uno de los módulos de código está ya definido. Esto significa que prácticamente todas las operaciones estándar tienen un código preparado. Tu única tarea será montar cada uno de los módulos de código para conseguir una solución personalizada. Esas soluciones, también conocidas como macros de Excel, facilitan la organización, el formateo o la importación de datos. Para entender el código VBA y combinar los módulos correctamente, necesitarás formarte.

Antes de crear un nuevo programa en Excel con Visual Basic, necesitarás tener una estructura básica que después completarás con los módulos de código. 

En Visual Basic para Excel, las variables cumplen la misma función que en las ecuaciones matemáticas. Sin embargo, no solo sirven como indicadores de valores, sino también como indicadores de secuencias de caracteres y de objetos. El uso de variables siempre merecerá la pena si los elementos se mencionan en más de una ocasión. En el código VBA debes considerar una variable como tipo de dato. 

¿Qué es .NET y cómo funciona?

El lanzamiento de la plataforma .NET fue anunciado oficialmente por primera vez por Microsoft en el año 2000. Pero, dos años después, el framework se lanzó como parte de Visual Studio .NET.

La importancia de cada tecnología que incluye la plataforma ha cambiado significativamente con el tiempo. En este artículo conocerás toda la evolución de .NET y sus características principales.

.NET es una plataforma de aplicaciones que permite la creación y ejecución de servicios web y aplicaciones de Internet. En la plataforma de desarrollo se pueden utilizar una serie de lenguajes, implementaciones, herramientas y bibliotecas para el desarrollo de las aplicaciones.

En definitiva, es hoy en día la plataforma de desarrollo de software más usada para nuevos proyectos de desarrollo de software además de Java.

Microsoft .NET es una colección de diferentes plataformas de software de Microsoft. El framework original fue desarrollado como una competencia directa a la plataforma Java. Así pues, los entornos de aplicación pueden ser desarrollados y ejecutados en base a .NET.

Hasta aproximadamente 2003, el término .NET sirvió a Microsoft como término de marketing y como palabra de moda para productos nuevos, pero muy diferentes, como sistemas operativos, servidores y software de oficina. Más tarde, el término se concentró en el desarrollo de software.

Inicialmente no tuvo mucho éxito, pero el entorno .NET ha cambiado significativamente a lo largo de los años y ha ganado en importancia. Hoy en día, el framework .NET se ha vuelto indispensable en la práctica diaria.

Los componentes de la arquitectura .NET  juegan un papel importante en el desarrollo de aplicaciones. Los podemos clasificar en: el clásico .NET Framework, que es un framework monolítico, el más actual .NET Core framework, que es modular, la plataforma Xamarin y la específica de Windows UWP. A continuación los explico con mayor detenimiento para tu mayor comprensión.

.NET Framework está dividido en diferentes subcategorías y categorías de programas y, por lo tanto, contiene diferentes modelos de ejecución entre los que el usuario debe elegir al desarrollar el software. La base del desarrollo es la biblioteca de clases, que ha estado disponible en general como fuente compartida desde 2014. La llamada biblioteca de clases base permite el desarrollo de aplicaciones no sólo para entornos Windows, sino también para plataformas como Android o MacOS.

¿Qué es Java y para qué sirve?

Java es el lenguaje de programación y la plataforma de desarrollo número uno. Reduce costos, acorta los plazos de desarrollo, impulsa la innovación y mejora los servicios de las aplicaciones.
Características de Java

Java surgió como el lenguaje de programación que se usaba ampliamente en los dispositivos electrónicos de consumo, como microondas, televisión, etc. Poco tiempo después, se hicieron muchas investigaciones para construir un software pequeño, confiable, independiente del procesador, en tiempo real, seguro y distribuido para estos sistemas. 

El lenguaje de programación Java, fundado en 1995, ha sabido mantenerse vigente en el tiempo y siendo un factor diferencial con el avance de la era digital. Esto ha sido, en parte, por las propias características de Java que, a continuación, te las mencionaremos.

1. Simplicidad
Si bien es cierto que es muy potente, producto del Lenguaje C y C++, esto no lo hace más complejo. ¿La diferencia entre el lenguaje Java y estos? Java no cuenta con las características más confusas y menos usadas del lenguaje C y del C++, lo que lo hace más sencillo y fácil de manejar.

2. Orientado a objetos
De las cualidades más reconocidas de Java, ya que es uno de los estilos de programación más populares en el mundo. ¿De dónde viene tanto interés por saber qué es Java? De que este enfoque habilita el diseño del software para que los diversos tipos de datos permanezcan unidos a sus operaciones.

3. Distribuido e independiente de la plataforma
Entre sus características más destacadas están su gran biblioteca estándar, además de sus herramientas para que los software puedan distribuirse. Además, el lenguaje Java puede ejecutarse en cualquier hardware, lo que lo hace portátil y accesible.

4. Seguro y Multihilo
Si algo caracteriza a Java es que su plataforma es muy segura, además de garantizar canales de comunicación confiables para proteger la privacidad de los datos.

Y por sí le faltaba algo más a las características del lenguaje de programación Java es su capacidad para ¡elaborar tareas simultáneas dentro del programa! Con este rasgo, es mucho más accesible mejorar tanto el rendimiento como la velocidad de ejecución.



¿Qué es C++: Características y aplicaciones

C++ es un lenguaje de programación que proviene de la extensión del lenguaje C para que pudiese manipular objetos. A pesar de ser un lenguaje con muchos años, su gran potencia lo convierte en uno de los lenguajes de programación más demandados.

Si se busca programar en alto nivel, con la opción de poder bajar incluso a ensamblador, C++ sigue siendo una gran opción, ya que estamos ante un lenguaje de programación muy potente y que se ha mantenido actualizado.

La programación de videojuegos sigue siendo una profesión en auge y en ella el conocimiento de Unity y C++ es muy valorado.

Fue diseñado a mediados de los años 80 por el danés Bjarne Stroustrup. Su intención fue la de extender el lenguaje de programación C (con mucho éxito en ese momento) para que tuviese los mecanismos necesarios para manipular objetos. Por lo tanto C++ contiene los paradigmas de la programación estructurada y orientada a objetos, por lo que se le conoce como un lenguaje de programación multiparadigma.

A C++ primero se le conoció como “C con clases”. Luego se cambió a C++ que significa “incremento de C”, dando a entender que se trata de una extensión del lenguaje de programación C.

Las principales ventajas de programar en C++ son:
  • Alto rendimiento: Es una de sus principales características, el alto rendimiento que ofrece. Esto es debido a que puede hacer llamadas directas al sistema operativo, es un lenguaje compilado para cada plataforma, posee gran variedad de parámetros de optimización y se integra de forma directa con el lenguaje ensamblador.
  • Lenguaje actualizado: A pesar de que ya tiene muchos años, el lenguaje se ha ido actualizando, permitiendo crear, relacionar y operar con datos complejos y ha implementado múltiples patrones de diseño.
  • Multiplataforma
  • Extendido: C y C++ están muy extendidos. Casi cualquier programa o sistema están escritos o tienen alguna parte escrita en estos lenguajes (desde un navegador web hasta el propio sistema operativo).
Las principales desventajas de C++ es que se trata de un lenguaje muy amplio (con muchos años y muchas líneas de código), tiene que tener una compilación por plataforma y su depuración se complica debido a los errores que surgen. Además el manejo de librerías es más complicado que otros lenguajes como Java o .Net y su curva de aprendizaje muy alta.

Tips de Programación

A continuación les dejo un compendio de Tips de programación que me han servido mucho a lo largo de mi carrera profesional:

  • Aprender a programar es aprender a resolver problemas, no a usar un lenguaje de programación.
  • Antes de programar desde cero, primero busca en internet si ya existe una función o módulo que haga lo que necesitas, te permitirá ahorrar tiempo. Hay mucho código fuente gratis.
  • Por lo general podemos encontrar muchas funciones listas para utilizar, pero lo interesante es estudiarlas, ver cómo funcionan, de ahí aprendemos. Si solo copiamos y pegamos, vamos mal.
  • Deja que alguien pruebe tu programa. Incluso si no es un programador, podrá detectar problemas de interfaz, de desempeño o de diseño que como autor obviaste o pensaste que estaban bien.
  • La mejor técnica de diseño consiste en seleccionar las estructuras de datos más naturales para el problema y los algoritmos más sencillos que las administren mejor.
  • Debemos tener claro el objetivo de nuestro programa, sus datos de entrada, procesos y resultados esperados. Comenzar con un prototipo que en conjunto con el cliente se irá transformando en un producto terminado. Las pruebas son muy importantes. Pruebas funcionales y modulares. El análisis de los resultados obtenidos nos dará confianza del funcionamiento del mismo.
  • Una de las mejores formas de elevar tu nivel de programación es leyendo y modificando los programas ejemplo de los libros.
  • Cuando programes observa siempre la Regla No. 1 de la Informática: Haz copias de respaldo. La práctica de esta simple norma puede salvarte de un virus, un fallo de hardware, un dispositivo de almacenamiento defectuoso y hasta de ti mismo cuando hagas una mala modificación al código o una acción con la que elimines información.
  • Es importante buscar el momento adecuado para programar, se requiere de mucha concentración. Es preferible terminar lo que estas haciendo, antes de programar algo mal y después tener que arreglarlo.
  • Nunca te rindas ante un error. Utiliza el método científico para detectarlo y cuando lo encuentres, corrígelo usando la misma sistematicidad que usaste para hallarlo de forma que su corrección sea efectiva y sin efectos colaterales.
  • Comentar el código fuente es muy importante, nos ahorrará tiempo a la hora de hacer modificaciones a nuestro programa. Comentar módulos, funciones y estructuras de datos. Si son modificaciones, colocar la fecha y hora del cambio.
  • Entre más programas ejemplo leas y más problemas propuestos resuelvas, más experiencia en programación tendrás. La experiencia no la podrás adquirir de otra manera, ni siquiera estudiando una docena de lenguajes de programación.
  • Organiza tu código, de manera que puedas reutilizarlo. Por ejemplo: VBA - Función para ordenar celdas de excel, VBA - Función para buscar archivos en carpetas, etc. Te ahorrará tiempo de programación en los nuevos proyectos.
  • Solicita siempre una opinión a tus colegas sobre tus problemas de depuración. Una perspectiva ajena, externa, y fresca, es mucho mejor que la propia, por cuanto está menos involucrada con el código.
  • La retroalimentación cliente-programador durante la etapa de programación-prueba del sistema en desarrollo, reduce significativamente el re-trabajo.
  • No te desvíes durante la codificación del diseño original. Si se te ocurre una forma alternativa de realizar una tarea, anótala para analizarla e incluirla en la siguiente versión del programa.
  • Tómate un break cuando sientas que estás en un callejón sin salida. Un paseo, un café, una plática y hasta un videojuego puede ser el relax que necesitas mientras tu subconsciente busca la solución a tu problema.

    domingo, 12 de febrero de 2012

    12 puntos que llevaron a Steve Jobs (1955-2011) al éxito

    1. Haz lo que te gusta hacer. Encuentra tu verdadera pasión. La única manera de hacer un gran trabajo es hacer lo que te gusta. 

    2. Sé diferente. Piensa diferente. 

    3. Esfuerzate al máximo. Haz tu mejor esfuerzo en cualquier trabajo. No te duermas! El éxito genera más éxito. Así que mantente hambriento de éxito. Contrata a gente con pasión por la excelencia. 

    4. Haz un análisis FODA.. Tan pronto como inicies/crees una empresa haz una lista escrita de fortalezas y debilidades de ti y tu empresa. No dudes en eliminar las manzanas podridas. 

    5. Sé emprendedor. Busca lo próximo que viene. Encuentra un grupo de ideas sobre las que hay que actuar rápida y decididamente y métete en eso. A veces el primer paso es el más difícil. Solo hazlo! Ten el coraje de seguir a tu corazón y tu intuición. 

    6. Comienza en pequeño, piensa en grande. No te preocupes de demasiadas cosas a la vez. Toma un puñado de cosas simples para comenzar, y entonces ve progresando hacia cosas más complejas. No pienses solo en el mañana, sino también en el futuro distante. 

    7. Aspira a ser líder. Posee y controla la tecnología primaria en todo lo que haces. Si hay una mejor tecnología disponible, úsala, no importa si no hay nadie más usándola. Sé el primero, y conviértelo en un estándar de la industria. 

    8. Enfócate en el resultado. La gente te juzga por el resultado, así que enfócate en el resultado. Sé un patrón de calidad. Algunas personas no están acostumbradas a un ambiente donde se espera la excelencia. Promociona. Si no saben de ti, no te van a comprar. Pon atención en el diseño. "El diseño no es solo como se ve o qué parece, es como funciona." 

    9. Pide la opinión. Pide la opinión de personas con distintos trasfondos. Cada uno de ellos te dirá algo útil. Enfócate en aquellos que van a usar tu producto. Escucha a tus clientes. 

    10. Innova. La innovación distingue a un líder de los seguidores. Delega, deja que otros hagan el 50% del trabajo administrativo para poder pasar el 50% de tu tiempo en cosas nuevas. Concéntrate en las creaciones importantes y en la innovación radical. Contrata a personas que quieran hacer las mejores cosas del mundo. Necesitas una cultura orientada al producto, incluso en una empresa de tecnología. 

    11. Aprende del fracaso. Algunas veces, cuando innovas cometes errores. Es bueno admitirlos rápidamente y seguir mejorando tus otras innovaciones. 

    12. Aprende continuamente. Siempre hay "algo mas" para aprender! Haz polinización cruzada de ideas tanto dentro como fuera de la empresa. Aprende de clientes, competidores y socios. Y eres socio de alguien que no te gusta, aprende a quererlo, halágalo y aprende a beneficiarte de él. Aprende a criticar a tus enemigos abierta y honestamente.