Diseño Centrado en el Programador vs Diseño Centrado en el Usuario

11. September 2010 00:03 by Oscar.SS in Experiencia Usuario, Formación  //  Tags: ,   //   Comments (0)

La primera vez que escuché mencionar el termino usabilidad tuve que ir corriendo a Google y pasarme un buen rato leyendo. Después, cuando me introduje un poco más en este mundillo vinieron otros términos como experiencia de usuario, arquitectura de la información, accesibilidad, diseño centrado en el usuario, etc.

Lo cierto es que para mí ha sido toda una revelación. ¡Ahora no entiendo como desarrollaba antes las aplicaciones sin conocer todo esto!. De hecho, cuando veo proyectos en los que participé antes de conocer la usabilidad y los comparo con los que ahora desarrollo...¡no hay color!.

Lo normal, cuando estamos en la oficina trabajando como desarrolladores, analistas o jefes de proyecto (este tema atañe a todos los perfiles), es poner el foco en uno mismo (Diseño Centrado en el Programador). Es decir, que la idea básica es entregar a tiempo el producto o tareas, que compile y no tenga errores de programación de bulto y por encima de todo...¡NO COMPLICARME LA VIDA!.

Ahora bien, ¿que ocurre con el producto que le entregamos al usuario?. Y no digo al cliente, me refiero al usuario final, que es el que va utilizar la aplicación y el que va a determinar el éxito o el fracaso de la misma en función de su experiencia al interactuar con ella.

Como regla general, podemos decir que siempre que un desarrollador no se complica la vida se la está complicando al usuario. Sin embargo, lo contrario no es necesariamente cierto. Muchas veces con pequeñas premisas, pequeños cambios, facilitamos las tareas y el uso de la aplicación para el usuario sin que por ello nosotros hayamos tenido que hacer el pino puente sobre el teclado.

Diseño Centrado en el Programador

                                                              

Usabilidad al pelar una naranja
Diseño Centrado en el Programador

                                                              

Diseño Centrado en el Usuario

 

Este no es un blog sobre usabilidad ni pretende serlo. Pero me parece importante, mejor dicho, imprescindible que todo profesional que se dedique al desarrollo de aplicaciones tenga unas nociones básicas sobre los conceptos mencionados anteriormente. Sobre todo cuando, como ocurre en la mayoría de las empresas, no existe un responsable que se dedique profesionalmente a tales funciones.

Os puedo decir, que el esfuerzo de aprendizaje es mínimo y los resultados son espectaculares. Resumiendo mucho se podría decir que las únicas habilidades necesarias son el sentido común y la capacidad de abstraerse y poner el foco en el usuario. ¡Hay que cambiar el chip!.

Cuando estés diseñando una pantalla, cuando pienses donde pongo este botón, que mensaje escribo si hay un error, como muestro los datos de un informe, etc y etc...¡Aplica el sentido común y piensa en que le gustaría al usuario final!. Que a fin de cuentas, es para quién se desarrollan la aplicaciones. No para tu jefe, ni para el cliente, ni para nadie más que el que lo usa. Repito...¡hay que cambiar el chip!.

Y por cierto, la usabilidad está en todas partes, no solo en el desarrollo de aplicaciones para la web. Desde un dispositivo con pantalla táctil hasta unas tijeras ergonómicas o en la forma de pelar una naranja.

A continuación os dejo un libro con el que podréis entrar en materia poco a poco. El título del mismo, es lo que dicen a gritos los usuarios de tus aplicaciones...¡no me hagas pensar!.


Y Google, ¿cómo lo haría?

Título: No me hagas pensar
Autor: Steve Krug
Editorial: Pearson. Prentice Hall
I.S.B.N.: 9788483222867
Fecha publicación: 2006
Nº páginas: 200
Nº capítulos: 12
Precio: 29.15 euros.


 

Normalmente cuando presento un libro hago una pequeña evaluación personal del mismo resaltando sus puntos fuertes y débiles. Pero en esta ocasión me lo he saltado porque el libro no tiene crítica alguna. Es simple, es claro, es corto, es fácil de leer y sobre todo...¡es usable!.

 

Consultas SQL sobre una tabla

9. September 2010 19:27 by Oscar.SS in Desarrollo Empresarial  //  Tags:   //   Comments (0)

Estaba haciendo limpieza de archivos en el ordenata (muy recomendable de vez en cuando) y me he encontrado unos cuantos scripts de SQL de cuando yo intentaba aprender todo esto de las consultas a bases de datos. Y me he dicho, en lugar de borrarlos...¿por qué no los publico?...¡lo mismo le son de utilidad a álguien!...¡como lo fueron para mí en su día!.

Así que en este artículo y el siguiente colocaré el código de estos scripts SQL que pueden servir de consulta rápida por si algo se olvida. También, al final de cada artículo dejaré para descarga los archivos de scripts por si queréis ejecutarlos en vuestra máquina.

Las consultas atacan la conocida base de datos Northwind de ejemplo de Microsoft y que podéis descargar gratuitamente en este enlace.

Antes de comenzar con el código mencionar que estos ejemplos solo abarcan las consultas SELECT del Lenguaje de Manipulación de Datos (DML) o ingles Data Definition Language. En el código podremos encontrar algunos elementos únicos del lenguaje Transact SQL y que por tanto no se encuentran en el estándar ANSI de SQL.

 

--------------------------------------------------------------------------------------------------------------------
--SINTAXIS COMPLETA DE LA INSTRUCCIÓN SELECT--
--------------------------------------------------------------------------------------------------------------------

SELECT [ALL DISTINCT] [* / ListaColumnas] AS NombreNuevo,  
        Funciones Agregación [COUNT(* / ListaColumnas), MAX, MIN, SUM, 
AVG]
FROM NombreTabla
WHERE NombreColumna [<, >, ,..., BETWEEN ANDLIKE % / _, IS (NOTNULLIN]
GROUP BY ListaColumnas(Funciones Agregación)
HAVING Condiciones Grupos
ORDER BY ListaColumnas [ASC DESC]


--------------------------------------------------------------------------------------------------------------------
--INSTRUCCIONES SELECT ELEMENTALES--
--------------------------------------------------------------------------------------------------------------------

--1. Mostrar todas (*) las columnas de una tabla (from).
select from dbo.Products

--2. Mostrar solo las columnas especificadas.
select ProductID, ProductName, UnitPrice, UnitsInStock from dbo.Products

--3. Incluir (ALL) filas duplicadas (valor predeterminado).
select all from dbo.Products --Es exactamente lo mismo que la instrucción 1.

--4. No incluir (DISTINCT) filas duplicadas.
select distinct from dbo.Products

--5. Renombrar (AS) columnas.
select ProductID as Identificador, ProductName as [Nombre Producto], UnitPrice as [Precio Unidad],
UnitsInStock 
as UnidadesStock from dbo.Products

--6. Renombrar (AS) tablas.
select from dbo.Products as Productos

--------------------------------------------------------------------------------------------------------------------
--INSTRUCCIONES WHERE (Condiciones en Select)--
--------------------------------------------------------------------------------------------------------------------

--1. Condiciones con expresiones matemáticas boleanas (>, <, =, >=, <=, != ó <>).
    --(Mostrar solo los productos con un precio mayor que 25)
select from dbo.Products
where UnitPrice > 25

    
--(Mostrar el nombre de los productos con precio igual a 21)
select ProductName as Nombre from dbo.Products
where UnitPrice 21

--2. Condiciones de intervalos numéricos (BETWEEN AND).
    --(Mostrar los productos cuyo precio esta entre 25 y 35)
select from Products
where UnitPrice between 25 and 35

--3. Condiciones de cadenas de caracteres (LIKE _ , %).
    --(Mostrar todos los datos de los clientes cuyo nombre comienza por A)
select  from Customers
where ContactName like 'A%'  -- El '%' significa cualquier cadena de caracteres.

    --(Mostrar los Paises que comienzan por U y después un solo caracter).
select Country as Paises from Customers
where Country like 'U_'  --El '_' significa cualquier caracter.

--4. Mostrar solamente las filas con valores nulos (IS NULL) en una columna determinada.
select from dbo.Customers
where Region is null

--5. Mostrar solamente las filas con valores no nulos (IS NOT NULL) en una columna determinada.
select from Customers
where Fax is not null

--6. Mostrar valores determinados (IN).
select from Products
where UnitPrice in(10203040)

--7. Mostrar valores condicionalmente en función de un grupo de valores de una columna (ANY/SOME)
    --La clausula ANY es equivalente a SOME.
    --Cuando tenemos una consulta que devuelve un conjunto de resultados podemos necesitar compararlos
    --todos ellos y de una vez con otro valor. Lo mejor es ver un ejemplo de estas expresiones:

--   Condición          Expresión Equivalente
-- x > ANY (3, 5, 9)         x > 3
-- x > ANY (1, 2)            x > 1
-- x < ANY (1, 2)            x < 2
-- x = ANY (1, 2)           (x = 1) OR (x = 2)
-- x <> ANY (1, 2)          (x <> 1) OR (x <> 2)

    --Mostrar los productos cuando su precio es mayor que los precios de los detalles 
    --de pedidos, cuando la cantidad del pedido es 130.
   
select from Products
where UnitPrice > ANY
    
(select UnitPrice from [Order Details] where Quantity 130-- Esta consulta devuelve 18.00 y 35.25.
    
    --Por lo tanto solo se mostrarán productos cuyo precio sea mayor que 18.00, incluido 35.25 si lo hubiera.
   
    
--8. Con la clausula ALL podemos hacer lo mismo pero en este caso devolverá todos los productos 
     --cuyo precio sea mayor que todos los precios de los detalles de pedidos de 130. Es decir, mayor que
     --todos los valores devueltos por la segunda consulta (18.00, 35.25), o lo que es lo mismo,
     --mayor que 35.25

select from Products
where UnitPrice > ALL
    
(select UnitPrice from [Order Details] where Quantity 130)

--9. Comprobar la existencia de un registro.
    
    --Mostrar los empleados cuya ciudad también exista en la tabla de empleados.

select LastName, FirstName, City from Employees E
where exists
    
(select from Customers C
    
where E.City C.City)


--------------------------------------------------------------------------------------------------------------------
--INTRUCCIONES ORDER BY (Ordenación en Select)--
--------------------------------------------------------------------------------------------------------------------

--1. Orden ascendente de filas.
    --(Tabla Productos ordenada por el precio de menor a mayor).
select from dbo.Products 
order by UnitPrice asc 

-- ASC es el valor predeterminado, se puede omitir.
select from Products 
order by UnitPrice

--2. Orden descendente de filas.
select from Products 
order by UnitsInStock desc

--3. Combinaciones de orden en distintas filas.
select ProductID, ProductName, UnitPrice, UnitsInStock from dbo.Products
order by UnitPrice, UnitsInStock desc

--------------------------------------------------------------------------------------------------------------------
--SUBCONSULTAS EN SELECT O CONSULTAS ANIDADAS--
--------------------------------------------------------------------------------------------------------------------

-- Una subconsulta es una consulta SELECT dentro de un WHERE en una consulta previa SELECT. Es decir, realizamos 
-- dentro de una consulta, otra consulta para mostrar datos especificos de la primera consulta. Ejemplos:

--1. Mostrar todos los empleados que tengan el mismo sexo (TitleOfCourtesy) que el empleado 9 (EmployeeID).
select from dbo.Employees
where TitleOfCourtesy (select TitleOfCourtesy from dbo.Employees 
                            
where EmployeeID 9--Esta subconsulta devuelve 'Ms'.

--2. Mostrar todos los productos de las categorías (bdo.Categories) bebidas (Beverages) y condimentos (Condiments).
select from dbo.Products
where CategoryID in (select CategoryID from dbo.Categories
                    
where CategoryName in ('Beverages','Condiments')) --Esta subconsulta devuelve 1 y 2.

--------------------------------------------------------------------------------------------------------------------
--FUNCIONES DE AGREGACIÓN EN SELECT--
--------------------------------------------------------------------------------------------------------------------

--1. Obtener el número de filas de una tabla --> COUNT(*).
select count(*) from dbo.Customers --Se cuentan todos los valores, incluidos los NULL.

-- Se puede dar nombre a esta columna de la siguiente forma.
select count(*) as [Número de filas] from dbo.Customers

--2. Obtener el múmero de filas de una columna determinada --> COUNT(NombreColumna).
select count(Region) as [NºFilas no NULL]from dbo.Customers --No se incluyen los valores NULL.

--3. Obtener número de filas para varias columnas determinadas.
select count(Region) as FilasNoNULL_Region, count(Fax) as FilasNoNULL_Fax from dbo.Customers

--4. Obtener el valor máximo (MAX) y mínimo (MIN) de una columna.
select max(UnitPrice) as [Precio máximo], min(UnitsInStock) as [Stock mínimo] from dbo.Products

--5. Obtener un sumatorio (SUM) de una columna determinada.
select sum(Freight) as [Peso Total] from dbo.Orders

--6. Obtener la media (AVG) de los valores de una columna determinada.
select avg(Freight) as [Peso Medio] from dbo.Orders

--------------------------------------------------------------------------------------------------------------------
--INSTRUCCIÓN GROUP BY (Agrupamiento de filas en funciones de agregación)--
--------------------------------------------------------------------------------------------------------------------

--La instrucción GROUP BY permite especificar las columnas sobre las que se quieren aplicar las funciones de 
--agregación en lugar de hacerlo en una tabla completa. Es decir, muestra un resultado de la función de agregación
--para cada elemento de la columna que especifiquemos. Ejemplos:

--1. Mostrar cuantas veces se repite cada precio de los productos.
select UnitPrice, count(*) as [Filas con este precio] from Products
group by UnitPrice

--2. Mostrar número de clientes de cada region y ciudad de USA.
select Region, City, count(*) as [Nº Clientes] from Customers
where Country 'USA'
group by Region, City
order by [Nº Clientes] desc

--NOTA 1: Siempre debe especificarse las mismas columnas en SELECT que en GROUP BY.
--NOTA 2: Es una buena práctica ordenar (ORDER BY) los elementos cuando se realizan este tipo de consultas.

--------------------------------------------------------------------------------------------------------------------
--INSTRUCCIÓN HAVING (Condiciones en los resultados de GROUP BY)--
--------------------------------------------------------------------------------------------------------------------

--La instrucción HAVING es similar a WHERE pero para agrupamientos de funciones de agregación. Ejemplo:

--1. Mostrar lo mismo que el ejercicio 1 de la sección anterior, con precios mayor que 10 y repiticiones mayor que 2.
select UnitPrice, count(*) as [Filas con este precio] from Products
where UnitPrice > 10
group by UnitPrice
having count(*) > 2

--------------------------------------------------------------------------------------------------------------------

 

Descarga: Consultas mono Tabla.rar (2,38 kb)

 

Y Google, ¿cómo haría este blog?

26. August 2010 23:35 by Oscar.SS in Formación, Internet  //  Tags: ,   //   Comments (0)
Pues según el autor de este libro, Google dejaría prácticamente que los lectores escribieran el blog y además sacaría dinero de ello, entre otras muchas cosas.
 
Bueno, especulaciones a parte, debo decir que a pesar de no ser un libro técnico como los incluidos en esta sección anteriormente, me he decidido a comentarlo por lo relacionado que está con este mundo virtual donde muchos trabajamos.
 
 
 
Y Google, ¿cómo lo haría?

Título: Y Google, ¿cómo lo haría?
Autor: Jeff Jarvis
Editorial: Gestión 2000
I.S.B.N.: 9788498750607
Fecha publicación: 2010
Nº páginas: 322
Nº capítulos: 20
Precio: 19.95 euros.

 
Elogios
 
El libro se divide en dos partes. Los primeros 10 capítulos pertenecen a esta parte y sinceramente son los que más me han gustado. En ellos se definen las claves de la web 2.0 desde puntos de vista como las relaciones, la economía, la ética, la sociedad, etc. 
 
Me ha sorprendido gratamente darme cuenta de cuantos de estos conceptos tan cotidianos eran en parte desconocidos para mí. Ciertamente me han abierto los ojos en muchos aspectos.
 
Puede ser un libro interesante para aquellos que estáis pensando en montar algún negocio en internet. En el libro hay multitud de ejemplos de modelos de negocio que han funcionado en Estados Unidos y que aquí aún son poco conocidos. ¡Podría servir de inspiración!
 
 
Críticas 
 
Los últimos 10 cápitulos es donde el autor intenta utilizar las claves definidas anteriormente en distintos posibles escenarios. Por ejemplo, como sería un restaurante Google, el Google Bank, un gobierno con la filosofía Google, vuela con Google, etc.
 
En esta parte el autor me ha parecido o demasiado entusiasta o un poco partidista. Normalmente se refiere a la era Google para englobar todos los conceptos de la web 2.0. Como si Google lo hubiera inventando todo. Google por aquí, Google por allí...¡un poco pesado en ocasiones!.
 
Creo que lo esencial del libro se podría haber contado en 150 páginas en lugar de 300, haciéndolo más ameno y digerible. Otra vez tengo que recomendar que si podéis leerlo en la versión original, mejor que mejor, la traducción a veces (no muchas) es un poco a lo indio.
 
 
Resumiendo 
 
El libro merece la pena leerlo pero tiene que interesarte o gustarte mucho sobre lo que se habla en él, porque en ocasiones es muy pesado de leer. ¡La decisión es vuestra!

Cambiar la ubicación de una base de datos con SQL Server 2008

10. July 2010 23:52 by Oscar.SS in Desarrollo Empresarial  //  Tags:   //   Comments (4)

Es posible que en alguna ocasión nos interese mover de ubicación una base de datos. Los motivos pueden ser aprovechar un mayor espacio de almacenamiento adicional en la nueva ubicación, o cambiar a otro equipo de nuestra red con mayor rendimiento y capacidades.

Para realizar esta operación, sin tener problemas de asociación entre los archivos que componen la base de datos y la instancia actual de SQL Server, debemos seguir tres pasos principales que consisten en separar, mover y adjuntar los archivos de base de datos con la instancia de SQL Server.

 

Separar la base de datos

Utilizando la herramienta SQL Server Management Studio buscamos en el Explorador de Objetos la base de datos que queremos mover. Seleccionamos la base de datos, en este caso PruebaDB, y con el botón secundario seleccionamos Tareas / Separar.

 

 
 
En el cuadro de diálogo que se abre, aceptamos directamente los valores por defecto. 
 
 
 
 
Si nos fijamos ahora en el Explorador de Objetos de Management Studio, nos daremos cuenta que la base de datos ya no está vinculada a la instancia actual de SQL Server. Esta acción nos ha permitido cerrar todos los archivos de la base de datos así como los posibles bloqueos del sistema operativo. Ahora la base de datos PruebaDB ya no está vinculada en modo alguno con la instacia actual de SQL Sever.
 
 
Mover los archivos de la base de datos
 
Realizada la operación anterior, podemos copiar con el Explorador de Windows los archivos de la base de datos en otra ubicación distinta. En este paso es muy importante mover todos los archivos relacionados con nuestra base de datos, es decir, archivos primarios (.mdf), archivos secuandarios (.ndf), archivo de registro de transacciones (.ldf), archivos de texto completo, y filestream.
 
 
Adjuntar la base de datos
 
Copiados los archivos en la nueva ubicación debemos vincular otra vez la base de datos con la instancia de SQL Server desde la nueva ubicación. En el Explorador de Objetos de Management Studio seleccionamos el nodo principal Base de Datos y con el botón secundario seleccionamos Adjuntar.
 
 
 
 
En el cuadro de diálogo que se abre pulsamos sobre el botón Agregar.
 
 
 
 
En el árbol de carpetas buscamos y seleccionamos el archivo principal (.mdf) de la base de datos en la nueva ubicación.
 
 
 
 
Al pulsar en Aceptar podremos observar en el Explorador de Objetos de Management Studio que nuestra base de datos ya está asociada desde la nueva ubicación con la instancia actual de SQL Server.

La intención no es lo que cuenta

17. June 2010 22:03 by Oscar.SS in Formación  //  Tags: ,   //   Comments (0)

Precisamente esto es lo que le ocurre al libro que os presento hoy. Es un libro con muy buena intención, muy completo, relativamente breve en su contenido y bien organizado. Pero lamentablemente han fallado en la traducción.

 

 

ASP.NET 3.5

Título: ASP.NET 3.5
Autor:George Shepherd
Editorial:Anaya Multimedia
I.S.B.N.: 978-84-415-2439-2
Fecha publicación: 2008.
Nº páginas: 688.
Nº capítulos: 24.
Precio: 58.60 euros.

  

Elogios:

Prácticamente ya lo he comentado antes. Los capítulos del libro están muy bien organizados y su contenido es muy completo. Comienza por lo conceptos básicos de toda aplicación web para continuar con los conceptos básicos de las aplicaciones web ASP.NET.

A continuación, dedica algunos capítulos a los controles web y a los Web Parts. Configuración de aplicaciones ASP.NET y seguridad en el inicio se sesión. Enlace a datos, personalización, estado de sesión y caché. Depuración y trazas, manejadores ashx, servicios web y WCF, AJAX, WPF y para finalizar publicación de sitios ASP.NET.

Como podéis ver, el libro contiene prácticamente todo lo que hay que saber para construir sitios consistentes con ASP.NET.

 

Críticas:

La nefasta traducción hace muy difícil la comprensión de los conceptos más duros. Por no hablar, del aburrimiento y desmotivación que supone leer frases que más se parecen al habla de "los indios" en los westerns americanos. Realmente han fallado con la versión española de esta publicación. 

Mencionar también, lo que ocurre siempre con este tipo de libros, al intentar abarcar tanto, hay capítulos que quedan muy cortos y tienes que buscar una segunda lectura para profundizar. Especialmente esto me ha disgustado en el capítulo dedicado a AJAX.

 

Resumiendo:

Hace algunos días, me escribía un lector de este blog pidiéndome consejo sobre un libro de C#. Su caso es el de una persona que está empezando en esto de la programación y se había comprando un libro de la misma editorial, concretamente "Visual C# 2008", y literalmente me comentaba que el libro era para tirarlo porque la tradución era horrible. Curiosamente, ambos libros son de la misma colección de Anaya Multimedia, "Paso a paso".

En fin, que si el idioma no es un problema para vosotros os recomiendo que lo compréis en ingles porque el libro tiene muy buena intención pero en este caso no fué suficiente.

Recent Comments

Comment RSS

Month List