La más importante, evitar duplicaciones y repeticiones de código (DRY).
Simplicidad:
Evitar caer en el sobrediseño (explotar y diseñar todo un modelo de objetos para un problema que todavía no conocemos, pensando en "quizás en un futuro me van a pedir....").
Evitar centrarse únicamente en la idea de que "más es mejor". Evitar el agregar features o funcionalidades extras, si todavía no emprolijé o refactoricé lo que ya tenía implementado, a fin de que, no solo funcione, si no que cumpla con las ideas de calidad que mencionamos acá.
Objetivos
Trabajo Práctico 1
Construir una aplicación desktop no trivial, modelando un dominio medianamente complejo
Aprender conceptos básicos de interfaces de usuario
Modelar la interfaz de usuario como parte del código
Definir un layout simple
Poner en practica conceptos como modelo de aplicación, binding (binding bidireccional), controller
Trabajo Práctico 2
Construir una aplicación web, aprendiendo a manipular herramientas utilizadas en la industria actualmente: Framework javascript, plugins de "debugging" client side, Eclipse, comunicación con un servidor JSon
Introducirse y familiarizarse con:
HTML: tags comunes como <table>, <a>, <br>, etc
CSS: no se espera que sean expertos, ni que hagan una aplicación con estética profesional, pero sí se va a valorar el hecho de que hayan escrito algunos estilos, y jugado con la tecnología. Les recomendamos el uso de librerías que permiten dar estilos más rápidamente como Boostrap.
JS: en realidad javascript "con pinzas", porque no profundizamos en las características peculiares del lenguaje. Usaremos algun framework aceptado actualmente como angular para hacer una SPA, siempre manteniendo el espírutu de una aplicación mínima que siga los lineamientos básicos del framework.
Implementar y familiarizarse con las problemáticas de estado y comportamiento server-side:
Entender y aplicar la división de "controller / modelo / vista", a través del patrón MVC tanto en el modelo como en la vista
Entender cuando nos encontramos en la vista y cuando en el cliente y realizar la comunicación entre ambos de forma satisfactoria