Cómo crecer como programador en una pequeña empresa [cerrado]

Busco oportunidades de crecimiento. Mi pasión se ha convertido en programar y construir soluciones para resolver problemas de negocios. Mi empleador actual, en el que he estado empleado durante 7 años, es una pequeña empresa con 15 empleados. Nuestro negocio principal es brindar capacitación y consultoría B2B. Este es el único puesto que he tenido como programador.

Me considero un desarrollador de pila completa. En los últimos 7 años, mis habilidades de programación han evolucionado desde saber cómo se ve HTML hasta desarrollar API RESTfull y consumir con Jquery (como ejemplo).

Soy el único programador en la empresa. Mi rol, VP Technical Architect, me ha permitido ser mi propio jefe hasta cierto punto. Elijo los proyectos, la tecnología a usar, la relevancia de los problemas, etc. Nuestra empresa ha tomado la postura de que continuaremos evolucionando nuestros servicios técnicos y ampliando los servicios ofrecidos a través del tablero que he desarrollado.

Ahora mi dilema; Estoy satisfecho con mi posición. Me encanta tener la libertad de tomar decisiones y tomar las decisiones , pero siento que estoy perdiendo la oportunidad que me brinda trabajar para empresas más grandes. Siendo el único desarrollador, no tengo a nadie de quien aprender. Solo me he centrado en aplicaciones web/soluciones de bases de datos, y nunca he trabajado en aplicaciones móviles o aplicaciones de escritorio. Cuando miro muchas de las preguntas de la entrevista de programación, estoy perdido. Por otro lado, si me dan un desafío para resolver en mi lugar de trabajo, siempre he sido capaz de brindar una solución hasta ahora.

Mi pregunta de hoy es simplemente cuál es la mejor manera de asegurarme de que yo, como desarrollador empleable, sigo aprendiendo. cuando digo aprender, quiero aprender habilidades empleables y la forma correcta de resolver problemas.

"Siento que me estoy perdiendo la oportunidad que se brinda al trabajar para empresas más grandes" : ¿qué tipo de oportunidades espera encontrar allí que no encontraría en su empresa? Por lo general, las empresas más grandes significan que "usted es otro programador más", mientras que aquí se encuentra en una posición única y con varias cosas que a los desarrolladores de "empresas más grandes" les encantaría tener. Aprender solo es más significativo y duradero que recibir todo el conocimiento masticado.
@DarkCygnus, tiendo a estar en desacuerdo. No sé si OP significa lo mismo, pero... Cuando comencé a programar, estaba aprendiendo solo, trabajando muy duro y eso me consiguió mi primer trabajo. Luego, seguí estudiando y me esforcé mucho en el trabajo, pero definitivamente fue el entorno lo que me hizo un mejor desarrollador: revisiones de código, recomendaciones, conversaciones con otros, incluso requisitos locos que me pusieron en situaciones y desafíos, pude Nunca pienso en mí mismo, ni lo encuentro a través de Internet. Así que creo que haber trabajado en una variedad de proyectos y con diferentes equipos es crucial para tu crecimiento.
@1lifeUp sí, no sabemos si es lo mismo para OP para estar seguros, pero en este caso parece que OP tiene curiosidad sobre lo que se está "perdiendo" al trabajar en compañías más grandes. No sacrificaría un buen trabajo solo para satisfacer una curiosidad (o al menos pensarlo bien antes de hacerlo)
@DarkCygnus. Realmente, al final del día, lo que pasa por mi cabeza es si la empresa en la que estoy empleado actualmente se iría mañana, y estoy buscando trabajo. ¿Cómo me aseguro de tener las habilidades para ser contratado en otro lugar? Para mí, parece que si estuviera trabajando en una empresa más grande, es más probable que tenga un conjunto de habilidades deseado, porque las empresas más grandes están invirtiendo más en sus empleados.
@1lifeup, Estas son algunas de las áreas que siento que me faltan y que están obstaculizando mi crecimiento. _revisiones de código, recomendaciones, conversaciones-
¿Qué posibilidades hay de que contraten a un segundo programador?
@Erik, muy poco probable. Recientemente empezamos a contratar freelancers en determinadas ocasiones.
No veo cómo ninguno de los factores que se discuten aquí (oportunidad de trabajar en una variedad de proyectos, exposición a desarrolladores más experimentados, revisiones de código, oportunidad de aprender habilidades, inversión en empleados) tiene ALGO que ver con el tamaño del empleador. . He trabajado en pequeñas empresas que tenían todas esas cosas y en empresas gigantes que no. Creo que estas son preocupaciones válidas, pero creo que es un error relacionarlas con el tamaño de la empresa.
@dwizum, sí, pero la diferencia es que trabajo en una empresa pequeña y yo soy el único desarrollador de la empresa . ¿Con quién tiene conversaciones cuando no hay otros desarrolladores y quién realiza las revisiones de código en esta situación?

Respuestas (5)

Estoy en una situación muy similar a la suya, así que creo que puedo ofrecer algunos consejos y compartir cómo veo este problema.

En cuanto a ser el único programador de la empresa, eres insustituible en la práctica siempre que hagas un buen trabajo (parece que lo eres). Esto significa muchas cosas, como seguridad laboral, aumentos, libertad, etc. Esto no es tan fácil en una gran empresa. Pero, claramente no está preocupado por esto... está preocupado por la transferencia de conocimiento, en otras palabras, ¿se desearán mis habilidades si quisiera mudarme a otra empresa?

Desde mi propia experiencia, trabajar para una pequeña empresa tiene grandes ventajas y también algunas desventajas. Le he expresado a mi gerencia actual que me gustaría que otra persona en el personal aprendiera de ella o que fuera su mentor. También me faltan revisiones de código, auditorías del sistema, conversaciones, etc. Si bien esto definitivamente no es lo ideal, siento que tengo que esforzarme aún más (y, por lo tanto, aprender más) porque no tengo a esa otra persona para intercambiar ideas. fuera de mí y criticarme.

Mi solución: leo mucho, leo respuestas y preguntas de personas sobre desbordamiento de pila, seguridad de la información, blogs y leo detenidamente las mejores prácticas de personas mucho más inteligentes que yo. Te prometo que, si continúas haciendo esto, obtendrás mucho más conocimiento que el programador promedio de una gran empresa. Tendrás mucha más experiencia con cada herramienta o software que escribas porque tuviste que investigarlo, diseñarlo, codificarlo, probarlo e incluso intentar descifrarlo todo tú mismo .

No mucha gente puede hacer eso todos los días...

Confío mucho en la seguridad de mi trabajo en esta empresa. Me han proporcionado capital en la empresa. Mientras la empresa esté presente, estoy seguro de que tendré un puesto. Me preocupo cuando miro las ofertas de trabajo y, aunque estoy creando aplicaciones web utilizadas por muchos usuarios, en función de los requisitos de publicación de trabajos, siento que no estoy calificado para muchas de las listas. Este es mi miedo. Gracias por sus comentarios, continuaré leyendo e interactuando con las comunidades.
Piénselo de esta manera, cada usuario en el desbordamiento de pila no sabe el 99% de las preguntas formuladas, incluso las personas más experimentadas saben quizás el 2% de las respuestas. Lo que importa es qué tan rápido puedes aprender algo y adaptarte. La mejor de las suertes.

Quiero aprender habilidades empleables y la forma correcta de resolver problemas.

Las habilidades empleables pueden diferir de una empresa a otra. Una forma de obtener más habilidades empleables es alinearse con su mercado. La TI cambia rápidamente y se puede localizar en una región, siguiendo la publicación de trabajo para conocer el flujo del mercado y buscar la palabra clave de los anuncios que no conoce, lo mantiene actualizado de su mercado, brindando conocimiento de qué habilidades son más empleables. .

La forma correcta también puede ser diferente dependiendo de la infraestructura del software, el tipo de usuarios, qué necesidades cumple el software.

Para encontrar la forma correcta, debe conocer varias formas y aprender los pros y los contras de cada una. Aquí algunas actividades que conducen a eso:

  • Asistir a múltiples eventos de TI y vincularse con algunos compañeros apasionados, durante el evento o después, llamar a un restaurante o cafetería, intercambiar con esas personas. Esos intercambios le darán una idea de otros lugares de trabajo, cómo funcionan, qué pila usan y por qué los eligen;
  • Ver desarrolladores que están transmitiendo mientras programan;
  • Estar en un equipo en algún evento de código donde algunos miembros tienen diferentes formas de lograr la solución, también pueden comentar su solución;
  • Completar algunos katas en diferentes sitios y leer otras soluciones de programadores;
  • Leer libros, blogs, foros y ver videos como otros propuestos;
  • Enviar su código a una compañía como Uncle Bob para que lo revise, es costoso y algunos acuerdos de confidencialidad pueden evitarlo, pero puede pedírselo a su jefe;

Enseñar también es una forma de aprender porque algunos estudiantes pueden:

  • luchar contra su solución, descubriendo algunos defectos y puede ser que tengan una mejor propuesta
  • compartir sus experiencias, que pueden llevar a descubrir cosas nuevas;
  • hacerle preguntas que pueden hacerle cavar para encontrar la respuesta;

Cuando miro muchas de las preguntas de la entrevista de programación, estoy perdido.

Si esas preguntas están relacionadas con la tecnología, es normal, como hacer preguntas específicas del paquete web a un tipo que nunca ha hecho ningún front-end probablemente no resulte en un buen resultado.

Si esas preguntas son sobre patrones de diseño, arquitectura, metodología, como dijeron otros, hay muchos libros y videos disponibles y puede ser bueno que aprenda algunos de ellos. Porque la habilidad de comunicación cuando eres el único programador puede verse afectada a largo plazo. Puede ser que esté implementando patrones de diseño pero no sabe su nombre, cuando un chico le pregunta algo relacionado, puede ser difícil compartir sus dudas porque no conoce el lenguaje colectivo. Esto puede perjudicar su empleabilidad para su próxima oportunidad.

Algunas ideas:

  • leer libros / blogs / participar en comunidades en línea
  • pídale a su empleador que lo envíe a conferencias y capacitaciones
  • ser activo en grupos de usuarios locales/reuniones

... y utilice estas oportunidades no solo para aprender habilidades técnicas, sino también para establecer contactos con sus compañeros. Forme amistades e intercambie favores con otras personas en su posición, y puede mitigar en gran medida el aislamiento que conlleva ser el único programador en una pequeña empresa.

En su respuesta al comentario de Erik sobre la contratación de más personal, usted dijo

Recientemente empezamos a contratar freelancers en determinadas ocasiones.

Ya sea un equipo que administres o uno o más trabajadores autónomos, siempre puedes recoger cosas de ellos. Cuando sea el líder del equipo, siempre contrate a personas que sean más inteligentes que usted. No quieres políticas de oficina, quieres crecer.

Siempre que tenga una nueva persona en el equipo, incluso a corto plazo, déjela expresar sus opiniones sobre todos los aspectos técnicos, ya sea el código, la estructura y la gestión de proyectos, la forma en que se resuelven ciertos problemas o cómo se utiliza el control de versiones. Escúchalos. No todo lo que dicen puede ser mejor que lo que estás haciendo, pero ampliará tu horizonte.

Tener varios freelancers que van y vienen es una buena manera de obtener muchos puntos de vista diferentes y de elegir diferentes estilos de programación en la tecnología que está utilizando.

Empecé en roles similares. Me mantuve conectado con otros desarrolladores de todo el mundo en foros donde podía obtener ayuda cuando la necesitaba (y ayudar a otros).

Sin embargo, no crecí como programador. Ni un poco.

De vez en cuando obteníamos un nuevo SDK para trabajar y me rompía los sesos sobre lo que estaba pasando en el código, ya que no había estado expuesto a varios paradigmas de diseño.

Cuando trabajas solo terminas con hábitos terribles (yo lo hice de todos modos). Constantemente opta por las opciones más fáciles y toma atajos sin siquiera darse cuenta de que lo está haciendo.

A menos que trabaje en una organización grande con un buen sistema de revisión por pares, no crecerá. No saldrás de tu zona de confort (no importa cuántos artículos o libros leas).

No hay nada malo con las pequeñas empresas, muchas personas se ganan la vida muy bien trabajando para ellas. Pero si su objetivo es crecer y evolucionar hacia otra cosa, probablemente no sucederá en una empresa pequeña.

Ejemplo clásico de un error de lógica clásico: en.wikipedia.org/wiki/Faulty_generalization . He trabajado casi exclusivamente para empresas muy pequeñas y siempre he estado a cargo (como el OP), pero eso nunca me impidió estar al tanto de los métodos modernos y las mejores prácticas. Sin embargo, de cualquier manera, el mayor problema con su respuesta es que no responde nada: solo le dice al OP, de manera muy negativa, que está jodido.
@solarflare: Estoy de acuerdo, actualmente estoy en una posición similar trabajando como programador lobo solitario, estoy preocupado por mi próxima entrevista de trabajo cuando suceda. He sido tan perezoso durante los últimos dos años ya que no hay revisión de código, práctica estándar, reuniones semanales y demás. Todo lo que me dijeron es que el código funcione. Descansa a nadie le importa.
@yonikawa, la mejor manera que se me ocurre es tener una cartera para mostrar para el próximo trabajo al que vaya (es decir, contribuciones de código abierto, etc.). Aparte de eso, no puedo culparte, yo también tomé el camino fácil durante casi 10 años.