Mostrando entradas con la etiqueta programacion. Mostrar todas las entradas
Mostrando entradas con la etiqueta programacion. Mostrar todas las entradas
viernes, 31 de octubre de 2014
by Ernesto
Mucho se habla de gestión de riesgos, ya sea en metodologías ágiles como en, cof cof, waterfall, y claro, mucho se colocan tablas y con una mayor o menor pericia se indican los impactos y probabilidades respectivas, hasta ahí "lo normal".
Lo usual es que por lo usual los criterios de experiencia que se toman están basados en el tipo de proyecto: ERP, almacén, web o desktop o también en el grado de complejidad del negocio, estado de las relaciones con el cliente, primera vez, time to market etc, nada fuera de lo habitual.
El problema es que muchas veces la visión "de negocio" logra opacar al criterio técnico en un factor muy importante: no todas las tecnologías tienen igual riesgo, y no, no me refiero al hecho de que por ejemplo un consultor de SAP cobre mas que un diseñador gráfico (llevándolo a extremos), sino que las diversas tecnologías tienen diferentes niveles de disponibilidad de recursos de aprendizaje, lo cual quieras que no, impacta en las previsiones que se requieren tomar para un proyecto.
En algunos casos es evidente que hay muchos mas recursos (ojo, en este blog nunca hablamos de personas como "recursos", ¿ok?) para SQL Server y Oracle que para Informix o Sybase, por lo cual el tiempo en que un equipo puede llegar a ser productivo en un proyecto con estas dos tecnologías "raras" es mayor, pero mal que bien se puede solventar con la experiencia previa en otros motores de base de datos, así que tenemos un riesgo ligeramente mayor, pero justificable.
Visto a este contexto debemos pasar a un diferente tipo de escenario, los frameworks o soluciones "listas para usar", productos que se espera que puedan ser usados directamente por un usuario final, "casi" sin necesidad de desarrollo, pero claro eventualmente terminan pidiendose personalizaciones y como la aplicación tiene una API en un lenguaje "conocido" como PHP, C# o Java pues se empieza el desarrollo tomando los mismo criterios que cualquier otro proyecto a medida y .. ahi empiezan los problemas.
En concreto estas aplicaciones (concretamente los CMS que son con los que he tenido experiencia) presentan dos problemas que los hacen "bestias" diferentes a cualquier desarrollo a medida:
Queda claro que estos dos factores tienen alta probabilidad de incidir sobre el tiempo que le puede tomar al equipo implementar la solución, por lo que seria un grave error asumir proyecciones sin tomar en cuenta el esfuerzo extra mencionado, si, es difícil acometer estas cosas que nos dejan productos como Magnolia, Vignette, o SharePoint, pero al final son retos técnicos que terminan siendo superados, a menos claro que la dirección asuma que ".net es .net" y no tome en cuenta detalles como estos en sus proyecciones, ahora que si a estas dos cosas, se le suma la poca experiencia local, o poca documentación actualizada en foros, asumimos grandes riesgos que no podemos dejar de informar de antemano, y créanme, en el caso de CMS (salvo que tengas miembros del equipo que actúen como pilares del resto) siempre pasa algo de lo mencionado, por lo que debemos estar alertas, regresando al titulo de este post, no todo tiene igual riesgo (técnico).
Lo usual es que por lo usual los criterios de experiencia que se toman están basados en el tipo de proyecto: ERP, almacén, web o desktop o también en el grado de complejidad del negocio, estado de las relaciones con el cliente, primera vez, time to market etc, nada fuera de lo habitual.
El problema es que muchas veces la visión "de negocio" logra opacar al criterio técnico en un factor muy importante: no todas las tecnologías tienen igual riesgo, y no, no me refiero al hecho de que por ejemplo un consultor de SAP cobre mas que un diseñador gráfico (llevándolo a extremos), sino que las diversas tecnologías tienen diferentes niveles de disponibilidad de recursos de aprendizaje, lo cual quieras que no, impacta en las previsiones que se requieren tomar para un proyecto.
En algunos casos es evidente que hay muchos mas recursos (ojo, en este blog nunca hablamos de personas como "recursos", ¿ok?) para SQL Server y Oracle que para Informix o Sybase, por lo cual el tiempo en que un equipo puede llegar a ser productivo en un proyecto con estas dos tecnologías "raras" es mayor, pero mal que bien se puede solventar con la experiencia previa en otros motores de base de datos, así que tenemos un riesgo ligeramente mayor, pero justificable.
Visto a este contexto debemos pasar a un diferente tipo de escenario, los frameworks o soluciones "listas para usar", productos que se espera que puedan ser usados directamente por un usuario final, "casi" sin necesidad de desarrollo, pero claro eventualmente terminan pidiendose personalizaciones y como la aplicación tiene una API en un lenguaje "conocido" como PHP, C# o Java pues se empieza el desarrollo tomando los mismo criterios que cualquier otro proyecto a medida y .. ahi empiezan los problemas.
En concreto estas aplicaciones (concretamente los CMS que son con los que he tenido experiencia) presentan dos problemas que los hacen "bestias" diferentes a cualquier desarrollo a medida:
- Esfuerzo extra para configurar los entornos, tanto de desarrollo, como de producción, en el caso de SharePoint por ejemplo era muy complicado, tan así que no se podía trabajar contra un servidor compartido sino que cada desarrollador debía de tener una Maquina Virtual para tener un entorno de trabajo, todo lo cual involucraba un esfuerzo que no era trivial.
- Cambio de paradigma respecto a como desarrollar y/o depurar, pues aquí no eres tu desarrollando una aplicación, estas intentando construir algo sobre los cimientos que alguien mas hizo, y que le puso reglas que pueden ser no usuales (y sobre todo contraintuitivas), pero necesarias para que el producto funcione, lo cual deriva en una necesidad de conocimiento (y tiempo de aprendizaje) mas allá de cuan experto uno crea ser en el lenguaje en cuestión.
Queda claro que estos dos factores tienen alta probabilidad de incidir sobre el tiempo que le puede tomar al equipo implementar la solución, por lo que seria un grave error asumir proyecciones sin tomar en cuenta el esfuerzo extra mencionado, si, es difícil acometer estas cosas que nos dejan productos como Magnolia, Vignette, o SharePoint, pero al final son retos técnicos que terminan siendo superados, a menos claro que la dirección asuma que ".net es .net" y no tome en cuenta detalles como estos en sus proyecciones, ahora que si a estas dos cosas, se le suma la poca experiencia local, o poca documentación actualizada en foros, asumimos grandes riesgos que no podemos dejar de informar de antemano, y créanme, en el caso de CMS (salvo que tengas miembros del equipo que actúen como pilares del resto) siempre pasa algo de lo mencionado, por lo que debemos estar alertas, regresando al titulo de este post, no todo tiene igual riesgo (técnico).
martes, 4 de diciembre de 2007
by Ernesto
Hace unos dias en una reunion conoci a un egresado de Ing. Informatica de una de las universidades surgidas a la amparo de la Ley de Promoción de la Inversión en la Educación durante el fujimorismo, y sin querer la conversacion derivo a conversar sobre el enfoque que se da a nuestra carrera en las universidades.. y fue mas o menos asi.
Comentaba sobre el hecho de que algunos egresados de una tercera universidad tenian a honra el hecho de casi no haber programado, y que cuando les toco hacerlo contrataron a alguien para que lo hiciera por ellos, actitudes como esa serian desconcertantes en la UNI o en la PUCP pero a este caballero le parecia lo mas normal del mundo, arguia que lo importante era el negocio que todo formaba parte del negocio, etc etc, y que al final el programa final es lo de menos. Un poco mas y casi se dirige al lugar comun de que el codigo es la pieza mas basica del todo y que un Ing. Civil no necesita saber colocar ladrillos para hacer su trabajo. Eh??? Si, no es raro que se llegue a dicha peregrina conclusion, ignorando que los diversos modulos de una solucion tienen una tarea intelectual detras de ellos, que no homogenea precisamente.
Vayamos por partes, si... las aplicaciones informaticas al final de cuentas deben estar alineadas a los objetivos de la organizacion, y significar un medio para la mejora de sus procesos o para lograr ventajas competitivas, hasta ahi las cosas claras. El problema que ocurre es que a veces se llega a un nivel tan abstracto en el como implementar las cosas, todo diluido en pilas de documentacion e informes a la gerencia, que en la practica tratan de enmascarar que no se esta cumpliendo los objetivos que se tenia con la implementacion o desarrollo planificado. Y nos olvidamos que dentro de nuestro ambito de competencia lo que importa es la entrega de lo realizado, la obra visible y que sea de utilidad a la organizacion.
(Aprovecho para recordar los principios del Manifiesto Agil:
Estamos poniendo al descubierto mejores métodos para desarrollar software, haciéndolo y ayudando a otros a que lo hagan. Con este trabajo hemos llegado a valorar:
A los individuos y su interacción, por encima de los procesos y las herramientas.
El software que funciona, por encima de la documentación exhaustiva.
La colaboración con el cliente, por encima de la negociación contractual.
La respuesta al cambio, por encima del seguimiento de un plan.
Aunque hay valor en los elementos de la derecha, valoramos más los de la izquierda.)
Parte de los problemas que se tiene en los procesos de desarrollo de aplicaciones vienen dados por malas estimaciones y una gestion irrealista de las expectativas del cliente, situaciones que en varios casos vienen dadas porque dichos pasos han sido dados por profesionales que han visto la informatica de manera muy ligera, osea: no saben la clase de complejidades que puede implicar el desarrollo de tal o cual funcionalidad, o no saber las limitaciones que puede tener cierta tecnologia y el impacto en los plazos de entrega que tendra el "puentear" dichas limitaciones. Se me dira que si, pero que un jefe de proyecto no esta para tirar lineas de codigo, y doy toda la razon, pero voy al hecho de la necesidad de este jefe de proyecto de haber tenido, ya sea en su educacion o experiencia previa, de un conocimiento interno de que es lo que hay detras de las aplicaciones informaticas.
Cierto, he tenido jefes que no han pasado por la programacion y han sido capaces de sacar adelante sus proyectos, pero en estos casos han tenido el suficiente sentido comun de saber escuchar a la gente tecnica que lo rodea, pero aun asi, de mi experiencia puedo decir que a un jefe que haya pasado por las trincheras es mucho mas dificil pasearlo, y que ademas te dara una estimacion fiable.
Por otro lado esta el otro perfil de nuestra carrera, el que permanece siempre detras de las lineas de codigo, si, es facil decir que con un curso de medio año ya se puede programar, pero olvidamos la importancia de una formacion matematica y logica en el perfil de un programador de calidad, la necesidad de introducir principios de eficiencia, programacion metodica, y por que no? algo de elegancia al momento de plantear las ideas en codigo.
Entonces, llegamos al punto de la importancia que tienen las bases (programacion, matematicas, logica, ciencias de la computacion) en la formacion de un ingeniero informatico, independientemente del curso profesional que luego se siga (gestion, programacion, comunicaciones), esas bases son las que nos definen y las que hacen que no seamos Administradores de Empresas con conocimientos de Informatica, que es lo que parecia el perfil de mi interlocutor de entonces.
Comentaba sobre el hecho de que algunos egresados de una tercera universidad tenian a honra el hecho de casi no haber programado, y que cuando les toco hacerlo contrataron a alguien para que lo hiciera por ellos, actitudes como esa serian desconcertantes en la UNI o en la PUCP pero a este caballero le parecia lo mas normal del mundo, arguia que lo importante era el negocio que todo formaba parte del negocio, etc etc, y que al final el programa final es lo de menos. Un poco mas y casi se dirige al lugar comun de que el codigo es la pieza mas basica del todo y que un Ing. Civil no necesita saber colocar ladrillos para hacer su trabajo. Eh??? Si, no es raro que se llegue a dicha peregrina conclusion, ignorando que los diversos modulos de una solucion tienen una tarea intelectual detras de ellos, que no homogenea precisamente.
Vayamos por partes, si... las aplicaciones informaticas al final de cuentas deben estar alineadas a los objetivos de la organizacion, y significar un medio para la mejora de sus procesos o para lograr ventajas competitivas, hasta ahi las cosas claras. El problema que ocurre es que a veces se llega a un nivel tan abstracto en el como implementar las cosas, todo diluido en pilas de documentacion e informes a la gerencia, que en la practica tratan de enmascarar que no se esta cumpliendo los objetivos que se tenia con la implementacion o desarrollo planificado. Y nos olvidamos que dentro de nuestro ambito de competencia lo que importa es la entrega de lo realizado, la obra visible y que sea de utilidad a la organizacion.
(Aprovecho para recordar los principios del Manifiesto Agil:
Estamos poniendo al descubierto mejores métodos para desarrollar software, haciéndolo y ayudando a otros a que lo hagan. Con este trabajo hemos llegado a valorar:
A los individuos y su interacción, por encima de los procesos y las herramientas.
El software que funciona, por encima de la documentación exhaustiva.
La colaboración con el cliente, por encima de la negociación contractual.
La respuesta al cambio, por encima del seguimiento de un plan.
Aunque hay valor en los elementos de la derecha, valoramos más los de la izquierda.)
Parte de los problemas que se tiene en los procesos de desarrollo de aplicaciones vienen dados por malas estimaciones y una gestion irrealista de las expectativas del cliente, situaciones que en varios casos vienen dadas porque dichos pasos han sido dados por profesionales que han visto la informatica de manera muy ligera, osea: no saben la clase de complejidades que puede implicar el desarrollo de tal o cual funcionalidad, o no saber las limitaciones que puede tener cierta tecnologia y el impacto en los plazos de entrega que tendra el "puentear" dichas limitaciones. Se me dira que si, pero que un jefe de proyecto no esta para tirar lineas de codigo, y doy toda la razon, pero voy al hecho de la necesidad de este jefe de proyecto de haber tenido, ya sea en su educacion o experiencia previa, de un conocimiento interno de que es lo que hay detras de las aplicaciones informaticas.
Cierto, he tenido jefes que no han pasado por la programacion y han sido capaces de sacar adelante sus proyectos, pero en estos casos han tenido el suficiente sentido comun de saber escuchar a la gente tecnica que lo rodea, pero aun asi, de mi experiencia puedo decir que a un jefe que haya pasado por las trincheras es mucho mas dificil pasearlo, y que ademas te dara una estimacion fiable.
Por otro lado esta el otro perfil de nuestra carrera, el que permanece siempre detras de las lineas de codigo, si, es facil decir que con un curso de medio año ya se puede programar, pero olvidamos la importancia de una formacion matematica y logica en el perfil de un programador de calidad, la necesidad de introducir principios de eficiencia, programacion metodica, y por que no? algo de elegancia al momento de plantear las ideas en codigo.
Entonces, llegamos al punto de la importancia que tienen las bases (programacion, matematicas, logica, ciencias de la computacion) en la formacion de un ingeniero informatico, independientemente del curso profesional que luego se siga (gestion, programacion, comunicaciones), esas bases son las que nos definen y las que hacen que no seamos Administradores de Empresas con conocimientos de Informatica, que es lo que parecia el perfil de mi interlocutor de entonces.
Categories
- .NET (11)
- 24 horas (1)
- 3G (1)
- 4B (1)
- abogados (1)
- aburrimiento (1)
- Adlo (1)
- ADSL (2)
- AEAT (1)
- Agile (6)
- Agile Open Lima (1)
- Air Plus Comet (1)
- AJAX (1)
- All Music Guide (2)
- ALM (4)
- Altavista (1)
- alumni (1)
- AMG (1)
- Aplicaciones Web (7)
- apple (6)
- Argentina (1)
- ASP.NET (2)
- Azure (1)
- Bancos (3)
- Bancoval (1)
- banda ancha (3)
- bases de datos (2)
- batch (1)
- BEA (1)
- Betamax (1)
- Bill Gates (2)
- blackberry (1)
- bloggers (1)
- blogs (1)
- Blogs y Bloggers (5)
- BlogsPeru (2)
- bloqueo (1)
- Blu-Ray (1)
- brecha digital (2)
- browsers (10)
- buscadores (1)
- Bush (1)
- C# (2)
- cabeceo (1)
- cabinas (1)
- calidad (1)
- call center (1)
- capital de riesgo (1)
- career manager (1)
- Carlos Slim (1)
- celular (1)
- censura (1)
- certificacion (3)
- certification (1)
- China (1)
- chips (1)
- Chrome (7)
- Chromium (1)
- cibercultura (1)
- Claro (1)
- CMS (1)
- Cobol (3)
- codigo (1)
- college (1)
- comercio electronico (1)
- comparativa (1)
- competitividad (1)
- computacion (1)
- comunidades (2)
- Conan O'Brien (1)
- conectividad (2)
- conferencia anual (1)
- consultoria (2)
- contenidos (1)
- convergencia (1)
- correo Peru (1)
- CPI (1)
- credibilidad (1)
- crisis (2)
- CRM (4)
- cubiculos (1)
- Cuil (1)
- Damian Voltes (1)
- David Konzevik (1)
- Dell (1)
- Delphi (2)
- demandas (1)
- derecho (1)
- desarrolladores (4)
- Dexia (1)
- dicain (1)
- direccion de sistemas (1)
- dirinfo (1)
- diseño web (3)
- Disk2VHD (1)
- document.all (1)
- domimio (1)
- dominio (1)
- dominios (1)
- dotcom (1)
- educacion (2)
- El Bruno (1)
- El Comercio (2)
- emprendimientos (1)
- encarte (1)
- Enrique Dans (1)
- Entity Framework (1)
- ERP (1)
- errores (2)
- escasez (1)
- estilos (1)
- eula (1)
- examenes (1)
- Facebook (6)
- Federico Salazar (1)
- Feynman (2)
- Firefox (6)
- firefox3.5 (1)
- FNMT (1)
- Fon (3)
- foneras gratis (1)
- fotografia digital (2)
- fusion (2)
- gadgets (1)
- Genaro Delgado (1)
- General Motors (1)
- Georgeo Pulikkathara (1)
- Git (3)
- Gmail (1)
- GoLive (1)
- Google (14)
- graficos (2)
- Guillermo Giacosa (1)
- hackers (1)
- HD-DVD (1)
- hi5 (5)
- Hotbot (2)
- HP (1)
- HSDPA (1)
- HTML (2)
- Hudson (1)
- IBM (1)
- ICANN (1)
- IEEE (1)
- impuestos (1)
- Infoseek (2)
- ingenieria informatica (1)
- innovacion (4)
- Instituto de Empresa (2)
- Intel (1)
- Internet (5)
- Internet Explorer (7)
- Inventarte (1)
- inyeccion de dependencias (1)
- IoC (1)
- iPad (1)
- iphone (3)
- iPod (3)
- irfanview (2)
- Jaime Lertora (1)
- Java (3)
- JavaScript (2)
- Jazztel (4)
- juegos olimpicos (1)
- Kanban (3)
- Kane Kramer (1)
- Kodak (1)
- Larry Ellison (1)
- latinoamerica (1)
- legados (1)
- Leonard Hofstadter (1)
- licencias (1)
- LINQ to SQL (2)
- Linux (2)
- Live (1)
- locutorios (1)
- Lycos (1)
- Magnolia (1)
- mainframes (4)
- Manning (1)
- Maquinas virtuales (1)
- marca (2)
- marketing (4)
- Martin Varsavsky (5)
- matematicas (1)
- mcpd (3)
- mcsd (1)
- Media Player (3)
- medios (2)
- mentor (1)
- metodologias. (2)
- microelectronica (1)
- Microsoft (29)
- Microsoft Expression (1)
- migración (2)
- Mobuzz (1)
- monopolio (2)
- morfeo (1)
- movil (1)
- mozilla hispano (1)
- mozilla-europe (1)
- mp3 (2)
- MSBuil (1)
- MSDN (2)
- MSN (1)
- MUG (1)
- MUGPeru (1)
- myspace (3)
- napster (1)
- Natal (1)
- navegadores (1)
- negocios (2)
- netbooks (1)
- Nokia (1)
- NuGet (1)
- Obama (1)
- obsolescencia (6)
- ocram (1)
- Office (1)
- ofimatica (1)
- open source (1)
- Openbank (1)
- Oracle (2)
- outsorcing (1)
- PADRE (1)
- paint (2)
- Panamerica Television (1)
- Pantel (1)
- papa upa (1)
- Parablogs (2)
- patrones (2)
- pekin (1)
- pelicula (1)
- pelotazo (1)
- performance (1)
- periodismo (1)
- Peru.21 (3)
- perublogs (2)
- PHP (1)
- Polonia (1)
- prensa escrita (1)
- privacidad (2)
- problemas de conexion (1)
- procesos por lotes (1)
- programacion (2)
- Prometric (2)
- propiedad intelectual (2)
- proyectos (6)
- publicidad (2)
- pucp (3)
- puntocom (1)
- racismo (1)
- radio (1)
- RCP (1)
- recordacion (2)
- redes sociales (6)
- Remix (1)
- renta (1)
- rentabilidad (2)
- sandisk (1)
- Sansa View (1)
- SAP (1)
- satisfaccion (1)
- Scotiabank (1)
- Scrum (2)
- Service Pack 3 (1)
- servidor de aplicaciones (1)
- SharePoint (1)
- Sheldon Cooper (3)
- showModalWindow (2)
- Siebel (1)
- Silverlight (2)
- Simo (1)
- Sistemas operativos (3)
- sites (1)
- SketchFlow (1)
- smartphones (1)
- SOLID (3)
- sony (2)
- Spam (4)
- Speedy (1)
- SQL Server 2008 (2)
- standards (1)
- Star Office (1)
- startups (1)
- Steve Ballmer (1)
- Steve Jobs (2)
- Sudamericano (1)
- TCP/IP (1)
- TDD (1)
- TDT (1)
- Team Foundation Server (3)
- Team Foundation Service (3)
- telefonia celular (2)
- telefonia movil (2)
- Telefonica (2)
- telemarketing (1)
- Television (1)
- TFS (2)
- The Big Bang Theory (2)
- Toshiba (1)
- Trabajo basura (1)
- trabajobasura.com (1)
- transacciones (1)
- Tuenti (1)
- universidades (2)
- usabilidad (2)
- usuario (1)
- utero de marita (1)
- V8 (1)
- VHS (1)
- Vignette (1)
- virgenes digitales (1)
- Virtual PC (1)
- VirtualBox (1)
- Visual Basic (5)
- Visual Studio (3)
- Visual Studio Online (1)
- VivaAerobus (1)
- vodafone (1)
- VSO (1)
- VUE (2)
- Wamba (1)
- Web (13)
- WebCrawler (1)
- whitehouse.gov (1)
- Wiese (1)
- Wifi (2)
- Windows (2)
- Windows 7 (7)
- Windows 8 (1)
- Windows Vista (4)
- Word (2)
- WPF (1)
- XML (2)
- XP (3)
- XP Mode (1)
- Yahoo (1)
- YouTube (3)
About Me
- Ernesto
- Egresado de Ingenieria Informatica de la PUCP. Master en Direccion de Sistemas y Tecnologias de la Informacion por el Instituto de Empresa. MCSD,MCSD.NET.
Blog Archive
-
►
2009
(31)
- ► septiembre (5)
-
►
2008
(34)
- ► septiembre (5)
-
►
2007
(28)
- ► septiembre (3)
-
►
2006
(10)
- ► septiembre (1)