¿Por qué los programadores son tímidos y vagos cuando les pides consejos de programación para que puedas tener éxito?

Hablando por mí mismo, generalmente se trata de cuatro cosas: malas preguntas, respuestas complejas, la importancia de aprender a resolver las cosas por ti mismo y tiempo limitado.

Primero, malas preguntas. Cuando alguien me pregunta ‘¿qué lenguaje de programación es mejor?’ o ‘¿Cómo me convierto en un desarrollador increíble sin experiencia?’ o ‘¿cómo puedo crear un sitio web como (inserte el nombre de una aplicación compleja desarrollada por un equipo de docenas durante años)?’ están haciendo una pregunta que no puedo responder, porque la pregunta en sí está mal pensada. El autor de la pregunta quiere una respuesta a una pregunta que no tiene sentido (diferentes idiomas hacen cosas diferentes y, por lo tanto, lo mejor no es una idea útil), o quiere saber cómo hacer algo que es imposible (no se vuelve bueno en nada. de la noche a la mañana, y una persona, de manera realista, no podía construir ni siquiera Quora en una cantidad de tiempo realista). La mayoría de las preguntas que los aspirantes a desarrolladores hacen están en esta categoría. No tienen sentido, y todo lo que podemos decir es que ‘la programación no funciona así’.

En términos más generales, esto refleja un profundo malentendido entre los no desarrolladores y los nuevos desarrolladores acerca de qué se trata la programación. Los no programadores tienen la idea de que la programación consiste principalmente en escribir algoritmos muy complejos. Los programadores reales le dirán que la programación se basa principalmente en equipos de personas que realizan sus tareas de manera confiable y puntual, a menudo utilizando componentes simples que deben ensamblarse correctamente en un producto funcional. He usado esto como una prueba de fuego antes en las entrevistas. Si le pido a un desarrollador que ordene una serie de números, y creen que estoy pidiendo un algoritmo de ordenación manual, tienen una idea equivocada sobre su trabajo. La única respuesta que necesita es array.sort (), para que pueda pasar a hacer dinero a la empresa.

Segundo, respuestas complejas. Si alguien me pregunta “cómo me convierto en un buen desarrollador”, la respuesta es enorme y multifacética. Necesito hablar sobre habilidades interpersonales, humildad, aprendizaje, trabajo en equipo, análisis de problemas, estimación, responsabilidad, pruebas, higiene de códigos, depuración, refactorización, pruebas de pirámides, rendimiento, seguridad, modelado de datos, UX y una docena de otros temas. Hay enormes libros que responden a esa pregunta desde una variedad de ángulos. Si un aspirante a desarrollador me pregunta “cómo puedo modelar mejor estos datos en una base de datos relacional” o “por qué no debería hacer una asignación dentro de un condicional”, puedo explicarlo rápidamente. Pero ‘¿cómo me convierto en un buen programador?’ Es una pregunta tan grande que solo puede responderse mediante resúmenes trillados o tomos pesados.

Tercero, tienes que aprenderlo tú mismo. Esto es más cierto para los problemas técnicos que para los más interpersonales. Una gran parte de la programación es descubrir por qué diablos algo está roto. No puedes practicar esta habilidad si alguien está ahí para dar una respuesta. Es por eso que por lo general no doy a los desarrolladores junior soluciones concretas a los problemas hasta que hayan pasado por lo menos algún tiempo resolviéndolos ellos mismos. Necesitan practicar resolviendo problemas para mejorar.

Finalmente, tiempo limitado. Si me pide que responda una pregunta realmente compleja, es probable que no tenga tiempo para dar una buena respuesta, por lo que preferiría no responder en absoluto. Mimd, si estuvieras en mi equipo o un amigo cercano, y yo tenía un interés en tu crecimiento, me tomaría el tiempo. Pero es difícil justificar tomar horas para un extraño.

Depende de la pregunta. Por lo general, la pregunta es tan general que la única respuesta es vaga porque la pregunta original también es vaga. Mi favorito, que sigue siendo preguntado una y otra vez, es: ¿Qué lenguaje de programación es mejor para crear un sitio web como Facebook?

Esta pregunta en sí misma es tímida y vaga al suponer que una tecnología o lenguaje informático único es la base para crear con éxito un sitio web de redes sociales. La realidad es que un equipo de desarrolladores que aprovechan muchas tecnologías e idiomas diferentes crearon Facebook.

Ahora, si alguien pregunta: estoy aprendiendo PHP, ¿qué es un buen marco para usar para un servicio web basado en REST?

Esto es lo suficientemente específico para que yo lo conteste porque sé que la persona está familiarizada con PHP y está buscando un marco con un propósito específico en mente. Por cierto mi respuesta es el Slim Framework.

No creo que haya visto ningún consejo sobre Quora que pueda considerar ‘tímido’, sino todo lo contrario, pero entiendo cómo algunos de ellos podrían considerarse ‘vagos’.

Mi consejo es muy a menudo, una vez que tenga la cabeza en torno a lo básico, entonces debería estar trabajando en proyectos .

Supongo que eso es vago, quiero decir, ¿cuáles son los “conceptos básicos”, qué nivel de proyecto?

Pero, para usar una analogía, cuando se le enseña a un niño a andar en bicicleta hasta el final del camino, sería mucho más fácil sacar al niño de la bicicleta y montarlo usted mismo, pero eso es derrotar el punto del ejercicio, el punto Es que el niño se enseña a andar en bicicleta. Al caerse y fallar, el niño aprende.

Tantos programadores principiantes están en la misma posición, quieren que se les alimente con la información, esto es de poca utilidad a largo plazo, es necesario aprender a aprender .

Aprender a aprender es casi imposible de enseñar, por lo que el consejo puede parecer vago, pero las personas solo están tratando de ayudar.

Es más fácil simplemente aprender de forma remota la sintaxis y los comandos, pero no te ayudará a tener éxito, tienes que aprender a resolver cosas por ti mismo.

¿Tímido? Oh no….

¿Vago? Quizás….

¿Éxito? Caray! Eso es lo suficientemente difícil para mí obtenerlo.

¡Escúchame ahora! ¡Este es el secreto del éxito !

Aprenda cómo desarmar sus problemas, averigüe qué está pasando, piense de manera lógica, defina un plan para corregir el problema, luego arréglese las mangas y ¡hágalo!

Aprende a investigar en internet. Lea la documentación. Edúquese sobre el material de la asignatura.

Y sobre todo, no dejes de trabajar en ello.

Recuerde, las preguntas que hacen las opiniones a las personas (cuál es la mejor _____) son solo una pérdida de tiempo. Sé tan específico como puedas, por favor.

Esta pregunta es vaga, carece de definición y contexto, como una especificación de trabajo mal escrita. Hay muchas formas de abordar la respuesta a esta pregunta, pero al igual que cualquier programador que valga la pena, es una cuestión de trabajo.

Desde el punto de vista del desarrollo profesional, digamos que un día usted decide construir una montaña a mano. Pasas cinco años, quizás un poco menos, quizás un poco más, asistiendo a una universidad para que puedas construir los cimientos de tu montaña. Los cimientos son bastante grandes, algunos lados de la montaña incluso están tomando forma, pero la montaña aún no está completa.

Luego pasas varios años en la industria construyendo tu montaña hasta que un día puedes pararte en la cima de tu montaña y puedes ver por millas a la redonda, la vista es estupenda, pero siempre la estás agregando, nunca terminas. .

Algunos días, te encuentras cuestionando tu cordura, ¡construir montañas a mano es tan difícil! ¿Por qué pasaste una década o más construyendo esta? Recuerda que cuando era niño construía montañas modelo más pequeñas en el arenero, y que siempre ha querido esta montaña, por lo que se calma y vuelve al trabajo.

Un día, alguien viene con una base mal dispuesta a una montaña. Te piden ayuda con eso. Comienzas a preguntarte por qué quieren una montaña, ya que, desde tu punto de vista, puedes ver claramente que su montaña es defectuosa, o tal vez es por falta de experiencia. Cualquiera sea la razón, no está seguro de si tendrán éxito, y las montañas requieren mucho trabajo para construir, no querrá pasar un par de años con ellos para arreglar la base y se dan cuenta de que realmente no quieren el montaña después de todo ¿Por qué no pueden hacerlo ellos mismos? Como hiciste ¿Realmente quieren una montaña o no? Parece que solo quieren la vista sin poner el trabajo duro. ¿Por qué no te piden que tomes una foto de tu montaña y la pases? Sus tarifas son razonables.

A veces es por eso que no me gusta ayudar a otros desarrolladores.

Es cierto que esto no sucede muy a menudo, los buenos desarrolladores que conozco no piden ayuda, ellos mismos lo resuelven, eso es lo que los hace buenos desarrolladores.

Posiblemente no sea de mucha ayuda aquí, pero me gusta la analogía de la montaña. 🙂

Porque el 90% del trabajo de un programador, es buscar soluciones. Ayudarte a empezar es inútil. Esto no suena bien. Probemos otra forma de decirlo:

Si eres apto para la tarea, te gusta explorar y aprender por tu cuenta. Puede hacer preguntas sobre preguntas muy específicas cuando no haya más formas de llegar a una solución, pero si hace las preguntas básicas, no será apto para el largo plazo y, de lo contrario, perderá tiempo. Todavía no suena bien, pero así es como es. Tienes que lidiar con problemas, rechazos, plazos y la mayoría de las veces nadie está en libertad de ayudarte.

Solo porque lo hago parecer fácil, no significa que sea fácil

Crear software es mucho más complejo de lo que puede explicar en poco tiempo.

A menos que su pregunta sea muy específica, puede ser muy difícil responderla con precisión.