8

Soy un estudiante de segundo año de ingeniería informática en Etiopía, África. Hemos tomado C y C++ y me he enseñado yo mismo HTML, CSS, PHP (framework cakePHP también) y pequeños javascript, JQUERY y mySQL para desarrollar sistemas pequeños como blog. Pero quiero construir sistemas grandes que sean seguros y robustos. Me siento muy honrado de ver desarrolladores muy inteligentes y experimentados aquí en SO. Estoy vacilando sobre qué seguir al principio, es decir (ASP.NET o PHP) y qué otros idiomas o sistemas debo aprender para que eso suceda. Gracias por adelantado.Soy un aspirante a desarrollador que quiere construir sistemas grandes como PayPal. ¿Qué camino debo seguir?

PS. Puedo manejar cualquier tipo de Matemáticas.

+1

Pruebe JavaServer Pages una vez ... pero váyase antes de que sea difícil. Prueba Ruby on Rails una vez ... pero vete antes de que te suavice. ¡Y recuerde usar protector solar! :-) –

Respuesta

6

me siento como un anciano por decir eso, pero con el tiempo, se dará cuenta, los dos mayores retos en el desarrollo de software son:

  • la reutilización de código - Ser capaz de escribir código, es decir reutilizable Ni siquiera es obvio que el código sea reutilizable con el tiempo dentro del mismo software para el que fue escrito para. Es muy probable que al abrir el código que escribió hace un tiempo, se enfrente a sí mismo después de haber desperdiciado unas horas tratando de modificarlo y decida no reutilizarlo en la próxima versión del software, sino que haga una reescritura. Es un verdadero arte escribir código, que se puede reutilizar y del mismo modo, es un verdadero arte para reutilizar el código. Los desarrolladores de software siempre quieren reescribir y reinventar la rueda. Es divertido. Pero no te llevará muy lejos.
  • Uso real - No es obvio para escribir software, que es de uso. Porque los desarrolladores de software tienen expectativas de software completamente diferentes a las de los usuarios de sus aplicaciones. Tendemos a sobre-diseñar, sobre-optimizar y complicar demasiado las cosas, para incluir demasiadas características, to consider too many what-ifs. Preferimos centrarnos en las partes interesantes, en lugar de ensuciarnos las manos con buenas interfaces de usuario u otros problemas aburridos, lentos y poco gratificantes. Producimos mucho que nadie quiere o puede usar.

¿Cómo responde eso a tu pregunta?

  • Reutilización del código: Usted necesita imperiosamente dominar esto. Familiarícese con muchas bibliotecas y marcos. Diseñe una aplicación y luego intente conectarla utilizando componentes y arquitecturas existentes. Escribir el código de pegamento es la tarea más difícil e importante. Además, en su aspiración de crear un sistema tan grande, seleccione las tareas separadas del sistema e intente escribir sus propios componentes dirigidos a esas tareas individuales. Intenta hacer que cada uno de ellos sea robusto y reutilizable. No intente construir un sistema completo a la vez. Tú fallarás. Probablemente aprendas algo, tal vez mucho, pero fallarás (o serás un genio loco).
  • Uso real: Bueno, es muy ambicioso querer crear algo tan grande como PayPal, pero trate de no crear algo grande. Intenta crear algo bueno Es bueno porque es útil, utilizable y usado. Verás a tiempo, es bastante difícil. Intenta crear algo que otros usen y estén contentos con él.

Concéntrese en mejorar en esos dos. Elija las bibliotecas/marcos/plataformas/idiomas que desee y considere adecuados para realizar sus tareas. En mi humilde opinión, PHP no es un buen idioma para seguir, por una serie de razones, pero al final, debe usar lo que le gusta y sentirse bien. Yo personalmente uso haXe para mis proyectos. Tal vez quieras intentarlo. Al final, creo que deberías probar muchos lenguajes y marcos para comprender diferentes conceptos. La mayoría de las cosas que aprenderás, trascenderán los lenguajes y marcos concretos, pero solo podrás aprenderlos conociéndolos realmente bien.

Antes de terminar, me gustaría apuntar a mi 5 commandments;)

Greetz
back2dos

1

Creo que no es una cuestión de lenguaje o sistemas. Si usted es un buen programador, adoptará y se adaptará fácilmente a cualquier tipo de lenguaje o marco de programación que haya.

Para el tipo de sistema que desea programar, hay muchos marcos a considerar. todos con sus pros y contras. Sugeriría que intentes aprender de personas que ya lo hayan hecho antes, vean lo que usan las grandes compañías y estudien más.

2

PayPal no comenzó en grande: creció mucho con el tiempo porque tuvieron éxito. Y no tuvieron éxito debido a una elección particular de plataforma. Tuvieron éxito debido a su modelo comercial, debido a los servicios que brindaban y a los clientes que atraían.

Así que aprenda ASP o PHP o ambos. Son casi igualmente útiles para un programador. Y casi igualmente capaz de respaldar sistemas altamente escalables.

+0

Estoy muy cómodo con PHP. ¿Es realmente capaz como ASP.NET? Como no está compilado, siento que no puede hacer algunas de las cosas que hace ASP. – coderMonkey

+0

PHP y ASP proporcionan perspectivas ligeramente diferentes. ASP.NET, con su separación de código y HTML, le permite crear sistemas grandes y aún mantenibles; El código PHP tiende a perder el control con el tamaño. Por otro lado, PHP te permite obtener resultados muy rápidamente. –

2

Comience con lo que sabe. Los grandes problemas que estás viendo son realmente una distracción para alguien que comienza desde cero.

  1. Encontrar un problema que la gente necesita una solución para
  2. Escribir la cosa más simple que puede funcionar utilizando lo que ya sabe
  3. Mantener Es muchísimo mejor
  4. Worry about scaling later
+0

buena idea. Me preocupa mucho sobre escalar ahora. – coderMonkey

2

sistemas grandes son todo sobre el acoplamiento entre componentes y pruebas.

Se supone que cursos como "arquitectura de software" e "ingeniería de software" son buenos para enseñarle a diseñar sistemas (obtener el acoplamiento y la comunicación entre los componentes correctamente). Estaba un poco decepcionado con el enfoque de mi universidad en esto, pero al menos te ayudará a pensar en el tipo correcto de cosas.

Luego, para probar, comience a buscar en una metodología test driven development. La cobertura de prueba es muy importante cuando la solidez y la seguridad son una preocupación.

Por último, incluso podría recomendar mirar Haskell solo por tener en cuenta un modo de operación más "formal". Haskell te obliga más o menos a ser más formal acerca de cómo expresar problemas a través de su sistema de tipos. (También, si realmente te gusta matemáticas avanzadas es probable que amas Haskell :))

+0

muchas gracias. eso fue útil. – coderMonkey

0
  • Si tiene la intención de desarrollar un proyecto en solitario, PHP está bien
  • Si usted necesita para construir un equipo de desarrolladores, lo Aconsejaría Java

Además del idioma, no se olvide de la parte de SSL/cifrado/seguridad.

Paypal, al igual que todos los sistemas de pago, necesita un plan de seguridad fuerte para ser implementadas con el fin de garantizar (lo más posible)

  • el servidor es quien pretende ser (certificado firmado por una autoridad de conocimientos)
  • los datos no pueden ser (prácticamente) espiados en el camino browser <-> server

Ver HTTPs, SSL

+0

Voy a verificar esas cosas. – coderMonkey

2

Aquí hay dos objetivos. Abordarlos de forma individual:

La construcción de grandes sistemas complejos:

grandes sistemas complejos se producen como resultado de dos cosas:

  • Una visión de algún producto o servicio que es útil y apelaciones a un gran mercado
  • Un plan de negocios para llegar desde la zona cero hasta completar su visión

Lograr esto puede significar asociarse con otras personas. Claramente, usted está interesado en el aspecto técnico de las cosas: esta es su fortaleza. Es posible que necesite encontrar otras personas que compartan su visión para ayudar a a gestionar el lado no técnico de las cosas. Esto incluiría cosas como recaudar capital, promoción y comercialización. Cada miembro de su grupo debe traer una fuerza de núcleo diferente.

Como líder técnico, necesita una comprensión firme de la arquitectura de aplicación . Esto es menos un problema de habilidades de programación de tuercas y tornillos que , es comprender cómo se pueden aprovechar varios patrones de diseño y tecnologías para lograr sus objetivos . Aprende un poco sobre tantos marcos y patrones de diseño como puedas. No necesita convertirse en un experto en ninguno de ellos hasta que tenga una idea de las fortalezas y la debilidad de cada uno con respecto a la aplicación que está buscando compilación.

La construcción de habilidades generales CS

teoría nunca se estropea. Obtenga una sólida formación en el lado de la ciencia de su programa de ingeniería informática . Tome cursos sobre teoría del lenguaje, matemáticas discretas, diseño/análisis de algoritmos, arquitectura de la computadora, arquitectura de aplicaciones, etc. Esto le servirá para el resto de su carrera.

Luego está la parte práctica del problema: qué idiomas, tecnologías y marcos debe aprender ahora para aprovechar su carrera (con la esperanza de hacer algo realmente grande). Para este fin ya estás en el camino correcto. Sé curioso, exprésate a tantas herramientas como puedas. Cuantas más cosas conozca, más fácil es aprender nuevas. Tómese el tiempo para comprender el modelo en el que se basa cada herramienta y cómo es similar pero diferente de otras herramientas que ha utilizado.

Tenga en cuenta que los lenguajes de programación son solo las "herramientas del oficio", no el comercio en sí. Con el tiempo, usted encontrará nuevas herramientas y descartará otras.

Poniendo todo junto

Deje que su imaginación trabaje en la creación de esa "aplicación asesina". Haz amigos con personas que tienen conjuntos de habilidades que complementan los tuyos. Hablar y soñar con grandes cosas juntos.

trabajo en el desarrollo de sus habilidades básicas CS

ganar un poco de exposición a la mayor cantidad de herramientas y lenguajes a medida que se sienta cómodo diferentes. Obtenga un buen conocimiento práctico de los pocos que le resulten más útiles para lo que esté haciendo en el momento . Obtener el dominio de cualquier herramienta puede llevar años, pero deje que su sea su guía. Esté preparado para permitir que su conjunto de herramientas técnicas evolucione con el tiempo.

+0

Esta es, de lejos, la mejor respuesta que he recibido. Muchas gracias NealB !! – coderMonkey

Cuestiones relacionadas