JavaRush /Blog Java /Random-ES /Pausa para el café #83. Qué rasgos de carácter distinguen...

Pausa para el café #83. Qué rasgos de carácter distinguen a los programadores destacados. Guía de programación sencilla: funciones y métodos

Publicado en el grupo Random-ES

¿Qué rasgos de carácter distinguen a los programadores destacados?

Fuente: Hackernoon ¿Qué separa a los grandes programadores de los buenos? Descubrí dos rasgos de carácter que comparten los grandes programadores: eran consistentes y persistentes. Estos rasgos en sí mismos no son signos de genio y, si lo desea, cualquiera puede desarrollarlos y luego aplicarlos en su trabajo. Pausa para el café #83.  Qué rasgos de carácter distinguen a los programadores destacados.  Guía de programación sencilla: funciones y métodos - 1

1. Sea consistente

Los buenos programadores no programan ocasionalmente. Más bien, tienen un horario específico para mejorar sus conocimientos y habilidades durante su tiempo libre: antes o después del trabajo y los fines de semana. Por ejemplo, un programador que conozco dedica las dos primeras horas de su día (seis días a la semana) a proyectos o tareas de estudio personales. Esto no quiere decir que esas personas escriban código las 24 horas del día. Ellos, como todos nosotros, tienen tiempo para su vida, obligaciones e intereses personales. Pero son consistentes: la programación se ha convertido en su hábito. ¿Cómo puedes volverte consistente? Esto es lo que muchos de nosotros estamos tratando de lograr. Descubrí que hay varias formas de hacer esto. Primero, determine la cantidad de horas por semana que puede dedicar a la programación. Este número es su “kilometraje del programa” semanal. Como ex corredor de larga distancia, corría una cierta cantidad de millas cada semana. Esta fue mi carrera semanal. Ahora tengo mi experiencia en programación: esta es la cantidad de horas que dedico a programar cada semana. La mayoría de la gente descuida esta etapa. Saltan directamente al proyecto que quieren completar o al tema que quieren estudiar, sin pensar en cómo encontrarán el tiempo para hacerlo. Como resultado, trabajan de noche o 16 horas al día. Hay un problema con este enfoque: no es sostenible a largo plazo. Perfeccionar sus habilidades como programador no es algo que se haga en el transcurso de una semana o dos ocupadas. En cambio, tienes que trabajar continuamente en ello durante mucho tiempo. Por eso es tan importante identificar su experiencia en programación. Para hacer esto, considere usar un registro de tiempo para ver dónde y cómo pasa su tiempo. Toma una hoja de papel y anota todo lo que haces cada día y cuánto tiempo lo haces, incluyendo revisar las redes sociales o el correo electrónico durante cinco minutos. Esto le facilitará encontrar espacios libres en su agenda. Quizás incluso puedas tener un poco más de tiempo para hacer las tareas del hogar o mirar televisión. Luego podrá crear un plan de capacitación en programación que deberá seguir. Un plan de entrenamiento es una de las formas más efectivas de ser consistente. Te permite distribuir todos los detalles por adelantado. Todo lo que tienes que hacer es poner en práctica este plan todos los días. Mis planes de entrenamiento para correr describían cuántas millas necesitaba correr cada día y qué tan rápido debía correrlas. Ahora creo planes de entrenamiento programados que tienen el mismo propósito: me dicen lo que necesito hacer cada día. Al final del día, abro Evernote en mi computadora y hago un horario para el día siguiente. He aquí un ejemplo:
6:30 - 8:30 - Programación
  1. Revisión de la plataforma de tarjetas didácticas de Python Anki (20 minutos).
  2. Resolviendo el problema de datos de la nube de palabras.
Sigo este proceso a lo largo de mi jornada laboral: designo la cantidad de tiempo que dedicaré a una tarea y lo que quiero lograr en ese tiempo. También creo un plan de entrenamiento mensual. En él, incluyo tres cosas que quiero lograr, aprender o completar durante el próximo mes. Solía ​​hacer planes trimestrales. Pero luego descubrí que muchas cosas pueden cambiar en tres meses. Un plan mensual te permite tener tiempo suficiente para dar pasos significativos en tu entrenamiento.

2. Sea persistente

El segundo rasgo de los buenos programadores es la perseverancia. Analizan todas las opciones para resolver el problema y encuentran la respuesta. Este parece ser el secreto. Los grandes programadores que he conocido tienen una habilidad asombrosa para analizar problemas y encontrar diferentes soluciones a una situación difícil. En resumen, tenían un sistema para resolver problemas. Nunca tuve un sistema de solución en la escuela secundaria. Cada vez que me planteaban un problema en clase de matemáticas, me lanzaba directamente a él a toda velocidad. Luego seguí haciendo esto cuando comencé a programar. Ningún plan. No hay ningún sistema. No hay tiempo para pensar. Sin análisis. Como era de esperar, en ambos casos daba vueltas innecesariamente y chocaba constantemente con obstáculos. Ahora tengo un sistema de resolución de problemas que me ayuda a analizar un problema para encontrar diferentes opciones. Por ejemplo, el primer paso en mi proceso de resolución de problemas es plantear el problema. Este es el primero. Una vez que entiendo el problema, me concentro en cada uno de los siguientes pasos.
  • Análisis de datos de entrada y resultados esperados.
  • Creación de un algoritmo de acción.
  • Escribir pseudocódigo.
  • Resolviendo una versión simplificada del problema.
Espero que entiendas la idea. Puede que las etapas no sean fáciles, pero son manejables. Al resolver un problema difícil, nos convertimos en mejores personas. También infunde confianza. Una vez que solucionamos un problema difícil, estamos preparados para afrontar otros nuevos.

3. ¿Actitud ante los problemas?

En el camino para convertirnos en mejores programadores, hay algo más que debemos considerar: la actitud. Debe tener un nuevo enfoque ante los problemas y las ambigüedades. Un día le hice algunas preguntas a un desarrollador senior sobre un problema en el que estaba atrapado. Estaba desconcertado y decepcionado. Al principio, el desarrollador también estaba desconcertado. Sin embargo, su respuesta me sorprendió. "Vaya, ese es un problema interesante", dijo. Su interés se despertó por los detalles que descubrió. Eso no quiere decir que los grandes programadores no se queden atrapados en algún problema también. Se quedan estancados. Pero la diferencia está en la actitud. La lección que aprendí ese día fue la siguiente: los buenos programadores no tienen miedo de aventurarse hacia lo desconocido. Entienden que definitivamente aprenderán algo nuevo al estudiar este problema. Podemos aprender mucho estudiando a otros programadores. Pero, en última instancia, la responsabilidad recae en nosotros: debemos ponernos a trabajar todos los días y actuar.

Guía de programación sencilla: funciones y métodos

Fuente: DZone ¿Qué caracteriza a una función o método bueno? Esto requiere una combinación de factores, cada uno de los cuales importa. Veamos cuatro de los más importantes. Pausa para el café #83.  Qué rasgos de carácter distinguen a los programadores destacados.  Guía de programación sencilla: funciones y métodos - 2

nombre significativo

Las funciones deben tener nombres que describan su propósito o funcionalidad. Cuando una función tiene un nombre significativo, es fácil leer y comprender su propósito. Por ejemplo, si el propósito de la función es encontrar un cliente por ID, un buen nombre podría ser findCustomerById(id: String) . Otra opción podría ser findCustomer(id: String) . Aquí la función firma implica que se encuentra al comprador por su identificación. La palabra "encontrar" también implica que el comprador puede ser encontrado o no. Si el nombre de la función se cambia a getCustomer(id: String), entonces su significado cambia porque ahora no implica ninguna reversión; se encuentra el cliente o la función falla y posiblemente genera una excepción. Ambos nombres son nombres válidos para una función, pero tienen significados diferentes y, por lo tanto, sus implementaciones también deben ser diferentes.

Tan pocos parámetros como sea posible

Me gusta seguir la regla de tres. Esto significa que la función debe tener tres o menos parámetros. Cuando una función requiere más de tres parámetros, se debe reescribir y colocar los parámetros en un contenedor de datos, como su clase, clase de datos, objeto JavaScript, etc. Esta es una manera fácil de reducir la cantidad de parámetros y organizar datos dentro de una aplicación. Tomemos, por ejemplo, una función que tiene un comportamiento idéntico pero firmas diferentes:
fun addCustomer(
  firstname: String,
  lastname: String,
  streetAddress: String,
  city: String,
  zipCode: String
)
Aquí tienes otra opción:
data class Address(
  val street: String,
  val city: String,
  val zipCode: String,
  val streetNumber: String
)

data class Customer(
  val firstname: String,
  val lastname: String,
  val address: Address
)

fun addCustomer(customer: Customer)

La función hace lo que se espera.

Una función debe hacer lo que se espera de ella. Ni mas ni menos. Si la función se llama findAddress(latitud, longitud) , entonces debería encontrar la dirección en las coordenadas dadas o, si la dirección no se puede convertir a coordenadas, devolver Ninguno , nulo , Vacío o el tipo apropiado para el idioma dado. La función no debería hacer nada más, como buscar direcciones cercanas o crear registros de coordenadas. Una función puede tener efectos secundarios, como registros o análisis, pero son invisibles para la entrada y la salida.

La función se puede probar.

Las características deben diseñarse de manera que puedan probarse. En el ejemplo de código anterior, definí la función addCustomer , pero no definí ningún tipo de retorno, por lo que su capacidad de prueba es cuestionable. Por supuesto, se puede probar usando simulacros o espías dependiendo de cómo sea la implementación interna, esto se puede lograr simplemente proporcionando el tipo de retorno:
fun addCustomer(customer: Customer): Customer
Con esta firma de función, podemos devolver la entidad cliente agregada al componente llamado. También podemos comprobar si la función hace lo que se supone que debe hacer con este objeto cliente (es decir, asignarle un identificador único).
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION