Carrera de programación. Capítulo 3. Universidad

Continuación de la historia "Carrera de programador".

Después de terminar la escuela nocturna, llegó el momento de ir a la universidad. En nuestra ciudad había una universidad técnica. También tenía una facultad de "Matemáticas e Informática", que tenía un departamento de "Sistemas informáticos", donde se formaba a los futuros trabajadores de TI: programadores y administradores.
La elección fue pequeña y postulé para la especialidad “Programación en Ingeniería Informática”. Había 2 exámenes de ingreso por delante. En lengua y matemáticas.
Los exámenes fueron precedidos por una entrevista y la elección de la forma de formación: presupuesto o contrato, es decir. gratis o por dinero.

Mis padres estuvieron presentes en mi entrevista y estaban preocupados por la admisión. Por supuesto, eligieron la forma de formación por contrato. Por cierto, costaba unos 500 dólares al año, lo que era mucho dinero en 2003, especialmente para nuestra pequeña ciudad. Recuerdo bien el diálogo de mi padre con la chica de la oficina de admisiones:
Dewish: Puedes intentar aprobar los exámenes con un presupuesto limitado y, si no funciona, cambiar a un contrato. Puedes pagar a plazos.
Padre: No, ya hemos decidido que solicitaremos un contrato.
Dewish: Bueno, no arriesgas nada.
Padre: No, sigue siendo un riesgo. Dime, ¿todos están solicitando un contrato?
Dewish: Sí, todo el mundo lo hace. Probablemente sólo los completos imbéciles no pueden
Padre: Entonces tenemos una oportunidad... dijo sonriendo, y firmamos los documentos de admisión.

Por supuesto, las actuaciones de la escuela secundaria todavía estaban frescas en la memoria de mis padres, así que con el paso de los años entiendo por qué decían eso.

En el verano, antes de ingresar, seguí comprando libros por los 40 dólares que mi abuela me dio de su pensión.
De lo memorable y significativo:
1. "UML 2.0. Análisis y diseño orientado a objetos". Un libro que me enseñó a diseñar software de cualquier complejidad, pensar en la arquitectura, dividir todo en componentes, escribir casos de uso y dibujar diagramas UML. Este es el conocimiento que necesitan las personas mayores, los líderes y los arquitectos. Aquellos que materializan un sistema desde el vacío, cuando sólo existe una descripción de la idea.
Conozco gente que ya tiene más de 30 años y todavía no pueden tomar una decisión a menos que haya una orden desde arriba, de un desarrollador de mayor rango. En el trabajo independiente y remoto, cuando a menudo se trabaja individualmente con un cliente, este conocimiento también es invaluable.
También son relevantes para los desarrolladores independientes que crean nuevas aplicaciones y servicios. Aunque pocas personas se preocupan por el diseño detallado. Por eso tenemos software de tal calidad, que se traga toda la memoria y con una experiencia de usuario torcida.
2. "Estándar ANSI C++ 98". No es exactamente un libro, pero tiene más de 800 páginas de información general. Por supuesto, no lo leí sección por sección, sino que me referí a reglas específicas del lenguaje cuando desarrollé mi compilador de C++. La profundidad del conocimiento del idioma, después de estudiar e implementar el estándar, no puede describirse con ningún epíteto maravilloso. Podemos decir que sabes todo sobre el idioma, y ​​aún más. Un trabajo muy largo y minucioso para estudiar la norma. Pero tenía 5 años de universidad por delante, así que nadie me presionaba.
3. "Delphi 6. Guía práctica".. Fue un salto rápido al mundo de las GUI y las formas favorecedoras. Casi no había umbral de entrada y ya conocía bastante bien a Pascal. Mientras estudiaba en la universidad, escribí la mayor parte de los programas comerciales en Delphi. Era un software para estudiantes universitarios de posgrado, contabilidad para pequeñas empresas y el gobierno. instituciones. Luego hubo varios pedidos de autónomos. A mediados de la década de XNUMX, Delphi dominaba el mercado de desarrollo de Windows. Hasta ahora, en las cajas de las tiendas locales se pueden ver programas con fuentes y controles familiares, lo que distingue inmediatamente una aplicación Delphi de cualquier otra.
4. "Tutorial MFC". Habiendo dominado Delphi, era lógico continuar creando UI en C++. Fue mucho más difícil, no todo salió bien y era comprensible. Sin embargo, también llevé esta tecnología a la etapa de aplicación en proyectos comerciales. Una empresa antivirus alemana distribuye mi programa, escrito en MFC hasta el día de hoy.
5. "3 discos con MSDN Library 2001". No tuve Internet de inmediato y, hasta donde recuerdo, la biblioteca MSDN no estaba en línea en 2003. En cualquier caso, fue más fácil para mí instalar el libro de referencia de MSDN en mi PC local y encontrar fácilmente documentación para cualquier función de WinApi o clase MFC.
Carrera de programación. Capítulo 3. Universidad
Los libros más significativos leídos en el periodo 2002-2004

Se trata de libros que se leyeron en el período 2002-2004. Por supuesto, ahora este es un legado lamentable, que se está reescribiendo en lotes utilizando tecnologías .NET y Web. Pero este es mi camino, quizás alguno de vosotros haya tenido uno similar.

Primer semestre

Al final del verano llega el momento de realizar las pruebas de acceso a la universidad. Todo salió bien. Aprobé el examen de lengua y matemáticas y me matriculé en el primer año de la especialidad de Programación de Sistemas Computacionales.
El primero de septiembre, como era de esperar, asistí a las primeras clases de mi vida. “La época de estudiante es la época más brillante de la vida”, me dijo mi madre. Lo creí de buena gana.
El primer día aprobaron 3 pares de asignaturas de educación general, todos en el grupo se conocieron y, en general, la universidad dejó una grata impresión.
¡Finalmente comenzaron a enseñarnos verdadera programación en C! Y, además, me enseñaron historia de la informática, tecnología digital y mucha otra información que fue relevante para mí. Incluso maldecir. El análisis fue útil, ya que me permitió comprender más profundamente lo que escribió el respetado Donald Knuth.

Para mí, las clases de programación se desarrollaron en un ambiente de conducción. Finalmente, la gente vino a mí en busca de ayuda. Me sentí necesario. Al comienzo de la clase, nos dieron la tarea de escribir un programa. La tarea fue diseñada para una pareja y media, luego media hora para la prueba. Logré escribir la tarea en 3-5 minutos y el resto del tiempo caminé por la oficina y ayudé a otros a resolver el problema.
No había suficientes computadoras para todo el grupo, por lo que la mayoría de las veces nos sentábamos de dos en dos frente a una computadora. Al ver mis habilidades, tres, cuatro, a veces incluso 5-6 personas se sentaron cerca de mi escritorio y no dudaron en sentarse para aprender lo que yo aprendí hace un par de años en el libro de Kernighan y Ritchie.
Mis compañeros de clase vieron mis habilidades y ellos mismos plantearon preguntas o se ofrecieron a pasar el rato después de clases. Así fue como hice muchos amigos, la mayoría de los cuales todavía somos amigos hoy.

En invierno llegó el momento de la primera sesión. En total, fue necesario cursar 4 materias: 2 tipos de matemáticas superiores, historia y programación. Todo pasó, unos 4 puntos, unos 3. Y me asignaron programación automáticamente. Los profesores ya conocían mis habilidades, por lo que no vieron ningún sentido en ponerme a prueba. Felizmente me presenté a la sesión con mi libro de registro para obtener una firma de inmediato y estaba a punto de regresar a casa cuando mis compañeros me pidieron que me quedara y me quedara afuera de la puerta. Bien. Colocándome en el alféizar de la ventana, a la salida de la oficina, comencé a esperar. Había otro chico a mi lado, que también aprobó el examen automáticamente.
“¿Por qué te quedas aquí?”, le pregunté.
— “Quiero ganar dinero resolviendo problemas. ¿Por qué estás aquí?
- "Yo también. Simplemente no voy a ganar dinero. Si necesitas ayuda, por la bondad de mi corazón, simplemente lo decidiré”.
Mi oponente vaciló y murmuró algo en respuesta.

Al cabo de un rato, los compañeros empezaron a abandonar el público llevándose consigo trozos de papel doblados que contenían problemas del examen.
“Ayúdame a decidir”, preguntó el primer temerario. "Está bien, lo decidiré ahora", respondí. No habían pasado ni 5 minutos cuando garabateé una solución en un papel arrugado con un bolígrafo y se la devolví. Al ver que el plan funcionaba, la gente empezó a abandonar el público con mucha más frecuencia y, a veces, incluso dos o tres a la vez.
Había tres montones de hojas en el alféizar de la ventana de mi trabajo. Un paquete contiene hojas TODO recién llegadas. Frente a mí había una hoja de En progreso y junto a ella había un paquete de "Listo".
Este fue mi mejor momento. Todo el grupo, que era de casi 20 personas, acudió a mí en busca de ayuda. Y ayudé a todos.
Y el tipo que quería ganar dinero se fue apresuradamente después de unos minutos, dándose cuenta de que no había nada que atrapar aquí, toda la atención se centró en el altruista.
Todo el grupo aprobó el examen con calificaciones 4 y 5, y ahora tengo 20 amigos y una autoridad inquebrantable en materia de programación.

primer dinero

Después de la sesión de invierno, corrió por toda la facultad el rumor de que había un chico que podía resolver cualquier problema de programación, de los que nos asignaban en casa o durante la sesión. Y el boca a boca se difundió no solo entre los estudiantes de primer año, sino también entre los estudiantes de último año.
Como ya escribí, desarrollé relaciones amistosas con todos en el grupo después del "mejor momento" del examen y comenzamos a comunicarnos muy estrechamente con un par de chicos. Nos hicimos verdaderos amigos y pasamos mucho tiempo fuera de la universidad. Para simplificar la presentación, llamémoslos Elon y Alen (los apodos se parecen a los reales).
Llamamos a Elon por su nombre, pero Alain fue apodado en honor a Alain Delon, por su capacidad para seducir cualquier belleza. Las chicas literalmente daban vueltas a su alrededor, en números variados. En términos de conocer gente y entablar relaciones durante la noche, Alain Delon no tenía igual. Era un verdadero macho alfa para el sexo femenino, lo cual es completamente inusual para la mayoría de los especialistas en TI. Además de sus aventuras amorosas, Alain era diseñador de vocación. Y si necesitaba dibujar algo, por ejemplo, los entonces populares carteles parpadeantes del formato Web 1.0, lo hacía con facilidad.

Se puede decir mucho más sobre Elon. Todavía nos reunimos con él hasta el día de hoy, diez años después de la universidad. En sus primeros años era un tipo flaco y bastante silencioso. (No se puede decir lo mismo del tipo de cara grande que conduce un jeep hoy en día). Sin embargo, yo era igual: delgada y taciturna. Por tanto, creo que rápidamente encontramos un lenguaje común.
A menudo, después de clases, Elon, Alen y yo nos reuníamos en una cervecería, cubiertos con una lona. En primer lugar, estaba enfrente de la universidad y, en segundo lugar, por un “rublo” y 50 kopeks se podían conseguir algunas delicias durante 2 horas de fiesta incendiaria. Como cerveza de barril y galletas saladas. Pero el punto era diferente.
Elon y Alen eran de otras ciudades y vivían en una habitación alquilada. Estaban constantemente escasos de dinero y había momentos en que tenían que pasar hambre. Ese mismo día celebraron momentos felices, cuando recibieron una beca de $10 en su tarjeta y luego llegó el momento de “apretarse el cinturón” y vivir de lo que Dios envía.

Por supuesto, esta situación motivó a los estudiantes visitantes a buscar formas de ganar dinero extra. Y frente a ellos, con el brazo extendido, estaba sentada una “cabeza brillante” en mi forma. Que también es dócil y rara vez se niega a ayudar a la gente.
No sé si describí esa situación correctamente, pero finalmente estas reuniones en el pub llevaron a la creación de la primera empresa de TI en mi carrera llamada SKS. El nombre estaba formado simplemente por las primeras letras de nuestros apellidos. Nuestra joven empresa, representada por tres fundadores, destrozó a la competencia y a toda la universidad durante los siguientes cuatro años.

Elon era un ROP. Es decir, el jefe del departamento comercial. Es decir, sus responsabilidades incluían encontrar nuevos clientes para nuestro negocio de subcontratación. El canal de venta fueron folletos A4 impresos horizontalmente, con una sencilla inscripción: “Resolviendo problemas de programación”. Y debajo está el número de teléfono de Elon.
Este tipo de publicidad exterior se colocó en cada piso donde podían aparecer los estudiantes de programación.
Otro, más fuerte en términos de fidelización de clientes, fue el canal de venta boca a boca.

El modelo de negocio era simple. Ya sea a través de una recomendación o un anuncio, un estudiante universitario se puso en contacto con nosotros. Me dio una descripción de un problema de programación que debía resolverse en un plazo determinado y lo resolví por el precio de estudiante. Elon participó en las ventas y recibió su porcentaje. Alain Delon participaba menos en nuestro negocio, pero si necesitábamos hacer un diseño, una imagen o atraer clientes adicionales, siempre nos ayudaba. Con su encanto, nos trajo mucha gente nueva. Todo lo que tenía que hacer era procesar este proceso a una velocidad de 5 a 10 tareas por día. Los plazos eran estrictos: no más de una semana. Y la mayoría de las veces tuvo que hacerse ayer. Por lo tanto, tales circunstancias me enseñaron rápidamente a escribir programas en un "flujo", sin distraerme con cosas como un terremoto de magnitud 5,9 o un accidente grave fuera de la ventana.

Durante la temporada de más calor, antes de la sesión, es decir en diciembre y mayo, parecía que tenía todas las tareas de la universidad en mi computadora. Afortunadamente, la mayoría eran del mismo tipo, sobre todo cuando nos contactó un mayorista representado por un representante de todo un grupo. Entonces era posible realizar 20 tareas, por ejemplo en ensamblador, cambiando solo 2-3 líneas. En una época así, los cables fluían como un río. Lo único que nos faltaban eran los disquetes. En el período 2003-2005, los estudiantes pobres de nuestra ciudad no tenían transferencias de dinero a través de Internet. Además, no había garantías de pago, lo que ahora se llama depósito en garantía. Por lo tanto, la empresa SKS, como encargada de cumplir los pedidos, concertó una cita en el territorio de la universidad y le dimos disco flexible con una solución. Casi no hubo reembolso (del reembolso en inglés - devolución del pago a petición del cliente). Todos estaban contentos y recibían 4 o 5 puntos si podían aprender lo que agregué al archivo readme.txt en el disquete. Sin embargo, una simple demostración de un programa completamente funcional también a menudo causaba un efecto sorpresa entre los profesores.

El precio era ridículo, por supuesto, pero lo tomamos en cantidad. Por ejemplo, una tarea doméstica típica cuesta entre 2 y 3 dólares. Trabajo de curso 10$. El premio mayor en forma de programa para el trabajo de un candidato se perdió una vez, y la solicitud para un estudiante graduado que se preparaba para su defensa ascendía a 20 dólares. Durante la temporada de calor, estos ingresos se pueden multiplicar por 100 clientes, lo que al final era más que el salario medio de la ciudad. Nos sentimos bien. Podrían permitirse discotecas y divertirse allí, en lugar de atragantarse con cheburek para ganar el último centavo.

Desde el punto de vista de mis habilidades, se multiplicaron con cada nueva tarea de estudiante. Empezamos a recibir solicitudes de otras facultades, con un programa de formación diferente. Algunos estudiantes de último año ya estaban usando Java y XML en todo su potencial cuando nos inclinamos hacia C++/MFC. Algunos necesitaban ensamblador, otros PHP. Aprendí todo un zoológico de tecnologías, bibliotecas, formatos de almacenamiento de datos y algoritmos a la hora de resolver problemas.
Este universalismo ha permanecido conmigo hasta el día de hoy. También se utiliza una variedad de tecnologías y plataformas cuando se trabaja en proyectos. Ahora puedo escribir software o una aplicación para cualquier plataforma, sistema operativo o dispositivo. La calidad, por supuesto, variará, pero para el negocio en el que me ocupo principalmente, el presupuesto suele ser importante. Y para ellos, una orquesta unipersonal significa recortar el presupuesto exactamente tanto como el número de desarrolladores que puedo reemplazar con mis habilidades.

Si hablamos del mayor beneficio que me trajo estudiar en la universidad, no serían las conferencias sobre algoritmos o filosofía. Y no “aprenderá a aprender”, como está de moda decir de las universidades. En primer lugar, serán personas con las que mantendremos una relación amistosa después del entrenamiento. Y en segundo lugar, esta es la misma empresa SKS que me convirtió en un desarrollador profesional, con pedidos reales y diversos.
Me gustaría recordar una frase que viene muy bien para esta parte de la historia: Una persona se convierte en programador cuando otras personas comienzan a utilizar sus programas y pagan dinero por ello..

Así, la marca de la empresa SKS era ampliamente conocida no sólo entre los estudiantes sino también entre los profesores. Incluso hubo un caso en el que uno de los profesores vino a mi casa para que yo pudiera ayudarlo a escribir un programa para sus necesidades científicas. Él, a su vez, me ayudó en su especialización. Ambos quedamos tan absortos en nuestro trabajo que ambos nos quedamos dormidos al amanecer. Él está en el sofá y yo en una silla frente a la computadora. Pero completaron sus tareas y ambos quedaron satisfechos con el trabajo del otro.

Giro del destino

Comenzó el 4to año de universidad. El último curso al finalizar el cual se otorga el título de bachiller. Prácticamente no había materias de educación general, sino sólo aquellas relacionadas con computadoras y redes. Ahora bien, a veces lamento no haber tenido tiempo o no haber mostrado interés por la misma electrónica o la estructura interna de las redes. Ahora estoy terminando esto por necesidad, pero estoy seguro de que estos conocimientos básicos son necesarios para cualquier desarrollador. Por otro lado, no se puede saberlo todo.
Estaba terminando de escribir mi propio compilador de C++, que ya era capaz de comprobar el código en busca de errores según el estándar y generar instrucciones de ensamblaje. Soñé que estaba a punto de poder vender mi compilador por 100 dólares la licencia. Multipliqué esto por mil clientes y mentalmente
transportado a un Hammer, con el bajo de 50 Cent a todo volumen en los parlantes y bellezas en el asiento trasero. ¿Qué puedes hacer a los 19 años? Esas son las prioridades. El truco de mi compilador casero fue que producía errores en ruso, en lugar del inglés de Visual C++ y gcc, que no es comprensible para todos. Vi esto como una característica espectacular que nadie en el mundo había inventado todavía. Creo que no tiene sentido seguir contando. No llegó a las ventas. Sin embargo, logré un conocimiento profundo del lenguaje C++, que me alimenta hasta el día de hoy.

En mi cuarto año, fui cada vez menos a la universidad porque conocía la mayor parte del programa. Y lo que no sabía lo resolví haciendo trueque con algún estudiante que entendiera, por ejemplo, de electrónica o de teoría de probabilidades. Lo que no se nos ocurrió en aquel entonces. Y unos auriculares invisibles colgados de un cable en los que se dictaba la respuesta. Y salir corriendo del aula para que un gurú de su especialidad te escriba la solución de todo el examen en 2 minutos. Era un buen momento.
Durante el mismo curso, comencé a pensar en un trabajo real. Con oficina, aplicaciones comerciales reales y un salario digno.
Pero en aquella época, en nuestra ciudad, sólo se podía encontrar trabajo como programador.
"1C: Contabilidad", que no me convenía en absoluto. Aunque por desesperanza, ya estaba preparado para esto. En ese momento mi novia me presionaba para que me mudara a un apartamento separado.
De lo contrario, dormir con tus padres a través de la pared no es nada común. Sí, y ya estaba cansado de resolver los problemas de los estudiantes y quería algo más.

Los problemas surgieron de la nada. Pensé en anunciar en mail.ru que estaba buscando un trabajo con un salario de 300 dólares para el puesto de programador de C++/Java/Delphi. Esto es en 2006. A lo que básicamente respondieron algo como: "¿Quizás deberías escribirle a Bill Gates con esas solicitudes de salario?" Esto me molestó, pero entre un montón de respuestas similares, hubo una persona que me llevó a trabajar como autónomo. Esta era la única oportunidad en nuestra empobrecida Las Vegas de ganar un buen dinero haciendo lo que sabía hacer.
Así, los estudios en la universidad transcurrieron sin problemas con el trabajo de intercambio como autónomo. Cerrando el tema de la universidad, podemos decir lo siguiente: No fui al 5to año. Había una programación y un concepto como “asistencia gratuita”, que utilicé el 146%.
Lo único que había que hacer era defender un título de especialista. Lo cual hice con éxito con la ayuda de mis amigos. Vale la pena decir que en este curso ya me había mudado de mis padres a un departamento alquilado y compré un auto nuevo. Así empezó mi carrera como desarrollador profesional.

Los siguientes capítulos estarán dedicados a proyectos individuales, los fracasos más graves y los clientes más inadecuados. Una carrera como autónomo de 5 a 40 $/hora, lanzar mi propia startup, cómo me prohibieron el intercambio de autónomos Upwork y cómo trabajando como autónomo me convertí en líder de equipo en la segunda compañía petrolera más grande del mundo. Cómo volví al trabajo remoto después de la oficina y la startup, y cómo resolví problemas internos de socialización y malos hábitos.

To be continued ...

Fuente: habr.com

Añadir un comentario