Ver Mensaje Individual
  #10  
Antiguo 25-11-2016
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Reputación: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Quien no a caido en esa forma de pensar?

Se ve muy a menudo. Es muy notable entre quienes afirman que hay que tener un solido conocimiento matematico para ser un buen programador.

Se podria argumentar que es facil sobre-valorar la influencia del conocimiento de un area en otra. Como quien dice que es super-util aprender latin.

Por ejemplo, de joven leia mucho sobre historia. Excesivamente. Argumento que saber historia es critico para ser un buen programador! porque en *mi mente* soy buen programador y ademas me encanta la historia. "Obvio" estan ligados.

Pensandolo mejor, pa' lo que me ha servido es que leer mucho te prepara para .... leer mucho. Asi que leo todos los dias mucho, sobre programacion, por ejemplo. Asi que hay un efecto, pero quizas no por las razones que podrian pensarse.

-------
Es facil confundir conocimiento aplicado a sabiduria. Lo que necesito en especifico, sobre lo general.

Por ejemplo:

http://www.etnassoft.com/2011/07/14/...bes-programar/

- ¿Sabes qué es un Diagrama Nassi-Shneiderman? Si no lo sabes, ¿porqué no?

Otra forma de visualizar. Visualizar es util, pero esta forma en especifica no es tan util como para ser indispensable.

- ¿Sabes cuál es la diferencia entre una máquina (de estados) Moore y una Mealy? Pues deberías!

Saber como hacer un maquina de estado es MUY util. Pero la forma mas util, es muy simple y no hay que preocuparse por otras.

- ¿Eres capaz de escribir un algoritmo quicksort en tu lenguaje favorito sin tener que buscar la fórmula por Internet? ¿Y en un segundo lenguaje?

Saber como implementar quicksort es util. Saber cual es el sort mas practico es MAS UTIL.

- ¿Sabes lo que quiere decir el término ‘Análisis de transformación‘?

Ni idea. Pero transformar cosas es util.

- ¿Puedes realizar una descomposición funcional de un algoritmo utilizando un Diagrama de Flujos?

Descomponer y recomponer codigo es util. Es mas veloz hacerlo directamente que ir a otra herramienta.

- ¿Sabes que significa el concepto de ‘datos vagabundos‘ (Tramp Data)?

Limpiar datos es muy util. https://en.wiktionary.org/wiki/tramp_data no te enseña nada que no sepas ya.

Los otros son asi por el estilo. Pueden ser utiles dado el caso, pero NO SON INDISPENSABLES.

------

Sobre "Que debes saber como programador"

- Patrones de Diseño

La mayoria son debido a idiosincracias de los lenguajes OO, pero innecesarios en lenguajes funcionales:

http://fsharpforfunandprofit.com/fppatterns/

- Principios de Diseño:

SOLID solo aplica a OO. No es la unica forma.

SOLID *no es* un principio de diseño. Es como decir que "principios de mecanica" es como usar una fresadora electronica industrial.

- Metodologías:

Es mas util como descubrir cuando la metodologia esta estorbando o perjudicando el diseño.


- Disciplinas:

Conocer disciplinas esta bien. Curiosamente unas disciplinas eliminan, invalidan o hacen menos relevantes a otras.

- Herramientas:

Y en herramientas solo lista las de diagramas. Son poco utiles en la vida real. MAS UTIL es como hacer visualizadores de codigo, desempeño, relaciones etc. El *tipo concreto* de diagrama se escoje de acuerdo

-----

Asi que que realmente seria util?

Me gusto esto:

http://worrydream.com/LadderOfAbstraction/

Pregunta: How can we design systems when we don't know what we're doing?

Esto es programar!

Cita:
When designing at this boundary, the challenge lies not in constructing the system, but in understanding it. In the absence of theory, we must develop an intuition to guide our decisions. The design process is thus one of exploration and discovery.

...
...
Likewise, the most powerful way to gain insight into a system is by moving between levels of abstraction. Many designers do this instinctively. But it's easy to get stuck on the ground, experiencing concrete systems with no higher-level view. It's also easy to get stuck in the clouds, working entirely with abstract equations or aggregate statistics.
Se podria argumentar que la habilidad mas importante de un programador es darse cuenta que esta perdido y sin rumbo, y saber encontrar su camino.

Para ello. Lee. Hacer experimentos/prototipos. Visualiza. Comete errores, busca que paso, donde esta la causa. Hace preguntas (normalmente a google!), mejora su comprension de sus herramientas, esta dispuesta a dejarlas atras y aprender otras.
__________________
El malabarista.
Responder Con Cita