Ayuda para mejorar como programador

Yerkos

Buenas, pues nada el año pasado termine el ciclo de DAW y no aprendí nada la verdad al menos por parte de los profesores que me tocaron y bueno este año me gustaría dedicarlo completamente a estudiar, hasta hacer el próximo año el otro ciclo que se convalida con este.
Tenia pensado un poco de todo pero me gustaría mas centrarme en programar que es lo que me gusta y veo que no tengo el nivel que me gustaría tener.

Que me recomendáis?

beltez

Leer, sacarte cursos y practicar, ser autodidacta.

1
Wei-Yu

Controlar de inglés y saber cómo buscar lo que quieres para mí es muy clave.

Es una tontería, pero en google puedes utilizar algunos argumentos para las búsquedas y no me da la sensación de que sea tan común usarlos como debería serlo. Así alguno rápido tienes - para excluir una palabra de la búsqueda, "" para hacer una búsqueda exacta y site:mediavida.com para buscar sólo en ese sitio. Tienes unas cuantas más.

Te falta definir exactamente lo que quieres. ¿Qué quieres programar? Programar lo hace alguien con macros en excel, gente que mantiene código legacy del pleistoceno, arquitectos de software y mil personas más con distintos trasfondos.

Al margen de eso, en reddit tienes distintos subreddits con bastante info. Yo en tu caso pensaría en coger algo de práctica con algún proyecto personal (mírate el tema de portfolios en github) y empaparte algo de teoría. Tienes mil y un libros, vete trazando un plan según vayas leyendo cosas por ahí.

LOc0

https://www.amazon.es/Patrones-dise%C3%B1o-Erich-Gamma/dp/8478290591

https://www.amazon.es/Cracking-Coding-Interview-Programming-Questions/dp/0984782850/ref=sr_1_cc_1?s=aps&ie=UTF8&qid=1512210694&sr=1-1-catcorr&keywords=cracking+coding+interview

Salu2 ;)

2 respuestas
Lecherito

#4 Hoastias loco sigues por aqui

PD: +1 al cracking the coding interview

1 respuesta
Zerokkk

Te queda mucho camino por delante. Los programadores nunca dejamos de aprender, es algo que tenemos que hacer ya sea de forma continua, a menos que consigas curro en una empresa que tenga unos métodos muy estáticos y poco cambiantes (pero esto a la larga hará daño a tu carrera).

Mi recomendación es que sigas los siguientes pasos:

1 - Comienza aprendiendo bien teoría básica de OOP (Objected-Oriented Programming). Que no te quede duda alguna sobre cómo funciona esto. Prueba a construir pequeñas cositas que aprovechen bien estos principios. Te recomiendo un lenguaje que te guíe solo, como Java o C#, algo muy verbose que te fuerce a seguir ciertos patrones para que no la líes demasiado.

2 - Lee sobre programación SOLID. Es tremendamente importante y es aplicable a cualquier escenario, incluso a lenguajes que no son puramente orientados a objetos. Tiene que quedarte claro el principio de sustitución de Liskov, el principio de responsabilidad única, y el principio de inversión de dependencias, el principio de abierto/cerrado, segregación de interfaces...

3 - Aprender Git. Como si es con una interfaz gráfica o como te dé la gana, pero hazlo. Y también unos puntos básicos de manejo de la consola de Linux. Importante punto.

4 - Fórmate en un stack completo. Especialízate si quieres en backend o frontend, pero creo que todo programador debería saber construir algo por su cuenta. Para simplicidad tienes PHP, para conseguir curro y construir cosas grandes tienes Java o C# con .NET, y quizá en un futuro cuando tengas algo de recorrido, podrías verte el stack de Javascript, con Node en el backend, que funciona bien en muchos casos y es ligero y fácil de construir, pero creo que puede ser problemático para alguien nuevo en programación, meterse de lleno en JS, porque puedes hacer muchas cagadas como no tengas buen conocimiento del lenguaje. No olvides aprender a sacarle partido a SQL y a saber lo básico sobre cómo administrar una BBDD MySQL, que son las más usadas. Y por supuesto, saca unos mínimos en HTML y CSS.

5 - Como consecuencia de aquellos 5 principios SOLID anteriores, y ya con cierto conocimiento de un stack, viene una parte muy importante: tratar de hacer que todo lo que hagas sea loose coupled en lugar de tight coupled: esto significa que cada script/clase que hagas, se encarge de una tarea muy determinada que puedas luego aprovechar desde otro punto distinto de la aplicación. Un ejemplo de tight coupling sería llamar a un script PHP que te mete el JS y a su vez, te transforma el HTML para enviárselo al cliente. Esto funciona, claro que sí, pero cuando quieras hacer una modificación en el futuro, desearás sólo haber usado ese script para enviarte los datos al cliente, y desde ahí tocarlos y meterlos en el DOM a través de JS, o quizá, dos scripts PHP distintos: uno que te trae los datos, y otro que te renderiza la vista. La cosa es separar por funciones y evitar que una sola parte de la app se encargue de 1000 cosas distintas. Es algo que funciona, pero... que es tremendamente poco mantenible.

6 - Aprende alguna tecnología puntera: en este punto, si te sientes bien, ya sí que diría que te podrías meter a aprender bien sobre JS (aprende siempre sobre los estándares ECMAscript más avanzados), y quizá formarte en algún stack (Angular, React o Vue). Mongodb también se está pidiendo mucho y te facilitará mucho la vida en muchas ocasiones.

7 - En este punto ya tendrás un conocimiento bastante majo para construir de todo. Podrás tanto desarrollar buena lógica de negocio en el backend, APIs punteras, frontends bonitos, apps móviles... pero te falta mejorar la calidad de tu código. Seguir explorando buenas prácticas y metodologías es bueno, pero creo que algo que te vendrá de puta madre en este punto, como lo es para todos los programadores, es aprender a escribir código limpio.

8 - Una vez llegado a este punto ya tendrás suficiente recorrido para buscar trabajo, especializarte en una tecnología o rol que te mole, y seguir adelante aprendiendo. Mucha gente aporta mucho a proyectos en Github, o intenta responder preguntas en StackOverflow, y son buenas prácticas para hacer mientras no tienes trabajo, ya que mejorarán tu conocimiento de la materia mientras populas tus perfiles online con datos que validan tus aptitudes.

¡Mucha suerte!

14 3 respuestas
varuk

#4 No conocía el libro ese de Cracking. Tiene buena pinta. Gracias.

LOc0

#5 La verdad es que entre el trabajo, estudios y otros proyectos, poco a poco fui dejando mediavida aunque muchas veces me acuerdo de las horas que he echado en este foro... El otro día aburrido me dio por pasarme y aunque no tenía tiempo para una respuesta como Dios manda (la de #6), sí me acordé de dos libros que me parecían interesantes. En concreto al segundo le dediqué bastante tiempo (aunque ahora no estoy trabajando de programador, pero nunca se sabe...) y me gustó mucho sobre todo por la cantidad de problemas y soluciones que incluye y que toca casi todos los palos.

Salu2 ;)

P

importante, si ves que llegas a los 65 años y aun no te has estudiado todo lo que te ha asignado Zerokkk no te preocupes, segun los ultimos estudios en españa tenemos una probabilidad de vivir hasta los 90 años asi que PUEDES SEGUIR CON EL TEMARIO!!!! no es emocionante???? XDD

PD.- nada de estudiar libros de maricas de 300 paginas, para ser un buen full stack tienes que pillarte manuales de al menos 1200 paginas y saber recitarlos tanto en formato reggeton como sánscrito.....(el latin es opcional si ves que tienes tiempo)

Mi recomendacion, es que a menos que tengas la vida solucionada y quieras programar, a tu rollo, sin presiones, simplemente por hobby, te olvides de la programacion y currar en grandes empresas, al final, no compensa porque la mayoria solo te utilizarán para ganar inmensas fortunas vendiendo cosas que valen una pasta, y las programan pardillos que como mucho cobran 20.000 euros por año.....dedicate a pasarlo bien con tus amigos, disfrutar de cosas que tiene la vida etc, que el dia solo tiene 24 horas y entre dormir, comer y eso, al final realmente tiempo productivo para hacer cosas tienes unas 12 horas y la salud y el tiempo es lo mas valioso que tenemos.....

hazme caso, tengo 45 años, programador en empresas hasta los 37, y si lo llego a saber, hubiese sido futbolista

2 2 respuestas
Zerokkk

#9 Que tú no hayas sabido salir adelante y mejorar tu carrera profesional en distintos horizontes y/o profundidad, no significa que otros no lo hayamos hecho. De las condiciones que comentas no es tan difícil salir, todo se trata de saberse buscar la vida un poco y tener la capacidad de brindar valor a un proyecto. No sé, ahora estoy viviendo como quiero y donde quiero, disfrutando de la vida y de un trabajo espectacular con una empresa de puta madre, y todo gracias a este campo que me ha permitido sacarme mis pelillas. Y como yo somos bastantes en este foro.

#1 ni caso a #9, a menos que de verdad notes que no te gusta / no se te da nada bien incluso a la larga.

1
P

adios billgates!!!! si ves que te sobra algo de esas pelillas que ganas dona un poco al banco de alimentos de este año......yo ya lo he hecho con un carro de comida

1 respuesta
Jawistoff

#11 Para tener 45 años por lo que escribes parece que tengas 15.

2 1 respuesta
MrWiskers

#12 la edad mental no siempre (desgraciadamente) va relacionada con la edad biológica

AiTale

#9 yo tengo 27 años y el 'temario' de zerokkk es bastante básico hoy en día, no sé a qué viene la gilipollez.

P

oish....que chicos mas maduros..... menuda pandilla formais

1 respuesta
Ranthas

Resumen de #6:

  • OOP
  • SOLID
  • Git
  • Conocimientos sobre frameworks (si estas con Java, este punto es obligatorio si o si)
  • Buenas practicas

No es que sea de ayuda, es que sin eso no vas a ninguna parte.

1 respuesta
B

Como parece un hilo serio y puede ayudar a otros, planteo una cuestión.

Cual es el siguiente paso lógico cuando he aprendido programación funcional, OOP (hice un editor de fotos con paint, un juego de tenis table, un juego online de bingo), sockets, thread... No sé, imagino que es lo básico, alguien que pueda recomendarme algún libro o proyecto para seguir?

He programado en C, C#, Xamarin... En febrero doy Java en la uni, pero aprendo más por mi cuenta la verdad

1 respuesta
Jawistoff

#15 Para maduros ya estan tus comentarios de mierda.

1
Yugarek

#6 me gustaría investigar sobre la programación SOLID, me recomiendas algún sitio?

muchas gracias y saludos.

1 respuesta
HeXaN

#17 ¿Conoces los patrones de diseño y sabes usarlos?

1 respuesta
B

#20 No, miraré documentación al respecto, thx

Zerokkk

#16 Sí bueno, pero yo ya llevo visto mucho legacy code y todo lo que me encuentro no sigue ni OOP, ni SOLID ni pollas... la mayoría de la gente tiene conocimiento sobre un framework muy muy específico y normalmente hasta desconocen el lenguaje de por sí, y por supuesto, sólo se centran en frontend o backend. Ni buenas prácticas, ni código limpio, ni algoritmos optimizados, ignoran los patrones de diseño... y ahí los ves, trabajando.

Cuando se manejan bien esos temas y eres fullstack, generalmente las ofertas son muy buenas, creo yo. ¿Qué más añadirías tú, por curiosidad?

#19 Simplemente busca lo que es y trata de aplicarlo cuando programas... no tiene mucho más. Quizá esto te ayude un pelín https://refactoring.guru/

1 respuesta
Ranthas

#22 Pues así nos luce el pelo. No hace falta siquiera ir a legacy code, puedes encontrarte cachos de mierda con el último framework de moda, crees que lo has visto todo hasta que te encuentras consultas SQL a piñón en controllers.

Yo añadiría a todo lo que ya has comentado manejo de SQL, no sólo de gestión de BBDD, y también es interesante conocer un poquito tecnologías del palo Tomcat, JBoss, Docker.

Y no olvidemos a ese gran desconocido, el SO

1 respuesta
Zerokkk

#23 A lo que dije antes añadiría todo eso, aunque creo que lo de SQL, uso básico del SO y saber deployear algo, ya iba implícito en mi mensaje, vaya.

1 comentario moderado
eisenfaust

aprende como funciona la maquina para entender el coste de tus abstracciones

estudia algoritmos y estructuras de datos. no los aprendas de memoria en plan pajeet. centrate en comprenderlos, cuando emplearlos y a pensar en terminos de espacio y complejidad

ademas de lenguajes con salida laboral, dedica tiempo a lenguajes que expandan tu forma de pensar. no te obceques con la sintaxis porque al final es lo menos importante, sino nuevos idioms y maneras de afrontar problemas. intenta luego aplicarlos en tu lenguaje del dia a dia. recomendaciones: scheme, forth, c, prolog, sml, apl... son lenguajes muy simples con conceptos ortogonales

piensa por ti mismo y evita el cargo cult. huye de sectas (los puretas de unix, los nazis de la programacion funcional, los de la inquisicion de GoF/clean code/solid etc) y sobre todo de los gurus, especialmente si no han escrito software destacable (me fio mas de los consejos que puedan dar Niklaus Wirth, Rob Pike, John Carmack, Fabrice Bellard y Matthew Dillon que de charlatanes como Uncle Bob)

lee papers en lugar de blogs. aunque no te enteres de nada al principio

si te interesan los sistemas operativos echa un vistazo a plan9 y oberon

crea tu propio interprete. forth es simple para empezar

no dejes de pensar en terminos de concurrencia y paralelismo. es algo importantisimo hoy dia

5
Yerkos

Perdonad a todos los que habéis respondido, al no poderos contestaros que llevo 1 semana malo y ni me he pasado por el foro.

-Como lenguaje de momento me encanta PHP y Java y no se si debería centrarme en algún otro lenguaje.

-Estoy dándole bastante caña a codewars y aceptaelreto para ir subiendo mi nivel.

  • (#6) Sin duda muchas gracias amigo Zerokkk por tu comentario voy a empezar desde ya a leer e ir aprendiendo.

Y la verdad que tengo muchas ganas de ir aprendiendo e ir mejorando poco a poco, muchas gracias a todos los que habéis contestado un saludo!.

DaRkViRuZ

#1 yo estoy mas o menos como tu, en clases la verdad es que aprendí bastante y actualmente trabajo en una empresa donde hacen paginas web en php, pero me gustaría evolucionar y aprender mas y con el poco tiempo que me queda no se por donde tirar, si miro tutoriales son todos muy básicos y no se por donde moverme, así que ando bastante perdido

JuAn4k4

Las grabaciones de conferencias en youtube no van mal.

borchhhhh

Yo por lo que veo en el día a día lo más importante es especializarse en la parte de back o front porque al final es la especialización lo que se paga

Con respecto a cosas a aprender o dominar :

De la parte de back :

  • Lenguaje POO . Java es el más demandado . Frameworks como Spring e Hibernate tienen mucho uso
  • BBDD. Dominar lenguajes como SQL . Aprender PLSQL no está de más
  • JavaScript , Jquery (básicos). Hoy día jquery ya es básico y se demanda mucho angular.js y node.js

Front :

  • Html5
  • CSS3 ..
  • Less
  • Bootstrap . Responsive Design
1 respuesta