Ha pasado mucho tiempo desde la última vez que escribí acerca de desarrollo de software y el motivo principal ha sido un proyecto en android que ha sido muy interesante, entretenido y a momentos doloroso - es muy probable que algunos de los posts que escriba durante este tiempo tengan mucho que ver con el desarrollo en dicha plataforma.

Sin embargo me gustaría empezar con algo un poco más neural para aquellos que están interesados en el desarrollo de software; las bases fundamentales!!!!

A través de los años he aprendido Objective-C, Java, PHP, Ruby, C#, js y muchas veces he logrado hacer pequeñas aplicaciones que tal vez solo me sirvieron a mi, en muchas otras ocasiones he podido implementar soluciones para un grupo de personas, pero sin importar cual sea la circunstancia algo que siempre he tenido claro es la necesidad de comprender las bases del desarrollo; tener claro fundamentos basicos, conceptos, principios y propiedades del paradigma de objetos, los conceptos detrás de las metodologías de desarrollo, las implicaciones que existen detrás de ciertos algoritmos, cuando usar mapas en lugar de sets, aplicaciones de los patrones de diseño, etc.

Toda esta información es más importante que conocer de memoria la versión 2 del api de tal o cual framework. Si comprendemos las bases es mucho más sencillo aprender la sintaxis y el paradigma específico del lenguage que si lo hicieramos al revés y esto es aún más cierto si consideramos que ciertas versiones - de los lenguages de programación, frameworks, api -, actualmente cambian a una velocidad vertiginosa.

Una visión, tal vez más clara, de lo que implica conocer los fundamentos a distintos niveles puede ser revisada en skorks.com, de Alana Skorkin: On The Value Of Fundamentals in Software Development

Have you ever seen someone walk up to a keyboard, start coding and not stop for 10, 15, 20 minutes, no need to refer to anything? Impressive isn’t it? They seem to produce an amazing amount of useful code in a very short period time…there is nothing genius about it, just someone who took the time to learn the micro level fundamentals in that particular area – the rest was just practice.