¿Habilidades de programación, genio en la resolución de problemas o gurú del lenguaje? [duplicar]

12

En mi breve experiencia aquí en programmers.stachexchange, cuando alguien necesita ayuda para comenzar a programar, muchos usuarios sugieren aprender esto o ese lenguaje, pero pocos sugieren aprender la base de la programación (estructuras de datos, estructuras de flujo, algoritmos). , paradigmas, etc.) Entonces, estoy llegando a la conclusión de que la comunidad de programación en general le da más valor al lenguaje que a las habilidades básicas de programación, y aquí es donde viene mi pregunta:

¿Es más importante conocer un lenguaje de programación múltiple y comprender cada detalle de implementación que saber abstraer, transformar y crear algún código que resuelva un problema determinado?

    
pregunta guiman 18.01.2011 - 08:18

11 respuestas

14

Verás, las personas generalmente experimentan sentimientos y, en ocasiones, esos sentimientos son una barrera para hacer lo más importante: el trabajo en equipo.

Hay quienes tienen excelentes habilidades para resolver problemas y quienes logran recordar todos los pequeños detalles de cada idioma. Y a lo largo de los años he conocido personas que tienen una y carecen de la otra, y viceversa.

Una vez trabajé con alguien que tenía habilidades superiores para resolver problemas. Participaría en concursos de programación obteniendo excelentes resultados. Fue un programador estrella.

Pero luego, trabajar con él en un equipo como un compañero a diario fue más que complicado. Sus habilidades de "trabajo en equipo" eran algo así como "el resto del equipo animándolo a hacer todo el trabajo".

Luego me mudé de trabajo y conocí al arquitecto. Conocía todos los patrones de diseño por memoria, creando toneladas de capas de abstracción solo porque "tiene sentido mantener las cosas separadas", lo que lleva a una solución sobre diseñada dos veces el tamaño de una más simple.

Y de nuevo, en lugar de comunicar su "solución" al resto, abría Eclipse y escribía todo el código por sí mismo, simplemente porque era "más fácil".

Finalmente, conocí a Q. No era tan inteligente como el primero, ni sabía todos los patrones de diseño como el Arquitecto. Pero él codificaría como una máquina, creando soluciones elegantes y simples.

Su habilidad más notoria fue explicar las cosas, una habilidad que los otros dos carecían por completo.

    
respondido por el vz0 18.01.2011 - 18:25
10

Necesitas algunos de cada uno.

Pero la programación no es una actividad individual, requiere un equipo de desarrolladores. Siempre es útil tener al menos un 'abogado de idiomas' y un 'genio de resolución' y un 'arquitecto' (que tenga en cuenta el panorama general) en el equipo. Pero, en realidad, necesitas un mínimo de todas estas habilidades para ser un buen programador.

    
respondido por el Martin York 18.01.2011 - 08:36
7

Nada supera a hacer las cosas . Por eso yo también voto por las habilidades de resolución de problemas. Saber cada detalle de un idioma es menos importante, aunque no llamaría a alguien experto que no sepa cómo escribir código idiomático en el idioma elegido.

    
respondido por el user281377 18.01.2011 - 09:04
4

El genio de resolución de problemas es lo primero.

La sintaxis del lenguaje se puede obtener más tarde. Las habilidades desarrolladas en múltiples idiomas no se pueden utilizar a menos que se guíen por las poderosas corrientes subterráneas de las habilidades de resolución de problemas.

Todo programador debería preguntarse: ¿Me gustan los enigmas? ¿Me encanta abordar problemas desalentadores con las ideas de sentido más común?

    
respondido por el Enthusiast 18.01.2011 - 08:46
2

Necesitas ambos.

Digamos que, en lugar de un desarrollador de software, eres un capataz de construcción. Imagina que tienes un problema para resolver. Podría ser un excelente solucionador de problemas y al instante ver la solución frente a usted; sin embargo, si solo habla inglés y sus trabajadores solo hablan zulú, no va a ser muy efectivo. A la inversa, si domina el inglés y el zulú con fluidez, pero no tiene ni idea de cómo resolver realmente el problema que tiene la tarea de resolver, nuevamente no será efectivo.

Entonces, como desarrollador de software, en lugar de organizar un equipo de trabajadores zulúes, estás organizando computadoras. Necesita un gran dominio de ambas habilidades de resolución de problemas, así como de poder comunicar el problema, tanto en su lenguaje hablado a sus colegas o sus lenguajes de programación para comunicarse a la computadora.

    
respondido por el whatsisname 18.01.2011 - 16:18
2

El único rasgo que a menudo se pasa por alto, pero importante en mi opinión es el sentido común. De acuerdo, el sentido común y la autorreflexión son dos rasgos importantes.

El sentido común es decidir qué vale la pena y qué no vale la pena hacerlo. La mayoría de las veces, un desarrollador no está buscando la verdad definitiva, la Solución Perfecta, a menudo no existe una solución perfecta en absoluto. Así que estamos haciendo concesiones todos los días. Pero los costos de las malas compensaciones pueden ser enormes, por lo que califico a cualquier persona que pueda hacer estos dispositivos de manera confiable.

La autorreflexión es parte del mismo proceso realmente, cada vez que estás a punto de comenzar a trabajar en algo, preguntas "¿Por qué hago esto?" Y solo procede si tienes una buena respuesta. (Tenga en cuenta que incluso "Porque el marketing lo dijo" puede ser una buena respuesta, al menos sabe que no debe establecer sus expectativas altas). Puede evitarse un montón de trabajo innecesario al estar constantemente al tanto del propósito de la pieza que usted describe. re trabajando.

Por supuesto, estas son metapapacidades un tanto vagas en comparación con la resolución de problemas o el lenguaje, pero son vitales para evitar que te dejen llevar por ellas.

Actualización: Acabo de pensar en una respuesta algo menos subjetiva a esta pregunta: podemos decir, por ejemplo, las 100 respuestas más populares de StackOverflow y clasificarlas en uno de los tres tipos. No es un método perfecto, pero probablemente lo más cerca que puedas de una respuesta definitiva.

    
respondido por el biziclop 18.01.2011 - 16:46
1

Habilidades de resolución de problemas, pensamiento analítico y paciente

Pero aquí, en Sri Lanka, la mayoría de las industrias de empleo buscan personas con conocimientos de lenguaje, marcos, etc. Entonces, estoy pensando, ¿qué quieren? Realmente confundido.

    
respondido por el Abimaran Kugathasan 18.01.2011 - 09:45
1

Es todo sobre las habilidades de programación y no sobre los lenguajes, por eso es que tomas una decisión consciente antes de sugerirle a alguien un lenguaje de programación, porque quieres darles un buen combo de paradigma donde todos los grandes conceptos brillan en su verdadera forma.

Tomemos Java por ejemplo. Es un gran lenguaje. Es una mierda como primera lengua aunque. Enviará a alguien a una empresa en la que será golpeado con OOP, OOD, encapsulación, atomicidad, bla bla, y de repente el cambio se convierte en primitivos, dejan de hablar sobre los objetos y ahora son variables, valores y tipos. . ¿Eso no desafía o, al menos, rehuye todo lo que has leído hasta ese momento?

Es por eso que inmediatamente sugiero que aprendan dos idiomas desde el principio. Ir a través de la primera y, una vez que te orientas allí, a tiempo, recoger la segunda. El choque de paradigmas revelará qué partes eran conceptos, cuáles eran el olor del lenguaje. Así es como se crean programadores y es exactamente por eso que sugerimos idiomas.

    
respondido por el Filip Dupanović 18.01.2011 - 19:42
0

Capacidad analítica

Un poco de todo es importante, pero lo más importante es la capacidad analítica para resolver problemas.

    
respondido por el Amir Rezaei 18.01.2011 - 08:51
0

Yo diría que esos dos y más como la comprensión de cómo diseñar una biblioteca o al menos una clase adecuada. Alguna comprensión básica del algoritmo (¿conoce la diferencia entre una matriz y una Lista? ¿Usaría alguna vez listVar.ElementAt (offset) cuando listVar tiene unos pocos cientos de miles de elementos?).

También diría que un gurú conocería una cantidad diversa de tecnologías. Si alguien nunca ha usado IPC, o no sabe cómo escribir una clase y volcar / cargar desde y hacia un archivo binario, no lo llamaría un guru. (Pueden hacer trampa y usar serializable en .NET siempre que realmente sepan cómo implementarlo en una clase que escribieron).

No llamaría a alguien un gurú si saben cómo resolver problemas con wazoo y conocen toda la sintaxis de su idioma de elección si creen que necesitan un archivo zip para descomprimir algunos archivos. (pista: popen o Process.Start)

    
respondido por el user2528 18.01.2011 - 10:59
-1

Todo depende de la práctica, de lo que quieras ser. El entorno en el que comenzó su carrera de programación, el tipo de proyectos en los que trabajó y qué tan interesado está en resolver los problemas que surgen ...

    
respondido por el asim 21.06.2011 - 11:04

Lea otras preguntas en las etiquetas