Estoy luchando con la codificación. También tengo dificultades para aprender J2EE en capacitación en una empresa de TI. Vengo de un entorno no CS de un IIT. ¿Debería trabajar más o debería renunciar? ¿Qué trabajos razonables existen que no impliquen codificación?

He pasado varios años de mi vida ayudando a los estudiantes con dificultades con la codificación. Además de la pereza y la estupidez que no parecen aplicarse en su caso, los problemas más frecuentes que he encontrado son:

Intentando escribir código como si estuviera hablando con un humano.
Las computadoras no son inteligentes, no puede ser ambiguo o gramaticalmente incorrecto. Harán exactamente lo que les dices que no hagan más, ni menos. Deja de pensarlo, aprende la sintaxis poco a poco y practica mucho escribiendo mucho código. La comunicación humana es mucho más difícil que escribir código de computadora y puedes hacerlo bien. Puedes escribir inglés inconscientemente porque has tenido mucha práctica. Si te pidiera que escribieras un manual de instrucciones en chino, tendrías muchas dificultades. Es solo práctica, una y otra y otra vez.

Deja de leer libros de programación y conceptos con la esperanza de que de repente lo “entiendas”, no lo harás hasta que te vayas y comiences a escribir mucho código.

No intentes escribir programas de ahorcado o resolver problemas complejos, eso está gravando demasiado tu cerebro si no has memorizado la sintaxis básica. Simplemente configure muchas tareas realmente simples que puede hacer en aproximadamente cinco líneas de código o menos.

Simple como:

Agregue 2 números juntos – muestre el resultado
Cree dos números aleatorios entre 1 y 10, si el primero es la salida más grande 1 si es más pequeña la salida 0 y si es la misma salida 2
¿La cadena roja tiene más letras que la cadena azul?
¿Esta cadena contiene algún número?
¿Esta cadena comienza con una letra mayúscula?
Realice ejercicios simples e inútiles con bucles y matrices, revise el código para verificar que funcione correctamente y luego pase al siguiente problema.

Necesita pasar mucho tiempo escribiendo muchas líneas de código , en lugar de pasar mucho tiempo mirando al espacio pensando en cómo diseñar software.

50 líneas al día esta semana, 100 líneas al día la próxima semana. Mínimo.

Siga escribiendo código inútil durante el tiempo que sea necesario para que la sintaxis se convierta en una segunda naturaleza y solo pase a procesos de pensamiento más complejos cuando ya no tenga que pensar en la sintaxis.

Editar para agregar:
Si tiene dificultades para concentrarse en el lugar correcto para escribir el código, apague el teléfono, cierre todos los programas de software que le dan notificaciones emergentes (distracciones), etc. y pase 10-15 haciendo rompecabezas lógicos para que su mente piense correctamente antes comienzas a tratar de escribir código, debes estar en un estado de ánimo ‘si esto es eso’ y no “¡Dios mío, no he revisado Facebook en 10 minutos!” Estado de animo.

Generador de rompecabezas lógico gratuito aquí: Rompecabezas lógicos de Puzzle Baron

Editar para agregar:
Soy demasiado joven para haber programado una tarjeta perforada, pero estaba escribiendo código antes de que el 8086 fuera una cosa. Algunas de las personas a las que he ayudado a obtener calificaciones de programación comenzaban desde un punto en que cuando coloqué la mano en un mouse y les expliqué cómo funcionaba, les pedí que señalaran algo en la pantalla con el mouse con el que comenzarían a golpear el monitor. El ratón en la mano. (Ajusté mis métodos de enseñanza después de que eso sucedió varias veces) Confía en mí, estás muy por delante de la mayoría de las personas en el mundo porque puedes crear una cuenta en quora y hacer una pregunta. Los pares con los que te estás comparando probablemente tengan una ventaja de 1000 horas de codificación sobre ti, deja de compararte con los demás y concéntrate en poner las horas de codificación para llegar a su nivel. Lo básico primero.

Qué mal hemos estereotipado el término ” codificación “.

Para la mayoría de los principiantes, ‘codificar’ significa convertir algoritmos ingeniosos de alto rendimiento en problemas difíciles, generalmente usando un lenguaje orientado a objetos de alto nivel.

La ingeniería de software es un campo muy vasto. La programación o la codificación de aplicaciones es un subconjunto. Incluso dentro de ese ‘subconjunto’ hay muchas más categorías de ‘codificación’

La codificación puede significar crear interfaces de usuario usando HTML / CSS.

La codificación puede significar hacer interfaces de usuario interactivas usando Javascript y sus muchos marcos.

La codificación puede significar crear visualizaciones de datos de interfaz de usuario utilizando marcos como D3.

La codificación puede significar la creación de API de back-end utilizando cualquiera de los lenguajes del lado del servidor backend como Java, Python, Ruby, etc.

La codificación puede significar crear aplicaciones móviles para Android, iOS, etc.

La codificación puede significar escribir scripts y mantener bases de datos.

Y esto solo está rascando la superficie.

Ahora, llegando a su pregunta de si debe ‘esforzarse más o dejar de codificar’.

No tiene sentido continuar esforzándose más en su configuración actual. No está funcionando para ti. ¿Eso significa que deberías dejar de fumar? NO.

Necesitas cambiar tu enfoque.

¿Cuántos tipos diferentes de codificación has probado?

¿Buscó en HTML / CSS o Javascript o tal vez bases de datos?

¿Has mirado en python o ruby?

¿Está invirtiendo tiempo para aprender programación que no sea la capacitación de su empresa de TI?

J2EE puede ser bastante intimidante para un principiante. No es muy intuitivo y tiene mucho código confuso de placa de caldera. No seas demasiado duro contigo mismo.

En su nivel más básico, la codificación es la resolución de problemas. Si resolver un tipo de problema no encaja bien con usted, intente resolver otro tipo de problema. No renuncies, trabaja de manera más inteligente y sé persistente.

Tl; dr: Haz lo que quieras hacer. No hay respuesta correcta.

Ahora intentemos resolver sus problemas uno por uno.

Primero, no recuerdas la sintaxis. Excelente. Soy un graduado de CS y me encanta la codificación, pero todos los días termino buscando en Google al menos una llamada / sintaxis de función. El historial de mi navegador se parece a una guía completa sobre cómo hacer el índice x. Generalmente termino buscando en Google la misma sintaxis que había buscado en Google 20 minutos antes. Simplemente no vale la pena perder el esfuerzo memorizando la sintaxis. Eventualmente recuerdo la mayor parte de la sintaxis requerida en mi proyecto actual, porque busqué en Google y la escribí enésima vez. Pero el riesgo de introducir un error debido a una sintaxis incorrecta es demasiado alto. Así que siempre verifico dos veces (probablemente hasta la centésima vez que estoy usando la misma maldita llamada al sistema)

En segundo lugar, lleva más tiempo que sus pares comprender los algoritmos o cómo implementarlos. Bueno, si realmente pones tanto amor y esfuerzo como tus compañeros, y aún te lleva mucho más tiempo, probablemente estés desafiando la codificación. Pero si está comparando el tiempo de respuesta de un tipo CS con el suyo, por supuesto, es una comparación sin sentido. Tomé mi primer curso de programación oficial en el noveno estándar, y me encantó desde entonces. Entonces, cuando en segundo año, un maestro de pantalones inteligentes me pidió que imprimiera un triángulo con estrellas como ‘programa difícil’, casi me reí. Terminé antes de que ella volviera. Pero eso fue porque lo había hecho tantas veces. Quiero decir, puedo escribir el maldito código con los ojos cerrados. No significa que soy más inteligente. Solo tengo más experiencia.

Tercero, no te gusta la codificación. Bueno, te sugiero que explores el campo un poco más antes de decidirte. Odiaba la programación cuando comencé con qBASIC. Lo odiaba tanto que me di por vencido. Pero luego comencé Java después de 3 años, y he estado enamorado desde entonces. Por lo tanto, puede ser (¿por qué puede ser? Lo más probable) el trabajo que realiza en la oficina no es interesante. Y de nuevo, porque no es interesante, no estás motivado para aprender. Pero debido a que no está motivado para aprender, no obtendrá un trabajo interesante. ¿Ves cómo funciona eso? Entonces, te sugiero que encuentres algo realmente genial que quieras construir (cualquier cosa, de verdad. ¿Alguna manía que tengas con algún software? Como el mío es que el calendario de Android no suena una alarma cuando llega una notificación de recordatorio) y aprende tú mismo cómo hacerlo. Si eso se siente tedioso, sí, es hora de irse.

Ahora a la pregunta más práctica de lo que puedes hacer. Bueno, no has mencionado tu rama. Si está interesado en su sucursal, puede buscar trabajos allí. Puedes comenzar un negocio. Puedes entrar a enseñar. Puede ingresar a los servicios civiles. Puede ingresar a cualquier trabajo del gobierno. Pero, ¿está preguntando qué puede hacer para que su salario no se vea afectado y sin estudiar más? Lo siento. Nada. Solo la industria de TI mima a los graduados de IIT de nivel de entrada de esa manera.

Lo primero es pensar si es algo que está decidido a hacer, algo que le gustaría probar o algo que no le interesa. Me parece que esto es algo que no te importa particularmente, pero que estás haciendo por la falta de un mejor camino. Si ese es el caso, es posible que desee encontrar una de esas pruebas vocacionales que hace preguntas como “¿Prefiere trabajar en interiores o al aire libre?” y sugiere trabajos potenciales.

Sin embargo, suponiendo que realmente quiera programar, parece que podría estar llegando a esto un poco mal. Estás intentando leer y releer para memorizar la sintaxis. Ese no es el camino a seguir para la mayoría de las personas. En lugar de leer y releer, lea, luego intente. ¿Leíste algo que parece simple? Excelente. Pruébelo y vea si es así. ¿Lees algo y tienes una pregunta sobre si funciona de esta manera o de otra manera? Pruébalo y verás. Aprender a programar funciona en dos direcciones: debe poder juntar piezas pequeñas para obtener resultados más grandes, y debe ser capaz de ver un gran problema y dividirlo en piezas pequeñas. No ignore las pequeñas cosas e intente abordar cosas más grandes.

No te preocupes demasiado por dónde están otras personas. Es posible que ya hayan escrito código o que hayan estado expuestos a más código del que usted tiene.

La programación lleva mucho tiempo para acertar. Si es algo que realmente le interesa, tiene sentido pensar en términos de años en lugar de semanas.

Déjame decirte algo. Hace unos años tuve los mismos pensamientos al mirar a los niños brillantes que escriben programas como un prodigio y tuve dificultades para escribir incluso uno simple. La universidad donde completé mi graduación tenía una clasificación muy baja para la codificación real. El énfasis solía estar en la teoría, asaltarlos y vomitarlos en los exámenes. Por lo tanto, la codificación nunca se tomó en serio en esos años.

Cuando obtuve mi primer trabajo, tenía miedo de escribir código e incluso tenía miedo de hacerlo en la industria del software. Seguí intentándolo pero sobreviví ileso a esa prueba. Pero en el fondo sabía que no estaba aplicando el conocimiento para hacer un mejor código. No era una solución elegante que era solo un producto mecánico para salvar mi día.

Sin embargo, llegué a Estados Unidos después de un par de años para obtener un título en Ciencias de la Computación. Fue difícil y no tener la capacidad de codificar significa incapacidad para obtener un título. Y reconocí que es el momento de ensuciarme las manos.

1. 1er semestre – Tomé temas difíciles pero no involucraron codificación. Me costó trabajar en Criptografía matemática, pero lo acepté. Simplemente salvó uno más de mi semestre. No tenía suficiente confianza para emprender un proyecto de programación único. Estaba buscando un socio del proyecto que pudiera hacer todo el trabajo sucio a instancias de mí

2. Segundo semestre: tomé 2 cursos de programación rigurosos, uno con PHP y otro con C (Sí, C). Al principio tenía miedo, pero tenía otro socio del proyecto que ‘aparentemente’ era bueno programando, así que no tenía nada de qué preocuparme. Pasaron los días y cuando me di cuenta de que tenía que administrar el trabajo en ambos proyectos con fechas límite cercanas, me sumergí en él. Algoritmos aprendidos (algoritmos artificiales y PHP junto con MySQL). Permanecí despierto por muchas noches seguidas. Punteros aprendidos, gestión de memoria, gráficos y manipulaciones vectoriales. Al final del semestre, era muy bueno en ambos lenguajes de programación con excelentes calificaciones y orgulloso de mostrar esos proyectos a mis posibles empleadores.

3. 3er semestre – 3 cursos de programación rigurosos. Después de haber invertido mi verano en aprender algunos lenguajes de programación más y dominarlos con proyectos personales, tuve suficiente confianza para emprender 3 cursos de programación rigurosos Redes de computadoras (programación Hardcore C), minería de datos (R, Matlab, Python y C ++) y sistemas distribuidos (Java e implementación en lenguaje paralelo). Fue un semestre difícil pero fue bastante divertido y ahora tenía suficientes proyectos técnicos para hacer alarde de mi currículum.

Principalmente trabajo en desarrollo web y móvil, proyectos personales y limpieza rutinaria de algunos trabajos antiguos. Nunca creo que haya dominado nada, pero cada día me da un poco de confianza en que mis habilidades de programación están mejorando. No se trata solo de IQ, sino también de la capacidad de aceptar desafíos, perseverancia y trabajo duro.

Cuando me miro a mí mismo hace 8 años. Veo a una persona dependiente de otros para tareas y presentaciones de proyectos, perdida entre la llamada multitud de smarties. Y ahora me siento con la confianza suficiente para dar un paso adelante por mi cuenta, aprender algo nuevo, ir a las comunidades de Stack Overflow y Google+ para hacer preguntas y no tener más miedo de hacer preguntas.

Aquí está la lista de mis respuestas / sugerencias para algunas de sus preguntas:

1. Tienes suficiente coeficiente intelectual para que eso no sea un problema

2. Bueno, nadie puede recordar la sintaxis completa. Por eso tenemos IDEs. Una vez que juegues con ellos durante un tiempo, pueden ayudarte a resumir la sintaxis a lo largo del tiempo.

3. No intentes aprender demasiado J2EE a la vez. Aprenda algo pequeño, practíquelo, repita y luego busque más hasta que se sienta lo suficientemente seguro sobre el tema. Asegúrate de que tu base sea fuerte.

4. Puede ir a la administración como donde ya no tendrá que codificar. Pero creo que mencionaste que no quieres ir a la educación superior. Además, trate de encontrar el trabajo que coincida con su título.
Sin embargo, la mayoría de los campos usan computadoras hoy en día y siento que es realmente difícil encontrar uno a menos que se sienta satisfecho con un sueldo exiguo por el resto de su vida.

En realidad respondiste tu propia pregunta. Dices que nunca te gustó la codificación. Habiendo dicho eso, es fácil entender por qué no lo entiendes. Si no lo disfruta y le resulta difícil, puede que no sea lo suyo. Puede continuar trabajando como administrador de TI o administrar redes que generalmente solo requieren habilidades mínimas de secuencias de comandos si las hay. Probablemente podría enseñar clases sobre cómo usar una PC. Podrías iniciar un negocio de reparación de computadoras. Hay muchas posibilidades Simplemente decida qué es lo que puede hacer que sea agradable y que aún utilice las habilidades que tiene. Cuando estoy contemplando un trabajo o buscando una respuesta, siempre pienso en algo que Joseph Campbell dijo una vez sobre seguir tu dicha …
“Si sigues tu dicha, te pones en una especie de camino que ha estado allí todo el tiempo, esperándote, y la vida que deberías vivir es la que estás viviendo. Sigue tu dicha y no tengas miedo, y las puertas se abrirán donde no sabías que iban a estar ”.

Reprobé las dos primeras clases de programación que tomé, lo que me hizo no querer hablar sobre mi CS GPA, incluso ahora, más de 30 años después.

Como otros han dicho, persevera. Eventualmente se aclarará.

Para cualquier problema de codificación, reduzca a lo más básico, una línea a la vez si es necesario. Eventualmente ganarás fluidez y confianza.

Buena suerte 🙂

(Programador de trabajo desde 1982).

Deberías dejarlo.

Mire, si no le gusta la programación, no tome un trabajo como programador profesional. Veo muchas preguntas como esta en Quora y me sorprende porque los trabajos de software no son especialmente lucrativos. De alguna manera, la idea ha llegado a la cultura de que los trabajos de programación son una fuente de dinero fácil.

Si desea permanecer en la tecnología, considere convertirse en un PM, pero ¿realmente quiere permanecer en la tecnología? En otras palabras, si eres de un “fondo no CS”, ¿de qué tipo de fondo eres? Esta es la pregunta más relevante.

Si lo quieres lo suficiente, vendrá. Pero debes desearlo y no tener estos sentimientos negativos al respecto. Y tienes que aprender haciendo.

Si es razonablemente inteligente, dispuesto a trabajar duro, comprender las matemáticas básicas y comenzar con lo básico: estructuras de datos, cómo se usan, algoritmos, cómo calcula la complejidad, simplifique cómo describiría conceptualmente y resolvería un problema sistemáticamente en un paso paso a paso utilizando unidades predefinidas, te habrás convertido en un programador de nivel de aprendiz. Aprendiz de Jedi es un viaje de toda la vida.

Sé que suena como un largo camino, pero realmente no lo es. Cuando codificas algo, solo estás describiendo algo muy claramente. Solo toma un tiempo acostumbrarse. Dos anécdotas de mi pasado (solo para su información, después de todo esto terminé trabajando en una de las mejores firmas tecnológicas de Estados Unidos en ese momento durante más de una década, y ahora trabajo en el comercio de Finanzas y codificando análisis complejos).

1. Fui fenomenal en la codificación C (aprendí esto de la manera difícil de K&R; solo estudié más a medida que el libro entró en detalles, así que entendí todo bien), pero me costó mucho aprender un lenguaje funcional. Pero muy motivado. La gente de mi clase terminó la primera tarea en menos de un tercio del tiempo que me llevó. Estaba desanimado, pero mi impulso me empujó aún más fuerte. Al final del trimestre, empaté por el primer lugar en esa clase.

2. Cuando comencé la universidad (soy un ingeniero informático) que era la primera vez que tocaba una computadora, había otras personas que habían codificado en la escuela secundaria. Estaba aprendiendo sobre variables, estos tipos estaban escribiendo recursividad. Al final no importa, en un semestre estuvimos a la par. Ah, y en caso de que ayude, yo también vengo de India, y la enseñanza en mi universidad al menos fue terrible, así que tuve que dedicar mucho esfuerzo a aprender cosas por mi cuenta. Esos hábitos todavía pagan grandes dividendos hasta el día de hoy. Aprenda lo que hace que las cosas funcionen, mantenga una mente abierta y trate el aprendizaje como un viaje (ahí es donde está la alegría), no como un destino. Cada desafío te convierte en una mejor persona si no te rindes; es posible que no veas cómo de inmediato, pero lo harás con el tiempo.

Aprenderé hasta el día de mi muerte. Espero poder trabajar de esa manera también. Como dicen “ama lo que haces, y nunca trabajarás un solo día en tu vida”. Las anécdotas anteriores deberían haberme hecho odiar la codificación. En cambio, me encanta el gran desafío, y no puedo verme a mí mismo sin codificar en ningún trabajo que tome.

Su kilometraje puede variar, por supuesto, pero espero que esto ofrezca al menos un poco de aliento. Código en inglés (pseudocódigo) para comenzar si es necesario. Entonces prueba Python. No puedo pensar en una forma más fácil de cumplir con su objetivo (suponiendo que sea algo que realmente desee).

Creo que si no te apasiona la codificación después de mucho tiempo de intentarlo, no hay razón para convertirte en un programador profesional, pero no creo que debas renunciar todavía. Dijiste que entiendes Algoritmos, lo cual es excelente, pero el siguiente paso es entender la lógica y las personas que crean programas. Incluso si nunca escribe una línea de código que entra en un producto si llega lo suficientemente lejos como para escribir cualquiera, comprenderá la forma en que nuestra tecnología se ha creado mejor y podrá participar más plenamente en una sociedad tecnológica. La única historia que tengo es la mía. Yo era una persona de música y artes que terminó como físico aplicado. Ahora soy CEO de una compañía de científicos e ingenieros informáticos en su mayoría. No escribo ningún código de producción, pero practico constantemente porque necesito tener una idea de lo que es posible para la empresa y los plazos involucrados. Por lo tanto, ser un líder implica comprender la programación a un nivel bastante profundo, lo que significa escribir un pequeño código usted mismo.

Los programadores son embajadores. Traducimos ideas a código.

¿La única forma de saber si hiciste un buen trabajo? Cuando lees el código y se traduce en la idea de una persona.

Pero para responder a su pregunta original … Estoy seguro de que ha heredado un interés en la tecnología. Aprenda a administrar servidores o redes o bases de datos o codificadores o startups o lo que sea. La experiencia que obtuviste de esa época codificando permanecerá contigo en cualquier camino que tomes, amigo.

Es posible que no obtenga codificación porque no está trabajando duro.
Puede que solo esté pensando en codificar todo el día y en lo difícil que es.
Ve a buscar un libro o cualquier otro recurso y dedica tu tiempo a ello.
Programación en una de las cosas que todos deberían saber. ¡Es un gran arte, es interesante y puede crear maravillas!

La inteligencia no es universal. Tengo dominio de la codificación, pero no entiendo la química: sucede. No entre en esa zona de trabajo, porque de todos modos no es probable que sobresalga en ella …

Dijiste que no te gusta la codificación, primero quítate esa cosa de tu cerebro. comience a practicar la codificación, debe recordar la sintaxis practicando. realmente no puede recordar la sintaxis, haga una nota y anótela, si no puede obtener la sintaxis, abra esa nota y verifique si es nueva en google y luego agréguela a la nota. Esta es una manera simple y lógica.

y quiero decir una cosa que no te interesa en absoluto, dejar de programar. quiero realmente quieres hacer. ama tu profesión si pudieras sentirte difícil, trata de aprender con la ayuda de personas mayores o sigue blogs y sitios relevantes.

Da un largo paseo y reflexiona sobre esto.

Quizás no trabajaste lo suficiente.

Tal vez la codificación no es para ti.

Quizás tengas otra fuerza o talento. Aprovecha esa fuente de fuerza. Está bien renunciar. O usemos el cliché, está bien “pivotar”. Encuentre maneras de fusionar su buen coeficiente intelectual y algo de experiencia en la codificación con su otro talento que es únicamente usted.

Jack Ma, el fundador de Alibaba, no sabía cómo codificar y aún no lo sabe. Pero tiene la habilidad de liderazgo y la visión que le dio un fuerte sentido de misión y dirección a su empresa. Esa es su fuerza. Si Jack se esforzara por aprender a codificar, hoy no habría Alibaba.

Si renuncia, experimentaría la misma sensación que si trabajara duro, pero fallara.
Así que solo trabaja duro, tal vez lo consigas.
Pero si realmente trabajas duro y nunca te rindes, lo lograrás, tarde o temprano.

Depende mucho de dónde estés. Si vives en un país desarrollado, omítelo y haz otra cosa. Hay un montón de profesiones diferentes que pagan de manera similar a un codificador, por lo que no tiene sentido ser un mal codificador y / o hacer un trabajo de codificación que odias.

Si vienes de un país pobre, entonces la codificación es el * único * trabajo bien remunerado, porque paga dinero estadounidense. Entonces quédese con esto: lamentablemente, en muchos países tiene sentido ser incluso un programador muy malo, solo porque todas las alternativas son peores, si puede pasar por las entrevistas. Algunas compañías incluso contratan codificadores falsos que pretenden codificar, solo para ocupar puestos / pasar horas con los clientes (y en muchos casos, estos codificadores falsos ni siquiera saben que son falsos, para mantener la moral alta, piensan que son reales, simplemente nadie se molesta con la calidad de su salida, el cliente nunca lo ve). Obviamente, ese trabajo paga muy poco y, sin embargo, está a años luz de cualquier otra profesión si estás en el tercer mundo.

Intenta aprender Python. La retroalimentación inmediata, el poder y el diseño simple ayudarán. Algunos tedios de otros idiomas se pueden automatizar una vez que eres lo suficientemente bueno.

Piense de manera inteligente, no necesita trabajar tanto con la codificación (al menos no para empezar).
Pero tiene que elegir un interés, o algo que lo motive, de lo contrario no podrá hacerlo.

trabajo duro