Hola,
En primer lugar, felicidades por tratar de pensar en un crecimiento incremental por ti mismo. Abordaremos esta cuestión con un punto de vista diferente. Lo que haré es plantear algunas preguntas y posibles respuestas que pueden llevarlo a encontrar las direcciones adecuadas que sean adecuadas para usted. Tengo mi mayor experiencia de desarrollo en PHP, por lo que mis recursos estarían acostumbrados a PHP. Pero trataré de enumerar los recursos generales posibles.
Si quieres crecer técnicamente, pregúntate a ti mismo después de las preguntas:
1. ¿Puedo diseñar aplicaciones orientadas a objetos adecuadas?
– OOD es el básico para el diseño de software. No solo lo ayudará a diseñar aplicaciones adecuadas, sino que también lo ayudará a mejorar su conocimiento y enfoque conceptual. Pero, analice usted mismo, si ha hecho aplicaciones basadas en el diseño adecuado. De lo contrario, comprenda la arquitectura subyacente de los marcos populares como Laravel, Symfony, etc. Lea Design Patterns – Gang Of Four, un libro definitivo que lo guiará en el camino de la comprensión de Design Patterns. Lee, aplica y practica OOD. Te ayudará a tener una experiencia. A veces, tienes ganas de renunciar y simplemente dejarlo todo. Pero, quédate e invierte tiempo. Con el tiempo, saldrá un hombre mejor. Comprender los principios de SOLID e intentar aplicarlos. Una vez que domine OOD, puede cambiar a cualquier lenguaje orientado a objetos, ya que los conceptos seguirán siendo los mismos; solo la sintaxis cambiará. Así que, hagas lo que hagas, maestro OOD. Algunos recursos que me ayudaron.
– El OOP en PHP
– Conceptos orientados a objetos.
– Convertirse en un profesional de PHP: el eslabón perdido
Además, no tenga miedo de leer un montón de código. Leer el código de otras personas puede enseñarle mucho sobre cómo hacer las cosas bien en la práctica. Tal vez uno de los paquetes en la Liga PHP? La Liga de Paquetes Extraordinarios
Puedo recomendar algunos libros generales como “Head First Design Patterns” o “Patterns of Enterprise Application Architecture”. La “refactorización” de Fowler también es una gran lectura. Desearía haber leído el Programador Pragmático al principio de mi carrera, es otro libro realmente bueno. Más abajo en el camino, Domain Driven Design es un clásico por una razón. Desearía tener un mejor consejo aquí, pero en última instancia, la experiencia es el mejor maestro. Leer el código fuente es otra gran técnica.
2. ¿Entiendo los algoritmos y trato de hacer uno para superar los problemas lógicos diarios en el desarrollo?
Esta es la segunda parte más importante para el desarrollo técnico. Créame, se siente fuera de mundo cuando genera una lógica para resolver algún problema y funciona de manera eficiente. Pero, hay mucho trabajo duro detrás de esto. Hay una creencia primaria de que la lógica está en mente y proviene del don del intelecto. Lo creo, pero con el enfoque adecuado y el trabajo duro podemos mejorarlo. Estudia tantos algoritmos como puedas. Entonces comience a resolver problemas relacionados con ellos en HackerRank, HackerEarth | Ayudamos a los desarrolladores a encontrar excelentes trabajos, USA Computing Olympiad, topcoder.
El enfoque general que prefiero al estudiar algoritmos es –
a. Comprender el enunciado del problema (el más importante)
segundo. Intenta crear un algoritmo yourslef para resolver la declaración del problema
do. Ahora, lee la solución y entiende dónde te equivocaste.
re. Analice su enfoque y comprenda los errores en el enfoque que utiliza para la lógica.
mi. Repite los pasos anteriores para siempre 😛
Los algoritmos son divertidos de aprender y le dan a nuestro cerebro mucho ejercicio. Ellos forman la base de tu lógica. No te desmotive. Solo intenta, intenta y trata. Te tomarás tu tiempo. Pero, si practicas, trata de analizar y vencerás 🙂
3. ¿Estoy tratando de aprender todos los idiomas?
No te enfocas en un lenguaje, te enfocas en el contexto. Cada idioma está, por defecto, entre los mejores en un contexto dado.
Por ejemplo:
- Estás interesado en el procesamiento de datos. Desea encontrar patrones, analizar números y descubrir cosas que otras personas se perdieron al comparar cantidades de datos absolutamente brutales. Se centrará en uno de los idiomas que fue diseñado específicamente para eso, algo como The R Project for Statistical Computing o Scala.
- Quieres construir sitios web, de arriba a abajo. Desea saber qué se necesita para poner en marcha un proyecto y quiere poder hacerlo todo usted mismo. Te centrarás en algo como PHP, JavaScript, HTML, CSS.
- Desea ser una jota de todos los oficios, y necesita un idioma que no solo pueda aplicar a cada contexto, sino que también puede hacerlo fácilmente e incluso transferir el conocimiento a otros sin mucha dificultad: elegirá Python o Dart.
- Quieres crear imágenes maravillosas con código. Estás interesado en los fractales, 3D, ecualizadores, espectáculos de luz. Irás a Procesamiento, o tal vez juegues con JavaScript y WebGL, quizás con algo sofisticado como ThreeJS.
- Desea crear juegos basados en navegador: utilizará ThreeJS, HTML5, CSS y / o Dart.
- Desea crear juegos de computadora de escritorio instalables. Usarás C ++ o Java.
- Quieres crear aplicaciones móviles. Utilizará HTML5 + CSS + JavaScript para todas las plataformas, o desarrollará aplicaciones nativas en Objective C para dispositivos Apple y Java para Android.
Y así sucesivamente … hay más contextos, pero entiendes lo esencial. En mi caso, me gusta poder transmitir una idea RÁPIDA. Me gusta el hecho de que puedo pasar de cero a un producto completo y probado en una semana. Es por eso que opté por los lenguajes web: HTML, CSS, JS, PHP, Dart. Su caso puede diferir.
No trates de atraparlos a todos: ser un maestro de pocos es mejor que ser una jota de todos los oficios. Una vez que encuentre su contexto, encontrará su idioma.
4. ¿Debo encontrar un mentor? POR QUÉ ?
SÍ.
Porque, un mentor puede guiarte adecuadamente al núcleo. Un mentor te dará un camino para recorrer y siempre te guiará. Obtendrá una dirección sobre qué evitar y por qué. Facilitará su proceso de aprendizaje y también lo sujetará con su experiencia. Nunca subestimes el poder de un compañero.
5. ¿Disfrutas?
Trate de divertirse. Pasé por una fase en la que traté de aprender todo lo que pude lo más rápido que pude y fue productivo, pero también me estresó mucho, así que recomendaría un poco de equilibrio. Si no sonríes cuando lees un libro o un código por la noche, quizás intentes un enfoque diferente. 🙂
6. ¿Me conecto con mis compañeros u otros profesionales de todo el mundo?
Este es el aspecto más descuidado pero importante. Conecta con tus compañeros desarrolladores. Comparte tu trabajo, discute enfoques y asiste a conferencias a nivel global. Esto no solo lo ayudará a conectarse con otros pares, sino que también lo ayudará a comprender los enfoques seguidos en varios lugares. Y descanse, todo es experimentación, comprenda todos los enfoques y elija lo que más le convenga. Contribuya al código abierto, ya que lo ayudará a aprender a contribuir a la comunidad de desarrolladores.
Algunos otros consejos que creo que deberían ser considerados –
1. No te estreses en el aprendizaje. Comprende la razón por la que estás haciendo algo, analiza y luego actúa.
2. Siempre recuerda, “El propósito de la vida es una vida de propósito”
3. Conceptos, desarrollo y lógica es un arte. Si no disfrutas de la creatividad mientras aprendes o implementas, entonces ¿por qué lo haces? Solo deja que el momento venga y disfrútalo.
4. Conectar con otros compañeros en el mundo. Discutir ideas. Comparte problemas y reúnete para disfrutar. Como dijo Chetan Bhagat, “No sea serio. Sea sincero”
Espero que esto ayude y les deseo la mejor de las suertes en el futuro. Puede ser una carrera difícil pero también genial. 🙂