Hola. Este artículo es parte de una serie en la que hablamos con desarrolladores de software profesionales, les preguntamos cómo es escribir código para ganarse la vida y quizás obtengamos algunos conocimientos sobre la industria del desarrollo de software en el camino.
Nuestro invitado de hoy es un MVP de Delphi y autor David Cornelius. David se describe a sí mismo como “un programador de principio a fin”. Dirige un pequeño negocio de desarrollo de software desde su oficina en casa y parece tener sus prioridades correctas cuando dice “Me encanta la familia, la música, los juegos de mesa de estrategia y la naturaleza”. Vivir, como él, a medio camino entre el Océano Pacífico y las Montañas Cascade David dice que esto significa que se le ofrece una amplia variedad de lugares para explorar, ya sea en una motocicleta o caminando desde un campamento.
Table of Contents
Hola David, gracias por hablar conmigo hoy.
¡¡Es un placer conocerte, Ian !! 😁
¿Qué producto (s) de Embarcadero utiliza a) con mayor frecuencia b) con regularidad?
a & b: Delphi XE, 10.4, 11. Todos los días.
¿Cómo y / o por qué te convertiste en desarrollador?
Cuando estaba en la escuela primaria, mi materia favorita eran las matemáticas. Conseguí una calculadora programable de TI (Texas Instruments) y competiría con mi abuelo en los cálculos más complejos que pudiéramos hacer en sus limitados 32 pasos.
La pequeña escuela secundaria a la que asistí tenía un TRS-80 con una “unidad” de casete para almacenamiento, pero me impacientaba esperando que se cargara / guardara y con sus muchos reintentos y errores perdí el interés. Pero más tarde, cuando la escuela instaló su primer laboratorio de computación con tres Apple II, pasé todo el tiempo disponible para enseñarme AppleSoft BASIC. Cuando llegué al final del libro de tutoriales y me di cuenta de que un amigo mío estaba escribiendo juegos que no se podrían haber hecho solo en BASIC, supe que había mucho más que aprender. ¡En ese momento estaba enganchado a la programación! Especializarse en Ciencias de la Computación en la universidad fue el siguiente paso obvio y el resto, como dicen, es historia.
¿Crees que alguna vez dejarás de ser desarrollador? Si es así, ¿qué sería lo siguiente?
No, tengo demasiadas ideas para detenerme, incluso si vendo mi casa y viajo por el país en una casa rodante, seguiría programando parte del tiempo.
¿Qué le hizo empezar a utilizar Delphi / C ++ Builder?
La universidad me expuso a varios lenguajes de programación diferentes. Estudié ensamblaje en tres procesadores diferentes, disfruté de la estructura de FORTRAN, me aburrí de COBOL y abandoné la clase, miré algunos lenguajes de nicho como SNOBOL y aprendí C por mí mismo usando Let’s C de Mark William . Pero la clase más útil fue una que enseñó conceptos generales de programación utilizando una herramienta económica que nos permitió editar, compilar y depurar todo en un IDE, un nuevo concepto a mediados de los 80. Fue Turbo Pascal.
Más tarde, en mi primer trabajo de programación a largo plazo, tuve la oportunidad de iniciar una nueva aplicación y pude elegir cualquier herramienta de programación que quisiera. Fui con Turbo Pascal, luego en la versión 4, porque ya sabía cómo usarlo, podía pasar al ensamblaje si lo necesitaba (lo que en realidad hacía ocasionalmente), y estaba comenzando a hacerse popular, era el lugar lógico para comenzar.
A medida que la aplicación creció a lo largo de los años, moví la base de código a Borland Pascal, apoyé proyectos auxiliares en otros lenguajes de programación e incluso escribí algunas cosas usando Borland Turbo C ++. Pero fui más productivo con el lenguaje Object Pascal, es decir, hasta que intenté programar algo de Windows 3.1 con Object Windows Library (OWL). Cuando salió Delphi, abandoné alegremente OWL a favor de esta nueva y sorprendente herramienta de programación basada en componentes. Una vez más, era el lugar lógico para comenzar, esta vez para crear aplicaciones de Windows.
Si pudiera darle algún consejo a un estudiante que está considerando una carrera como desarrollador de software, ¿cuál sería?
Hágase estas preguntas:
- ¿Puedo pensar con lógica y analizar problemas profundos?
- ¿Puedo concentrarme en una sola tarea durante un período de tiempo prolongado?
- ¿Disfruto de los desafíos mentales y la resolución de problemas de lógica?
- ¿Me encanta aprender nuevas ideas y abrazar la tecnología cambiante?
- ¿Puedo sentarme frente a una computadora durante períodos prolongados?
Si puede responder afirmativamente a todas (o al menos a la mayoría) de ellas, es muy probable que pueda prosperar como desarrollador. Disfrutar del proceso de creación de software es realmente importante para una carrera sostenida, así que tome algunas clases (ya sea tutoriales gratuitos en línea o mediante educación formal) lo antes posible para darse una idea de cómo es, luego evalúe eso en comparación con otros intereses.
Disfruto mucho tocando música, pero me di cuenta de que no sería algo que quisiera estudiar y pasar de 8 a 10 horas al día haciendo o el amor sería reemplazado por una monotonía. Ese no ha sido el caso del desarrollo de software para mí. ¡Tienes que conocerte a ti mismo!
¿Pestañas … o espacios?
¡Estoy con Frank Lauter ! [Espacios]
¿Cuál es el mejor día que ha tenido como desarrollador?
Ser capaz de resolver un problema o agregar una característica que haga realmente feliz a un cliente es la sensación más grande, pero un día que se destaca en mi mente como particularmente satisfactorio fue algo solo para mí. A principios de la década de 1990, la mayoría de las PC basadas en DOS no tenían un botón de reinicio, lo que requería que el usuario se apagara, esperara a que el disco duro dejara de girar y luego se volviera a encender si un programa fallaba. También venían con un solo altavoz incorporado que a veces se atascaba si un programa fallaba en el momento equivocado, lo que requería el doloroso proceso de detener / esperar / reiniciar para terminar con el molesto chillido de tono alto. Esto me sucedió demasiadas veces, así que escribí un programa rápido de Turbo Pascal que simplemente apagaba el altavoz. Era un programa de una línea, se ejecutó perfectamente la primera vez, lo llamé SHUTUP y lo puse en PATH para poder escribirlo en cualquier momento desde el indicador de DOS.
¿Qué es lo peor de ser desarrollador?
Una de las cosas más frustrantes de ser desarrollador es encontrarse con un problema que no puede resolver y en el que pierde horas o incluso días tratando de solucionarlo solo para darse cuenta de que es un problema muy simple o un error que solo saca su fea cabeza. para su disposición particular de hardware.
¿Cuál es el consejo de desarrollo más genial que conoces?
¿Solo uno? ¡Hay muchos para elegir! Creo que el mejor consejo que daría sería ayudar a los que están en el editor de Delphi durante todo el día y es aprender, usar y personalizar Live Templates . Puede que se requiera un poco de curva de aprendizaje y práctica para ser bueno y rápido, pero escribir y codificar rápidamente es un gran impulso de productividad.
¿Trabaja desde casa, trabaja desde una oficina, trabaja en un espacio abierto / compartido? Que prefieres y porque? ¿Puedes elegir?
Si trabajara para una empresa que decidiera cambiar a un plan abierto, renunciaría. No puedo imaginar que un desarrollador sea capaz de concentrarse el tiempo suficiente para hacer algo en un entorno donde no hay paredes y todos pueden ver / escuchar a los demás.
Me encanta trabajar desde casa y ser mi propio jefe. Los empleadores rara vez comprenden los beneficios para la productividad de proporcionar un escritorio y una silla cómodos, o tener un equipo decente. No hay dos personas exactamente iguales, sin embargo, la mayoría de las empresas todavía tratan de que todos encajen en el escritorio de trabajo “estándar”.
Soy más alto que el promedio, por lo tanto, tengo una silla más alta que el promedio, construí mi escritorio más alto y uso elevadores de monitor para que mi postura sea erguida y no tenga que encorvar mis hombros o mirar hacia abajo a mi monitor, todo lo que causaría tensión en el cuello y la espalda.
Pero ocasionalmente, trabajo en mi computadora portátil en una cafetería o en un parque donde sintonizo todo lo que me rodea y me concentro en una sola tarea durante un período corto de tiempo.
Cuéntanos algo interesante que creas que quizás no sepamos.
Tomé 7 años de lecciones de piano en la escuela primaria y secundaria, y me encantó, me volví lo suficientemente bueno como para ganar un pequeño concurso en la escuela secundaria un año. También toqué trompeta, corno francés, barítono y tuba en la escuela secundaria en varias ocasiones (y canté en el coro). Todavía toco la tuba la mayoría de los años en Tuba Christmas en Portland , Oregon, y realmente disfruto de mi nueva adquisición, un bajo, que uso para acompañar a los grupos de alabanza en una iglesia local.
¿Hay alguna ubicación de la industria tecnológica que le gustaría visitar?
Creo que si hubiera tenido la oportunidad de visitar la sede de Borland en el pasado, hubiera sido genial, pero no tengo un deseo ardiente de ver otra cosa que tal vez visitar lugares sobre los que he leído para el contexto histórico. .
¿Alguna vez has conocido a figuras tecnológicas famosas o conocidas? ¿Quién fue? ¿Como le fue?
Siendo el coordinador de ODUG desde 2000, tuve el placer de conocer a varias personas conocidas en la comunidad de programación de Delphi haciendo recorridos de grupos de usuarios promocionando nuevas versiones de Delphi o componentes de terceros. Estos incluyen (sin ningún orden en particular), John Kaster, David “I” Intersimone, Anders Ohlsson, Sarina DuPont, Jim McKeeth y Ray Konopka. La mayoría de las presentaciones se desarrollaron sin problemas, pero la única vez que David I vine a Portland, el auditorio que estábamos usando había cambiado sus políticas sobre el uso del equipo de audio / visual sin mi conocimiento, lo que nos impidió usar la pantalla y el proyector; tuvimos que amontonarnos alrededor de su computadora portátil para ver qué estaba compartiendo; no salió bien y me sentí mal por todos. Cambiamos de lugar poco después. [ILa primera regla de las presentaciones de anB: siempre saldrá mal, y cuanto más planifique, más saldrá mal😂 ]
Si pudiera convencer a alguien de que considere Delphi o C ++ Builder, ¿cuál sería su método, cómo lo haría?
¡Les enseñaría construcciones de programación generales usando pseudocódigo, y luego los sorprendería haciéndoles saber que acaban de aprender Delphi!
Si pudieras agitar una varita mágica para “arreglar la industria tecnológica”, ¿qué cambiarías?
Evitaría que las empresas de redes sociales utilicen datos personales con fines de lucro y que utilicen algoritmos misteriosos para controlar qué publicaciones ves.
¿Qué producto tecnológico desea inventar / diseñar y por qué?
Facebook. No porque tenga el deseo de ser un multimillonario, sino porque creo que la plataforma es una excelente manera de mantenerme en contacto con familiares y amigos, pero detesto el hecho de que la empresa se beneficie de saber tanto sobre mí y ajustar las publicaciones que soy. es más probable que vea (consulte mi respuesta de “varita mágica”).
Si pudieras volver a vivir tu vida, ¿te convertirías en desarrollador? ¿Por qué?
Probablemente, realmente lo disfruto. Pero consideré seriamente la arquitectura; creo que habría sido igualmente divertido, desafiante y con suficiente variedad para mantener mi interés durante mucho tiempo.
¿Cuántos cafés tomas al día y es suficiente?
Si hay una taza de café recién hecho en la casa, beberé una o dos tazas. Si no, normalmente estoy bien. Rara vez salgo de mi camino para buscar cafeína. De vez en cuando, sin embargo, hay esas madrugadas después de una noche en las que la ecuación cambia.
¿Eres un halcón nocturno que codifica hasta altas horas de la noche, una persona matutina que se levanta temprano y de inmediato o sigues algún tipo de horario regular de oficina?
Solía codificar todo el tiempo hasta altas horas de la noche, pero ya no tanto. No solo el sueño es más valioso para mí ahora, sino que no tengo el lujo de dormir hasta tarde muy a menudo; por lo tanto, cambié mi horario antes. Pero sigo siendo un elevador lento: se necesita un tiempo para despertarme lo suficiente como para ser productivo en el teclado.
En su carrera, ¿alguna vez ha “pasado toda la noche” para lidiar con algo que era absolutamente necesario hacer?
Sí, a veces debido a una fecha límite que se avecina, pero más a menudo porque creo en la mentira, me digo a mí mismo que esta última cosa solo tomará unos minutos más. La mayoría de las veces, si dejo el problema para la mañana siguiente, ¡podría terminarlo en una cuarta parte del tiempo!
Describe algunas otras cosas que has hecho en tu carrera que podrían brindar a los lectores una base sobre lo que hace a un desarrollador.
La mayor parte de lo que he escrito es utilizado por personas que no comprenden la tecnología subyacente. Esto requiere la capacidad de comprender solicitudes vagas y convertirlas en requisitos, traducir las quejas en informes de errores y predecir las acciones de los usuarios que podrían dañar su aplicación y prevenirlas de manera proactiva. Trabajar en un sistema de administración de maestros que lanzó software educativo para estudiantes me enseñó de inmediato lo importante que es el software robusto y fácil de usar, especialmente cuando me pusieron en la sala con ellos y sentí su dolor cuando encontraron problemas. ¡No hay mayor motivación que hacer que sus usuarios se den la vuelta en su silla, lo miren y le pregunten qué se supone que deben hacer con ese gran y largo mensaje de error en la pantalla!
¿Cuál fue tu día de programación más estresante?
En 2002, construí un prototipo de una aplicación web de transacciones diarias en PHP para un emprendedor. Quería filmar un video promocional para la televisión nocturna para que la gente se interesara y se registrara para continuar financiando el proyecto, pero estaba agregando solicitudes de funciones más rápido de lo que podíamos hacer, dejando varios aspectos del sitio a medias o temporalmente difíciles. -codificado. Llevó en avión a un grupo de los que habíamos estado trabajando en el proyecto a Las Vegas, luego contrató a algunas modelos para que apuntaran a la pantalla mientras hablaba sobre este increíble programa que estaba tratando de vender. En el último minuto, y sin consultar a su personal técnico, salió y compró un televisor gigantesco para la demostración, no un monitor ni un proyector y una pantalla, ¡sino un televisor! Mi computadora portátil no tenía la tarjeta de video o los controladores gráficos adecuados para detectar la pantalla correctamente (dos de nosotros luchamos con ella durante 30 minutos), por lo que nos quedamos atrapados con una desagradable resolución de 640 × 480 en esta gran pantalla. Tuve que hacer varios cambios de última hora, mover algunas cosas por la pantalla y ocultar otras mientras esperaban el equipo de cámara y los modelos. ¡Estaba haciendo estos cambios mientras estaba sentada en el piso contra la pared de una sala de conferencias con una chica con poca ropa sentada justo frente a mí esperando su turno para levantarse y brincar frente a la pantalla!
¿Cotiza para trabajar con clientes? Si lo hace, sin revelar nada que lo haga sentir incómodo, ¿qué tipo de proceso utiliza?
A veces, cuando los clientes lo exigen. Pero luego le doy un precio mucho más alto de lo que creo que tomará. Mi preferencia es proporcionar un presupuesto y facturar por hora; luego comuníquese y facture con frecuencia para que el cliente comprenda el progreso y el costo.
¿Cómo se puede evitar que los clientes / administradores de programas / administradores ‘se deslicen en funciones’?
Cobrarles por ello. En serio, es así de simple. Les explico cómo las funciones que solicitan van más allá del alcance solicitado originalmente y por qué costará más. Cada cosa que hago va en una línea en la factura para que vean el costo de cada solicitud.
Describe una sesión de codificación típica para ti. ¿Cómo empieza? ¿Tomas descansos? ¿Tiene algún ritual / hábito que lo acompañe?
Elijo un proyecto y una tarea, y profundizo en ellos. A veces, para nuevos proyectos o problemas, tengo que detenerme y dibujar un diagrama de flujo o listas de números; el uso de lápiz / papel es bueno para esto, ya que activa una parte diferente del cerebro. Muchas veces construiré primero la interfaz de usuario, lo que me da una visión más clara de cómo se verá y actuará la versión final, lo que puede revelar consideraciones adicionales que deben codificarse. Otras veces, como para las correcciones de errores, primero comenzaré a agregar código de registro adicional para poder identificar el área del problema más rápido.
No tengo reglas establecidas para tiempos o rituales; a veces estoy en una racha y codifico directamente durante un par de horas, otras veces, el problema es más complejo y requiere descansos frecuentes para simplemente detenerme y pensar en el problema. Varía tanto como mis proyectos.
¿Escuchas música mientras codificas? Si es así, ¿puedes contarnos algunas pistas / artistas / actuaciones?
He usado Pandora para transmitir música durante mucho tiempo y tengo algunos canales personalizados diferentes que varían según el estado de ánimo en el que estoy, desde electrónica / trance hasta chill, techno / dubstep y celtic. Algunos de mis artistas favoritos incluyen Autograf, Jes, Blackmill, Amethystium, Nordlight, Trifonic, Lindsey Stirling, Celtic Woman, The Glitch Mob, Krewella y Celldweller.
¿Utiliza algún método o técnica como Agile, Scrum, Kanban, TDD? Si es así, ¿por qué? Si no es así, ¿por qué?
No elegí un método y luego busqué una herramienta para implementarlo, encontré Trello y me gustó para la gestión de proyectos, luego descubrí que Trello es una de las mejores herramientas Kanban. Entonces, supongo que uso Kanban, de manera suelta, no intencionalmente.
¿Rastrea los errores? Si es así, ¿qué recomiendas?
Probé algunas herramientas diferentes de seguimiento de errores de código abierto, basadas en la web y realmente no me gustó ninguna de ellas. Después de comenzar a usar Trello, implementé su función de “etiqueta” para marcar las “tarjetas” como “solicitudes de funciones” o “correcciones de errores”, etc.
La mayoría de los proyectos en los que trabajo son pequeños; si tuviera un gran equipo trabajando en un proyecto gigantesco, probablemente haría las cosas de manera muy diferente.
¿Qué hace un buen desarrollador de software?
¡Utiliza control de fuente! Hay tantos programadores que hacen copias de su código en otro directorio o comprimen los archivos fuente periódicamente. Empecé con JediVCS hace un par de décadas y muy pronto me di cuenta de los grandes beneficios de mirar hacia atrás en mi historial de cambios. He cambiado a sistemas de control de fuente más nuevos y ahora uso Git para CADA proyecto en el que trabajo.
¿Qué hace un mal desarrollador de software?
No formatea ni comenta su código. El código desordenado y sin comentarios no solo es difícil de mantener sino que hace que sea casi imposible que otro desarrollador se haga cargo, ¡a menos que la herramienta de desarrollo tenga un formateador de código como Delphi!
iPhone, Android, otros, ¿y por qué?
Me gusta la libertad de elección de opciones de configuración y aplicaciones que ofrecen los teléfonos Android, por lo que prefiero esa plataforma para mi uso personal. El único iPhone que tengo es un hand-me-down desactivado que utilizo para realizar pruebas. Sin embargo, tengo un iPad y me gusta mucho como tableta.
Para un desarrollador: ¿PC vs Mac? ¿Por qué?
Por la misma razón por la que elijo teléfonos con Android, he usado PC desde el primer día: libertad para elegir herramientas de hardware y software y configurarlas como desee. Conozco Windows y la línea de comandos con todos sus atajos y he recopilado muchos programas de utilidad a lo largo de los años. También cuestan mucho menos y es bastante sencillo agregar o reemplazar un disco duro o una tarjeta gráfica.
Sin embargo, agregué una Mac Mini a mi colección de hardware hace un par de años para poder desarrollar para la plataforma iOS y ha comenzado a crecer en mí. A medida que las capacidades del hardware se han incrementado y estandarizado y la necesidad de personalización ha disminuido, la línea se vuelve borrosa, especialmente porque puedo ejecutar Windows sobre Mac (pero no al revés).
¿Qué es lo único por lo que le gustaría ser recordado?
Que soy un hombre honesto que preferiría aceptar un recorte de tasas que engañar a un cliente.
¿Cuál es la mejor película de desarrollador / hacker / tech / geek?
Realmente disfruté mucho de la trilogía de Matrix. Se han producido muchas otras buenas películas desde entonces, pero esa se me viene a la cabeza.
¿Tiene un libro, producto o servicio que le gustaría mencionar?
Siempre estoy buscando expandir mi conjunto de habilidades y una de las cosas más difíciles de superar es si ha establecido un producto bueno y sólido o ha creado una gran biblioteca de código solo para darme cuenta de que los clientes y competidores se han mudado a interfaces más nuevas, o peor aún, otras plataformas! El libro que terminé de escribir recientemente, Fearless Cross-Platform Development with Delphi , aborda este problema mostrando a estos desarrolladores los matices de los dispositivos móviles, cómo comenzar con el desarrollo web y formas de adoptar los servicios REST. Las aplicaciones del mundo real se crean paso a paso y espero que eliminen las barreras que detienen a los desarrolladores que se sienten atascados con una solución solo para Windows. Si necesita admitir varias plataformas, ¡este libro es un excelente lugar para comenzar!
[ Debo señalar aquí que en realidad compré la versión impresa del libro de David en pre-pedido aunque me ofrecieron copias de revisión gratuitas. Es un libro excelente y lo revisaremos pronto con David. – IanB ]
¿Tiene un sitio web que la gente pueda visitar? Si es así, ¿cuál es?
Sí, corneliusconcepts.com para el negocio y corneliusconcepts.tech para mi blog.
Si usa Twitter, ¿cuál es su nombre de usuario de Twitter?
¿Cuál es su método preferido de contacto con los clientes potenciales?
La página de contacto en mi sitio web: https://corneliusconcepts.com/contact_us
Gracias por participar David, te lo agradezco mucho.
Volveré a hablar con David pronto en una entrevista en la que discutiremos su libro y sus motivaciones para escribirlo.