JavaScript ha sido el lenguaje que más tiempo he dedicado y con el que me siento más cómodo. Inicié con jQuery por su interacción con el usuario. JavaScript es el lenguaje base que me ha permitido comprender frameworks como: NextJS, ReactJS, Express ect..
Luego está PHP ya que por años de experiencia lo he utilizado iniciando con Joomla, Wordpress y Symfony.
Día a día me mantengo siguiendo canales de programación de los cuales me nutro con los avances en las tecnologías que me compete, ya sean locales o externos son una buena fuente de información, además de webs sobre programación principalmente Medium, Y para mantener mi mi creatividad, ejercito mi lógica resolviendo problemas en codewars el cual me sirve para ver como otros programadores piensan y resuelven el mismo problema.
Programar en pair programing es algo que me gusta, puedes tanto ayudar como retroalimentarte con un compañero resultando en un avance a la par, todo proyecto tiene su propia cualidad en donde tal vez puedes desarrollar dentro de un equipo pero tambien puede tocar desarrollar solo o ser el responsable directo del proyecto.
En ambos casos no programar en equipo requiere menos presion y mayor tiempo para concentrarte en la tarea asignada en tu spring, programar solo requiere de mayor conocimieto global de todo el proyecto, esto no representa un inconveniente ya que aceptar retos para un programador es lo que mueve la maquinaria de adquir nuevos conocimientos y de igual manera demostrar rendimiento para la empresa, esto obliga a coordinar mejor el tiempo y asumir mayores responsabilidades.
Tras leer la documentación de como implementar buenas prácticas, existen conceptos que implemento en mi dia a dia.
1. Elegir un nombre para la función que define exactamente que esta ejecutando, esto provoca que al leer el nombre de la funcion la misma arroja su concepto en ves de leer lo que existe dentro para comprender que esta haciendo.
2. En el ámbito de seguridad implementar .env o el recurso que ocultan información sensible, este concepto es aplicado en sentido general incluyendo url, nombre de base de datos ect...
3. La indexación para poder detectar de manera fácil donde cerrar los tag para conocer su limite, en conjunto con una buena tabulación hacen que el código sea mas legible en sentido general.
4. Definir bien dentro de las clases que debe ser piblic o private asi como una buena asignacion de nombre a las variables y constantes que deban ser asequible desde fuera de la clase.
5. Buena organización de las carpetas del proyecto, colocar nombres descriptivos asi como de encapsular las carpetas que comparten un rol en comun ej: Login > users; Loguin > LogOut; Loguin > Forgos Pw; en donde
la carpeta login debe contener los demás recursos que tienen que ver con su renglón.
6. Buscar y ser critico para aplicar re-factorización para mejorar código existente.
Aplicar buenas practicas es algo que en sentido general aplica en todo el proceso de programación. Al hacer un commit se deben aplicar buenas practicas como definir de manera correcta en la descripción que cambios has realizado, colocar el nombre del branch relativo al numero de spring agregar informacion sobre que has hecho ej: un cambio drástico, una mejora una reparacion de un bug. Con esto se evidencia que aplicar buenas practicas es algo que debe ser aplicado en sentido general.
Ser programador requiere tener en pleno estado de ánimo antes de empezar, la pandemia mostró una nueva realidad que muchos no tomamos en cuenta, levantarse 2 horas antes para organizar el tiempo y poder coordinar cosas como llevar los chicos al cole, tener preparado el almuerzo, llegar a tiempo a tomar el transporte, cuidar tus pertenencias para que roben o encontrar parquing, gastos en vestimenta, costo del transporte, requiere en mi caso de 3 a 4 a tres horas al día o sea gastas un 40% extra de la jornada laboral solo a transportarte a la oficina y aunque ofrescan cosas como agua o algun café no es lo mismo que la comodidad de estar en tu própio espacio.
Imaginad que es un día en donde tienes ya el extres del llegar a la casa luego de no haber podido resolver ese bug que se resiste solo cargan de peso extra el día a día de un programador. Claro lo óptimo sería vivir a poca distancia del puesto de trabajo pero en muy pocas ocasiones esto es algo posible.
Trabajar desde casa permite descansar hasta 1,5 horas mas antes de iniciar la jornaja, el espacio de trabajo personal es mas conveniente ya que lo puedes controlar en tanto a la iluminación, aparatos electrónicos que prefieras solo por mencionar algunas cosas, el estado de animo es mejor, al final cuando programas estas tú y tu creatividad para enfrentar un problema convirtiéndose en una tarea en donde solo necesitas enfocarte para dar un buen resultado. Por esta razon es casi imprecindible o muy conveniente el teletrabajo.
Puedo majejar eficazmente Photoshop, Ilustrator, corel, Indesign. Cuento con más de 5 años de experiencia en diseño digital elaborando desde piezas para prensa, hasta artes para produción publicitaria como banderolas, vallas, bajantes.
Además del diseño pude ejercer como productor siendo el manejo de maquinarias de impresión de pequeño y gran formato instalaciones y más.
He desempeñado mas un rol de fullStack a lo largo de mis experiencias, he trabajado con proyectos en donde es puro php, Node-Express con GraphQl, base de datos MySQL, y mongoDB, he diseñado base de datos con relaciones de datos complejas, pero al final, tocar directamente el dom y manipularlo, construir la interfax de usuario, van más con el perfil que he construido.
FullStack o Front son los roles que me gustaría seguir desempeñando, en tanto a base de datos me inclino más por las no relacionales como webPack o mongoDB.
Tabajar con poca coordinación es lo peor para una programador, crear un producto con calidad no importa sea un landing page o una webApp requiere un timeline que se debe respetar, pensar en como agrupar los archivos, aplicar buenas practicas muchas veces es poco importante ante la prisa de entregar una web cuanto antes.
Entrar en este ciclo en donde lo más importante es la cantidad y no la calidad hace retroceder todo lo aprendido, no realizar una planificación real del timing requerido para entregar un producto termina afectando tanto al programador como el producto en si.
Trabajar en un ambiente tóxico, tal vez con personas que no separan el rol profesional y en vez poner asuntos personales es la peor parte cuando debes lidiar con los retos de ser programador.
La peor parte de ser programador se puede evitar teniendo un buen ambiente laboral, una buena coordinación del tiempos asignados basado en medidas reales a las tareas, no caer en la monotonia, son estas la base para no enfrentar la peor cara del se programador.
Puedo leer en un 85% todo texto en ingles, puedo ver y entender canales de enseñanza de ingles para niveles c1 casi a la perfección. Siendo una persona que ha aprendido de manera independiente escuchar acentos o personas que pueden usar un lenguaje en donde su speed es algo rapido (siendo esto normal), que implementa fases, slang, es una tarea pendiente. Puedo entender y mantener una plática si la persona habla de manera pausada y con palabras normales.
Es obio que, si el fin es realizar una comunicación efectiva lo importante es lograr interactuar. Entender e implementar fraseover, slang, requiere por ejemplo estar un ambiente de nativos hablantes y no he tenido esta experiencia.
He trabajado en equipos pluriculturales en donde he podido ejercer mi labor sin complicaciones, de momento invierto tiempo en continuar aprendiendo nuevas frases y fomas particulares de expreciones de nativos hablantes para incrementar mis conocimientos.
Hantes de hablar de poner en práctica TDD es pertinente aclarar que para llevar a cabo esta metodología, el programador debe tener pleno conocimiento en sentido general de los elementos que serán testeados así como de los posibles resultados.
Ponemos por ejemplo, un nuevo mienbro del equipo del cual le han informado de manera global el proyecto y se le pide que inicie aplicando TDD. En el mismo momento en que tenga alguna duda sobre los elementos el TDD no tendrá un buen resultado, por lo tanto, si tengo pleno conocimiento de como funcionan los estados, las llamadas, datos, puedo saber o suponer el resultado que tendré para ir aprobando los test.
En resumen opino que, TDD es efectivo siempre que el programador tenga pleno conocimiento del resultado que supone esperar.
En un 70% he cambiado de empleo por razones de cresimiento, cuando hablo de cresimiento no me refiero a lo económico, a lo largo de mi carrera he ido incrementando mis conocimietos en la busqueda de ser mejor profesional y a la par con las tecnologias.
Muchas veces caes en la monotonia en donde tal vez quieres implementar y poner en marcha estos conocimientos que se van añadiendo entonces tienes todo el potencial para implemtar mejoras, arquitectura y más pero la empresa no desea nuevas complicaciones o tal vez no puede invertir lo necesario para implementar y sacar provecho a la capacidad adquirida y es en donde puedes necesitar cambiar y encontrar estos nuevos retos que elevan tu carrera como profesional.
El resto han sido empresas tipo StartUps, Contrato por obras o no encaja la modalidad de organización, aclarando que en todas han sido bien valorados mis conocimientos.
Lo principal es el entorno laboral. A lo largo de mis experiencias he deducido que no importa el tipo de empresa, ya sea grande o pequeña lo más importante por encima hasta de los beneficios o la paga es poder trabajar bajo un ambiente laboral sano, sin esto no existe posibilidad de permanencia o estabiliad.