domingo, 31 de marzo de 2013

¿Qué es ser un Hacker?


Tomando como referencia la lectura Hackers and Painters de Paul Graham, buena lectura se las recomiendo.

Algunos conocerán a un Hacker como la persona que entra en las computadoras del gobierno y roba toda la información, para luego vendérsela a terroristas, esa es la idea que nos venden en películas de Hollywood, espían, no les importan las leyes,  todo aquel que tenga una computadora está en riesgo de ser víctima de estas personas, por eso muchos quieren conocer a uno o ser uno, sólo para conseguir contraseñas de correos o cuentas como facebook.

Siendo más realistas como Paul Graham dijo un hacker es un buen programador y  tiene poco que ver con lo de entrar a computadoras y  hacer lo que él quiera.

Ser un gran programador tiene mucho que ver con otras cosas en la vida que no imaginamos, como pintar. ¿Por qué? bueno en los dos casos un hacker tiene que crear un programa para hacer lo que él quiere y lo tiene que hacer pensando en cómo funcionará, al igual que un pintor, imagina que es lo que plasmará en ese lienzo y a qué tipo de personas le gustará.


Otras de las cosas que podemos comparar y es importante, como saber cuando un código es bueno, como las pinturas, las mejores perduran con el tiempo y las pinturas mal hechas se olvidan, al igual que el código, si creamos un código muy bueno perdurará por mucho tiempo, así es como nos daremos cuenta que el código está bien hecho.



Para ser un buen hacker se tiene que practicar, hacer ejercicios en la escuela o siendo más apasionados, hacerlos por nuestra propia cuenta, trabajando en proyectos personales que nos motivan a seguir adelante, pero no olvidemos también los trabajos que no nos motiven tanto, ya que casi siempre son los que pagan la comida ya que en una empresa te dirán que hacer y no siempre será algo que te entusiasme  y esto puede afectarnos de esta forma.


Me gusta el proyecto       =    Programo sin parar.
No me gusta el proyecto  =    Programo algunas cosas.




Un hacker debe  ponerse en los zapatos de otras personas y ver lo que ellos ven, su punto de vista, al hacer esto estamos en buen camino, ya que ellos consiguen  llegar al objetivo, ven lo que tienen que hacer y a quien se lo van a hacer. Si queremos ser grandes programadores sólo hay una cosa, practicar, nunca dejar de hacer lo que nos gusta, trabajar en proyectos personales es un buen inicio.  




domingo, 24 de marzo de 2013

Tecnología



En esta entrada me puse a pensar después de leer la pagina codinghorror  sobre la época en la que vivimos y que este es el momento correcto para los que nos gusta la tecnología.  Con la llegada de tantos dispositivos como teléfonos inteligentes, tabletas, consolas (La famosa PS3 y una tal Xbox 360) toda esta tecnología nueva y que se actualiza tan rápido que apenas salimos de la tienda con un celular de última generación  y ya están poniendo en el aparador uno mejor.


A todo esto, la tecnología avanza a una gran rapidez pero, qué pasa con las laptops?, hablando de dispositivos móviles las laptops se quedaron estancadas y muy probablemente olvidadas por muchos, ya todo lo que hacíamos con una laptop ahora lo podemos hacer con ese famoso Ipad, ya no tenemos que esperar y ver como gira el cursor mientras carga Windows, es más fácil prender tu tablet y entrar a una página de internet en segundos, también contestar o enviar un correo. Sin duda  estamos viendo el fin de las computadoras portátiles como las conocíamos antes, acompañadas con sus 2 mejores amigos un ratón  y un teclado.



Diferencias Tableta y Laptop




Si decidimos hacer uso de una tableta, extrañaremos el uso de un mouse y un teclado, ahora tendremos una pantalla llena de huellas en vez de un teclado con letras borradas de el buen uso que le dimos.


¿Final de las Portátiles?

Comparando una computadora portátil contra una tableta, tenemos muchos pros y contras, si somos personas que nos gusta solo usar Internet para comunicarnos y entrar en redes sociales, mandar correos, la tableta es nuestra elección, pero si estamos pensando en instalar programas necesitamos un procesador más potente que nos responda a la hora de hacer uso de nuestros programas, la respuesta es no, las portátiles no desaparecerán, ya que hacen muchas cosas que  una tableta no puede hacer.

Lo que está pasando es que las laptops se quedaron paradas en cuanto a diseño, después de hacerle unas cuantas modificaciones a la primer portátil   “La Osborne 1”,  como hacerla realmente portátil,  más ligeras y delgadas y con más potencia.


Ustedes que opinan? Qué harían o que le pondrían a una laptop totalmente nueva conservando su potencia y potabilidadEn mi opinión me gustaría ver algo nuevo como la propuesta de Asus, dos pantallas,  una para ver los programas en los que estamos trabajando y otro para hacer uso del teclado, mouse y más aplicaciones, todo esto sin perder la potencia que nos da una computadora portátil.













domingo, 17 de marzo de 2013

The Duct Tape Programmer


Hoy hablaremos sobre un tipo de programador, el programador Duct Tepe, basándonos en lo que dice nuestro amigo JoelSpolsky en su blog.


Empecemos:

Este tipo de programadores te darán a entender algo muy importante para ellos a la hora de hacer un proyecto, todo código que tenga algún grado de dificultad hará que tu proyecto se complique. Es por eso que ellos prefieren no usar C++, plantillas o herencia múltiple. Eso es complicarse la vida.



Ventajas:

Es el tipo de programador que encuentra el error y lo arreglar rápido y de forma que no falle de nuevo, pero esto traerá consecuencias más adelante.

Desventajas:

Como lo mencionamos antes él arreglará el código rápido y de forma que no falle, pero ¿Cual es su costo? El programador Duct tape no le importará que tan bonito quede o la facilidad de uso.



Todos en algún momento hemos estado en este rol de programador Duct Tape, cuando recordamos que nos faltó algo de último minuto se lo agregamos o si hay algún error y lo corregimos con lo primero que se nos venga a la mente. El punto es solucionarlo como sea, luego lo mejoramos “Esto último raras veces pasa”.






“El código es un desastre pero funciona”


Con esto podremos decir que los programadores Duct Tape son pragmáticos, si no recuerdas de este tema tengo una entrada que habla sobre ello échale un vistazo.

Finalmente, cómo sabremos cuándo permitirle trabajar en nuestro proyecto a un programador Duct Tape?, fácil, tomemos en cuenta que un proyecto con bonito código pero sin terminar a tiempo no nos dará para comer, en cambio si el proyecto funciona, al cliente no le importará como se ve el código, sino que funcione. 

domingo, 10 de marzo de 2013

¿Tu que lengua usas?





Existen muchos lenguajes de programación,  los viejos, los que son famosos y los que vienen. Los lenguajes de programación son muchos  y cada uno tiene sus ventajas y desventajas. Para elegir nuestro lenguaje de programación tenemos que pensar en una sola cosa: ¿Cual lenguaje nos es más útil ?.






Puntos para escoger un lenguaje a la hora de resolver un problema

1.     Tomar en cuenta todos los lenguajes que sabemos.
2.     Analizar el problema con los lenguajes que conocemos.
3.     Ver las ventajas y desventajas de cada lenguaje respecto al problema.


Tenemos que estar conscientes de qué es lo que sabemos y en base a ello analizar el problema a resolver, un lenguaje de programación diferente, hace que veamos de otra forma el proceso para llegar al resultado. Si vemos las posibilidades que tenemos podemos hacer comparaciones y elegir la más rápida o la más confiable.

     Un ejemplo simple sería, que tuviéremos que crear un programa que ordene cierto cantidad     de números, esto es fácil usemos un  Isertion Sort, La pregunta es¿En donde ejecutarlo?








Todo depende de la situación en la que estemos, si tenemos tiempo de sobra podremos hacer lo que queramos,  pero regresando a la realidad, el tiempo es dinero, así que ya sabemos cual elegir. La elección también puede estar ligada a características especiales que nos impidan elegir la más rápida.


Otra opción

También podemos crear nuestro propio lenguaje o  de uno ya existente agregarle más funcionalidades que nos pueden ser útiles tanto a nosotros como a las demás personas que usen ese lenguaje.





Tomando en cuenta lo que acabamos de comentar tenemos que ver los diferentes puntos de vista de un lenguaje y sus características como librerías funciones y dependiendo del lenguaje hacer uso de herencia.




domingo, 3 de marzo de 2013

Programación práctica

Hoy en día debemos tomar en cuenta diferentes cosas antes de adentrarnos en algún proyecto de programación y  una de ellas es programar de forma práctica. Para ello debemos ver más allá del problema,  tomar este estilo y seguir el camino del bien, con esto  evitaremos muchos inconvenientes. También tenemos que  hacernos responsables  de lo que hacemos, si nosotros nos equivocamos y cometemos algunos errores,  debemos aportar soluciones y no buscar pretextos como: es culpa del lenguaje de programación o los compañeros de trabajo.



Si por alguna razón se pierde información, algo sale mal o se daña la computadora, es deber de nosotros buscar una solución o prevenir ciertos acontecimientos, siempre es bueno tener un respaldo, a todos nos ha pasado cuando estamos a las 12:00 pm escribiendo las últimas líneas de nuestro trabajo y de repente se va la luz  y seguido de un minuto de silencio se escucha la frase “No le di guardar” así que tenemos que ser cuidadosos en ese aspecto. Si ya nos sucedió no queda de otra más que hacernos las preguntas adecuadas como:  ¿Qué  puedo hacer  para solucionar este problema?  evitemos tirar la PC por la ventana y mejor nos sentamos a buscar la solución más coherente.



Esto podría ser una bola de nieve que rueda colina a bajo empieza
 tan pequeña que cabe en la mano de un niño pero conforme rueda esta 
va creciendo más y más.
Después de solucionar estos problemas sigamos con unos consejos para nuestro software, ¿cómo empezar? no es necesario tener la gran cosa, podemos empezar con una pequeña herramienta y  agregarle cosas poco a poco, ésta adquirirá características que la harán un gran programa,  lo importante es dar la idea e ir dándole forma.  Tomar algo y transformarlo con pequeñas partes que se le agreguen intentando mejorar, siempre y cuando lo que  pedimos sea razonable no exijamos lo imposible.







Lo que el cliente pida

Por otra parte si el cliente pide ciertos requisitos tenemos que seguirlos al pie de la letra y apegarnos a lo que el cliente pide. No tendremos el lujo de que el cliente esté a nuestro lado diciéndonos que lo que estamos haciendo es de su agrado,  ya  es muy difícil que esto pase,  tenemos que programar y esperar que le guste.

Al programar en  ocasiones estaremos a la espera de lo que el cliente quiere,  pero tenemos que dar lo que el marketing promete. Mantenernos en un presupuesto y entregar en una fecha establecida que difícilmente es la fecha en la que terminaremos pero no podemos hacer a un lado todo porque al final el cliente es lo que importa.

Ver el futuro

Tenemos que pensar en lo que viene. Un programador tiene como herramientas los diferentes lenguajes que ya existen, pero quedarnos en un sólo lenguaje puede ser peligroso,  tenemos que saber más de un lenguaje y porque,  no ver el futuro y empezar con un nuevo lenguaje, puede que al principio porque no es conocido sea difícil de aprender,  si este no es famoso en su momento, pero si lo aprendes y al día siguiente es el lenguaje del momento no tendrás que empezar desde cero a aprender y ya tendrás ventaja sobre los demás. Piensa si viajaras al pasado ¿Que es lo que aprenderías? De seguro algún lenguaje que hoy en día es famoso. Así que echémosle una mirada a esos nuevos lenguajes que andan por ahí, si hoy le damos una oportunidad, puede que mañana sea la sensación y nosotros ya estaremos un paso adelante de los demás.






Como Mejorar

Como consejo  tenemos que aprender otro idioma, ¿Qué ya sabes inglés? Bueno será mejor pensar en otro,  aprender nuevos lenguajes nos ayudará  ya que podremos extender nuestros conocimientos, pensar que saber un idioma nuevo es abrir nuevas puertas de trabajo, ¿Qué ya te sabes todos los idiomas que existen?  Bueno también es bueno leer libros que nos muestren otras formas de hacer las cosas un libro enfocado a lo que nosotros hacemos en nuestro lenguaje técnico pero no sólo eso,  también debemos tomar en cuenta la parte no técnica, debemos saber cómo comunicarnos con nuestros clientes ya que no le podemos hablar con nuestro idioma técnico ya que no nos entenderá.