La habilidad principal del ganador generalmente es integrar varias API de una manera novedosa y poner una GUI frente a ellas
Un diseñador en el equipo tiende a hacer una gran diferencia. Sin embargo, el dominio de la codificación es vital para que esos diseños funcionen.
Las habilidades que necesita implican poder construir algo desde cero, comprender cómo unir múltiples API y cómo tener todo listo para la demostración en menos de 24 horas.
Solo necesita suficientes funciones para una demostración de 2 minutos. 🙂
- ¿Qué hackeo de bootcamp en San Francisco sugerirías y por qué?
- ¿Qué herramientas se pueden usar como alternativa de Burp Suite?
- ¿Capturaría Firesheep sesiones HTTP de personas conectadas a mi red doméstica protegida?
- ¿Cuáles son algunos casos famosos de piratería informática?
- ¿De qué se trata HackerOne y cómo funciona?
Por lo tanto, debe comprender estos conceptos:
- Depuración de API REST
- JSON
- JSONP
- oAuth: realmente necesita comprender esto, ya que sus integraciones de API dependerán en gran medida de oAuth y existen diferencias sutiles
- Algunos marcos frontales como Bootstrap
- Consultas de bases de datos: querrá conocer SQL y NoSQL
- JavaScript, CSS, jQuery: conocimiento de nivel experto y sin excepciones
- Protocolo HTTP para que pueda depurar eficazmente su llamada API remota
- Autenticación web en general y cosas como cómo obtener credenciales de autenticación codificadas en base64
- Tener una manera de construir cosas rápido. Por ejemplo, Aprender, probar y depurar API y Mobile App Builder para HTML5, iOS, iPhone, Android y Windows Phone me ahorra días de tiempo.
- Cómo usar Git
- Cómo interactuar desde la línea de comandos con Github. Mi preferencia es BItbucket, pero usar el control de versiones es imprescindible ya que su código cambiará muy rápidamente. Su envío deberá cargarse en un repositorio para la revisión del código y no querrá tener que aprender cómo enviar un código como ese en el evento.
- Cómo configurar el entorno de tiempo de ejecución para su código en AWS. Debe saber cómo abrir una nueva instancia hasta el punto de poder acceder a su código desde la web en un dominio en el puerto 80. Descubrir perfiles de seguridad, puntos finales, configuración SSH, cómo cambiar números de puerto y otras cosas similares eso consumirá demasiado tiempo en el evento.
- Comprenda a sus administradores de paquetes y cómo arreglar las cosas. Por ejemplo, cómo instalar un paquete .deb local, cómo usar npm, cómo instalar los paquetes de Ruby y Python incluso si actualmente no usa ninguno de ellos.
- Cómo configurar su entorno de desarrollo en hardware de reemplazo.
Aquí hay algunas API específicas que uso a menudo:
- Gorjeo
- Twilio
- Evernote
- Salesforce (su seguridad lo molestará y tomará más tiempo de lo esperado debido a eso)
- Soundcloud
- LinkedIn (como ejemplo de una API particularmente “interesante”)
- PayPal (no todo es RESTful y sus API antiguas pueden ser muy dolorosas)
- Dropbox
Si los conoce, puede construir muchas cosas que pueden ganar.
Puede crear una aplicación nativa, pero las tecnologías web tienen un conjunto más rico de código disponible. Cuanto más código existente pueda usar, menos tendrá que codificarse y eso es crítico en un evento de tiempo limitado como un hackathon. Si debe crear una aplicación nativa, haga un backend REST que haga el trabajo pesado y conéctese desde su aplicación nativa.
Por cierto, recomiendo familiarizarse con BDD y TDD. Inicialmente, es más lento codificar de esta manera, pero mi código simplemente funciona. Si tiene un conjunto de pruebas, puede codificar hasta la fecha límite sin el estrés de que su aplicación se rompa.
¡Comprométete temprano y comprométete a menudo!
Hablando de flujo de trabajo, uso vim con un montón de complementos. Uno de mis complementos es Fugitive, que se integra con Git. Escribo un poco de código en una sección de un archivo (o varios archivos relacionados con ese método), lo guardo con: Gwrite, que ejecuta mis pruebas y realiza mis cambios, y luego inmediatamente: Gcommitirlo. En mi mensaje de confirmación, explico por qué escribí ese código y por qué elegí ese enfoque y no otros que podrían haber funcionado. Esto es muy importante para que no tenga que explicar varias secciones de código no relacionado.
Mis confirmaciones también se almacenan en mi repositorio de bitbucket. Tenía una computadora portátil literalmente quemada en humo unos minutos antes del tiempo de envío. Sí, tengo testigos. Se aplica la ley de Murphy. Una vez tuve que reconstruir todo mi entorno mientras estaba en línea para presentarme en el hackathon TechCrunch Disrupt porque algo salió mal. Teniendo en cuenta que este truco en particular involucraba scripts que se ejecutaban en Windows … Ugh … NO ES DIVERTIDO. No intentes eso en casa.
Puede confiar en que su computadora portátil local estará disponible o escribir git push. 😉
Esos mensajes de confirmación detallados serán muy útiles al día siguiente cuando tenga falta de sueño y no pueda entender su trabajo anterior y por qué eligió no hacer algo que parece obvio para sus ojos somnolientos.
Última advertencia
Intentar trabajar sin control de versiones rara vez terminará bien.