Soy un estudiante de 19 años que REALMENTE disfruta de la programación, y espero obtener de sus años de experiencia aquí. En la actualidad, estoy estudiando PHP cada vez que tengo la oportunidad, y he estado durante unos 3 años, aunque nunca he tomado clases formales. Me encantaría algún día ser programador a tiempo completo y hacer una buena carrera en ello.
Mi pregunta para usted es esta: ¿Cuáles considera que son las características o rasgos distintivos de un programador profesional? Principalmente en el campo de PHP, pero otras calificaciones más generalizadas también son más que bienvenidas, ya que creo que PHP es más un lenguaje de aficionados y puede no ser el idioma de elección a los ojos de los posibles empleadores. Por favor corrígeme si estoy equivocado. Sobre todo, no quiero perder el tiempo en algo que no vale la pena.
Actualmente me siento bastante confiado en mi conocimiento de PHP como lenguaje, y sé que podría construir casi cualquier cosa que necesite y hacer que "funcione", pero siento una gran falta de conceptos de diseño y estructura de código. Incluso puedo escribir código orientado a objetos, pero en mi opinión personal, eso no vale la pena si no está bien organizado. Por esta razón, compré el libro de Matt Zandstra "Objetos, patrones y práctica de PHP" y lo he estado leyendo un poco todos los días.
De todos modos, estoy empezando a desviarme un poco aquí, así que volvamos a la pregunta original. ¿Qué consejo le darías a un aspirante a programador que quiere tener un impacto en este campo?
Además, en una nota al margen, he estado trabajando en un proyecto con un amigo que me daría una idea bastante clara de dónde estoy codificando. Voy a dar un enlace, no quiero que nadie sienta que estoy presionando o enviando spam aquí, así que no hagas clic si no quieres. Pero si también está interesado en dar algunos comentarios allí, puede ver el código en github. Soy conocido como The Craw allí.
fuente
stripslashes()
se requiere ;)Respuestas:
1. Código de alta calidad
Es fácil escribir código, pero es mucho más difícil escribir un código bueno y limpio. Y por bueno, quiero decir que el código legible que coincide con un estilo específico, se comenta lo suficiente pero no demasiado, tiene métodos cortos, nombres de variables autodocumentados, etc.
2. Amplio conocimiento
Difícilmente se puede llamar desarrollador profesional si solo conoce un lenguaje de programación. Comprender diferentes paradigmas (como orientado a objetos, funcional o reflexivo) también es imprescindible.
Además, como desarrollador web, uno debe conocer HTTP, JavaScript, SQL, REST y demasiadas cosas para enumerarlas aquí. Un desarrollador web profesional debería poder hacer un sitio web de escala media solo, con la excepción del diseño visual y los gráficos. No debería ser tan bueno como un sitio web creado por un equipo de personas altamente especializadas, pero aún así debería ser aceptable.
Conocer sus herramientas también es un requisito. Debe estar lo suficientemente familiarizado con el control de versiones, IDE, etc.
3. Experiencia sólida
No te vuelves profesional después de dos años de universidad. Alguien con diez años de experiencia profesional probablemente tendrá más posibilidades de ser llamado desarrollador profesional.
Por supuesto, hay diferentes tipos de experiencia. Trabajar en una pequeña empresa donde a nadie le importa la calidad del producto no es muy valioso.
Una experiencia en un proyecto a gran escala también es agradable. Es bastante fácil construir un sitio web pequeño, pero es mucho más difícil hacerlo bien cuando se trata de un sitio web que debe implementarse en una variedad de servidores, depender en gran medida del almacenamiento en caché, etc.
4. Motivación personal.
Si una persona está realmente motivada por el desarrollo de software, debería poder mostrarlo. Cuando entrevisto a una persona que dice ser apasionada de la programación y tiene 15 años de experiencia en desarrollo de software, pero no puede responder la simple pregunta: "Hábleme de su último proyecto personal relacionado con la programación", sé que hay algo mal con este candidato
Tenga proyectos de código abierto con código fuente disponibles para descargar. Tener un blog Participa en Stack Exchange. Todas esas cosas son valiosas cuando te presentas como un desarrollador profesional.
fuente
Llevo 8 años desarrollando PHP, desde los 16 años. Conozco personas de todas las edades, formas, tamaños y fondos. Estoy de acuerdo con la mayoría de los puntos de MainMa, pero permítanme agregar un poco de énfasis y algunos puntos propios.
Pasion y Motivacion
Esto es lo más importante con diferencia. Esfuérzate por ser el mejor (puedes serlo), y eventualmente lo serás. Se necesita verdadera pasión para resolver problemas y perfeccionar su oficio. Puedes decir en 5 segundos si alguien es apasionado. Cuando les haces una pregunta, ¿se involucran instantáneamente o dan una respuesta de dos palabras? Si recomienda algo, ¿regresan y se lo cuentan después?
Dedicación
El desarrollo de software es un oficio que puede llevar décadas dominar. Dicen que se necesitan 10.000 horas para dominar algo, pero creo que cuando se trabaja con un objetivo en movimiento como el desarrollo de software, es mucho más. Si trabaja a tiempo completo, alcanzará esa marca cada pocos años para que pueda reinventarse constantemente. Ser capaz de seguir con algo durante este tiempo requiere una enorme cantidad de paciencia y, de nuevo, pasión. Tenga cuidado con las personas con 10/15 años de experiencia que no son increíbles. No son dedicados, y probablemente perdieron la pasión hace una década. 15 años de experiencia no es lo mismo que 1 año de experiencia 15 veces.
Hambre por el conocimiento
Se necesita aprendizaje constante y derrota. Debería ser francamente vergonzoso / deprimente mirar el código del año anterior. Si no es así, entonces no estás aprendiendo lo suficiente. Encuentra a las personas que están en la cima y aprende todo lo que puedas de ellos. Por lo general, son contribuyentes clave de código abierto (para desarrolladores de PHP: Symfony, Zend, PHPUnit / Behat / etc.). Ellos son los que entrenan a todos los demás. Cuando alguien te dice que X es mejor que Y, haz tu propia investigación. Por lo general, son ovejas a quienes se les dijo eso hace 5 años y aún lo predican. De hecho, este sitio es un recurso increíble. Encuentro una gama muy amplia de contenido que generalmente conduce a las mismas personas o directores clave (Martin Fowler, Tío Bob, etc., DDD, etc.)
PHP apesta
Lo que sea. Si la gente quiere fastidiarte / PHP, no dejes que te deprima. Si sigue los principios clave de desarrollo y realmente construye software , continúe. PHP ha recorrido un largo camino y no es el patito feo que solía ser. Aprende de otros idiomas y juega con otros de vez en cuando. Puede que te gusten más, o puede que no. De cualquier manera, ampliará su conocimiento y le presentará nuevos patrones o prácticas que no son populares o incluso posibles en PHP.
Red
Comienza a construir una marca por ti mismo. Blog. Asistir a reuniones / conferencias. Contacta a otros en Twitter. Encuentre una comunidad / nicho para interactuar. Contribuir a proyectos de código abierto. La programación es un trabajo muy social ahora. No te aísles y haz conocer tu trabajo. Cuanto antes haga esto, antes establecerá relaciones con grandes desarrolladores que lo tomarán bajo su protección, y antes encontrará clientes / empleadores decentes en lugar de los malos para los que todos los demás trabajan.
fuente
Además de lo que han escrito Adrian Schneider y MainMa (que son buenos), creo que un sello distintivo de un programador profesional, independientemente del idioma, es la constatación de que el código tiene una vida media extremadamente larga , mucho más larga que nosotros comúnmente se da cuenta o espera al escribirlo.
Sí, hay casos extremos de sistemas que datan de hace 50 años todavía en uso activo (las aplicaciones críticas para el negocio escritas en COBOL en los años 1960 a 1970 todavía se usan), pero no es necesario que sea tan extremo. Por supuesto, en el otro extremo está el código ad-hoc escrito para ejecutarse solo una vez. Una de las aplicaciones en las que trabajo es básicamente una aplicación CRUD basada en la web. Muchas vistas de tabla, algunas vistas especializadas, algunos informes, algunas probabilidades y extremos circundantes. Realmente, nada muy elegante en el gran esquema de las cosas. Con algunas de las clases principales y el código de la base de datos que data de más de 10 añosActualmente, creo que encaja bastante bien en la mediana. El lenguaje y el marco (C # .NET, en este caso particular), por supuesto, han evolucionado a lo largo de ese tiempo, y las personas involucradas han ganado experiencia en su uso, pero el código antiguo permanece en su lugar porque funciona y funciona lo suficientemente bien. cambia de vez en cuando, pero con mayor frecuencia solo proporciona la base sobre la que descansa todo el sistema. Mi empleo anterior se centró en reemplazar un sistema antiguo diseñado para un solo usuario y con partes escritas hace más de 15 años con algo un poco más moderno. Déjame reformular eso. Algunas de las partes más importantes del sistema me encargaron reemplazar Windows 3.0 anterior.
Un programador profesional, al escribir código que no sea explícitamente código desechable diseñado para resolver un problema muy específico de una sola vez, considerará el hecho de que el código que escribe hoy probablemente permanecerá en alguna forma durante muchos años. Si es una pieza central del software, es probable que permanezca durante una parte significativa de la vida útil del producto. Es probable que un programador necesite mantenimiento en el futuro y no tenga nada que ver con el equipo de desarrollo original. ¡Diablos, incluso podría necesitar mantenimiento por parte del programador que lo escribió originalmente! (Si no entiende eso, considere el dicho de que el código que escribió hace seis meses también podría haber sido escrito por otra persona , luego intente seis años en lugar de seis meses).
De esto surge la constatación de que el código debe ser fácil de leer y comprender , fácil de modificar y fácil de ampliar para adaptarse a los nuevos usos o cumplir con los requisitos cambiantes. También debe ser fácil de depurar , así como preferiblemente fácil de seguir sin ejecutarlo a través de un depurador interactivo.
fuente