Un Buscador, JQuery AJAX, HighLight, EF y MVC

30. April 2011 00:37 by Oscar.SS in Desarrollo Web, Herramientas  //  Tags: , , ,   //   Comments (3)

Pues lo que dice el título del post, hoy vamos a ver un "popurry" de varias teconologías para dotar de cierta funcionalidad a un simple buscador.

El buscador implementado con ASP.NET MVC 3 realizará una llamada al servidor por AJAX utilizando JQuery. Desde el servidor utilizaremos Entity Framework como la capa de acceso a la base de datos.

En cliente, también haremos uso de un plugin muy ligero llamado HighLight que nos permite marcar con distintos estilos el texto de una página HTML. Así podremos dotar a nuestro buscador con dos funcionalidades bastante interesantes de cara al usuario, mostrar el número de resultados obtenidos y resaltar el texto de búsqueda en todas las coincidencias.

 

 

 

El Modelo

Como hemos mencionado antes, en el modelo utilizaremos Entity Framework como capa de acceso a los datos que estarán almacenados en la conocía base de datos Northwind de Microsoft. Para simplificar el ejemplo haremos la consulta sobre una única tabla llamada Customers.

 

 

Los campos en los que se intentará la coincidencia de la cadena de texto son CompanyName, ContactName, ContactTitle, City y Country. Una vez creado nuestro contexto de datos con Entity Framework escribiremos una clase en el modelo que permita manegar las operaciones sobre la entidad Customer.

 

    public class CustomerManager
    {
        ContextoDatos ctxDatos 
= new ContextoDatos();

        public 
List<Customer> CustomersSearch(string text)
        {
            var result 
from c in ctxDatos.Customers where 
                         c.CompanyName.Contains(text) ||
                         c.ContactName.Contains(text) ||
                         c.ContactTitle.Contains(text) ||
                         c.City.Contains(text) ||
                         c.Country.Contains(text)
                         select c
;

            return 
result.ToList();
        
}
    }

 

Como se puede apreciar es muy sencillo. Tenemos un único método CustomersSearch() que al pasarle la cadena de búsqueda realiza con LINQ el filtrado sobre todos los Customers. Desde luego el filtrado se puede afinar más, por ejemplo teniendo en cuenta las mayúsculas o minúsculas, pero para este ejemplo es suficiente.

 

El Controlador

No hay mucho que comentar del controlador. Tendremos una acción Search() de tipo GET que será nuestro punto de entrada en la aplicación y devolverá la UI del buscador. Y otra acción Search(string text) de tipo POST que toma el texto introducido por el usuario.

 

    public class CustomerController : Controller
    {
        CustomerManager cm 
= new CustomerManager();

        
[HttpGet]
        
public ActionResult Search()
        {
            
return View();
        
}

        [HttpPost]
        
public ActionResult Search(string text)
        {
            var results 
cm.CustomersSearch(text);
            return 
PartialView("ResultsPartial", results);
        
}
    }

 

La segunda acción es la encargada de llamar al modelo y obtener los datos de los clientes filtrados por la cadena de busqueda introducida por el usuario. Como se puede apreciar devuelve una vista parcial.

 

El Script

En la vista tendremos el siguiente JavaScript utilizando la librería JQuery y el plugin anteriormente mencionado.

 

    <script type="text/javascript">
        
function buscarAjax() {
            $.ajax({
                url: 
'@Url.Action("Search", "Customer")',
                data: { text: $(
"#txBusqueda").val() },
                type: 
"post",
                cache: 
false,
                success: 
function (retorno) {
                    $(
"#contenido").html(retorno);
                    
$('td').highlight($("#txBusqueda").val());
                    
$('h3').text('Se han encontrado ' + $('.highlight').length + ' coincidencias');
                
},
                error: 
function () {
                    
alert("Se ha producido un error");
                
}
            })
;
        
}
    </script>

 

En primer lugar realizamos la llamada asíncrona pasandole la ruta de la acción (Customer/Search) que ejecutará la búsqueda y la cadena introducida por el usuario. También especificamos que la llamada se realice por el método POST y que no se guarde en cache.

Si la llamada asíncrona tiene éxito "pintamos" el HTML con los datos devueltos por el servidor. A continuación marcamos en toda la página el texto de búsqueda con una clase CSS que cambiará el color de fondo amarillo. También mostramos un mensaje con el número de coincidencias que se encuentran en la página. Si la operación no tiene éxito mostramos un mensaje de error.

Como vemos es un ejemplo muy sencillo pero igualmente válido para mostrar los fundamentos de colaboración entre todas estás tecnologías.

Podéis descargar el ejemplo de código completo:  BuscardorAjaxMvc.rar (164,81 kb)

El mercado está ahí fuera

4. April 2011 03:23 by Oscar.SS in Personal  //  Tags: ,   //   Comments (14)

Tan solo hace unas pocas semanas, escuché como un simple testaferro espetaba la frase, "...y si no el mercado está ahí fuera...", a unos atónitos trabajadores que no podían dar crédito de semejante obviedad y bravuconada más propia de un mercachifle que de un señor empresario. Así que no he podido resistirme a utilizarlo como título para este artículo.

¿Y de que vamos hablar en este artículo?. Precisamente de eso, de cómo está actualmente el mercado laboral para los desarrolladores en tecnologías .NET.

Para ser más riguroso, debo decir que realmente todo lo que se va a exponer aquí, tan solo es mi humilde opinión alimentada por la reciente experiencia en la búsqueda de empleo como desarrollador .NET. Es decir, las sensaciones que he percibido de la oferta laboral después de tanta entrevista y que os transmito, no para sentar cátedra sobre el tema, más bien para informaros o interesaros según los casos.

Si buscamos información por la red sobre la salud del sector TIC los datos no son nada alentadores. Podemos encontrar noticias como que el desempleo pasa de un 10% a un 40%. Y en cuanto a la facturación de las empresas podremos leer cosas como que el sector TI ha caído un 8% en España. Incluso, para todos aquellos que nos gusta la tecnología .NET, podríamos desilusionarnos al leer que los perfiles más buscados del sector TI son los programadores JAVA.

Bueno, que no decaiga el ánimo, y menos aún que nadie piense en pasarse a JAVA, que ahora os daré otras cifras más alentadoras. Eso no quiere decir que las noticias anteriores no sean ciertas. Los son, pero lo son en el ámbito de la estadística con todo lo que ello implica.

 

Un sector dinámico

Desde finales de enero, cuando realicé mi primera entrevista, hasta mediados de marzo cuando di por cerrado todos los procesos de selección, he tenido la suerte de conocer 14 empresas distintas. Si hacemos cuentas son más o menos 2 ofertas de empleo por semana. Y si a esto le sumamos que en muchas empresas, primero tenemos el contacto con recursos humanos, luego la entrevista técnica y finalmente la negociación, todas las semanas tenía que desplazarme 3 o 4 veces a distintas empresas. Además, también hay que sumar todas aquellas ofertas que te llegan por correo y que directamente rechazas por no ajustarse a tus expectativas ya sean económicas, personales o tecnológicas.

Este dinamismo del sector es lo primero que me llamó la atención. Pensé que me iba a encontrar con un mercado totalmente estancado y no ha sido así en absoluto. ¿Por qué esta aparente disparidad con las estadísticas de las noticias?. No es que yo sea el más indicado para responder a esta pregunta pero en los puntos siguientes intentaré dar mi opinión al respecto.

 

Los procesos se alargan

Lo primero que hay que tener en esta época si estás buscando empleo es mucha paciencia. Los procesos de selección se han alargado mucho en comparación con otras épocas. No es extraño que desde que tengas el primer contacto con la empresa, hasta que te vuelvan a llamar, pasen semanas mientras tu naturalmente esperas en casa comprobando ansioso el correo todos los días.

 

 

En términos generales las empresas tienen una menor urgencia en las nuevas incorporaciones, lo que provoca que los procesos de selección sean más lentos. O dicho de otra forma, las empresas intentan asegurarse al máximo que los nuevos perfiles se ajusten mejor a los requisitos económicos, de experiencia y conocimiento tecnológico que necesitan. Es imprescindible para las empresas tener la seguridad de que la persona contratada será rentable a medio plazo.

Es posible que este hecho sea una de las explicaciones a la disparidad de las penosas estadísticas del sector en comparación con el dinamismo del mercado que antes apuntaba. Las empresas entrevistan muchos más perfiles que antes para estar seguros de lo que contratan, pero finalmente, solo habrá una única contratación.

 

Los perfiles se solapan

Esto de los perfiles aquí en España es algo que aún no comprendo la verdad. Tengo entendido que en otros países no sucede esto. Pero aquí, las propias empresas clasifican sus ofertas de empleo por programador junior, programador, programador sénior, analista programador, analista programador sénior, analista, analista técnico, analista funcional y un largo etc. Te puedes encontrar de todo.

Una de las consecuencias de esta llamada crisis, es que las empresas buscan perfiles multidisciplinares que puedan desarrollar una mayor variedad de tareas. Esto en las ofertas de las empresas pequeñas  o medianas se acentúa aún más, buscando perfiles con una especialización más horizontal relacionada a veces incluso con competencias de gestión, no solo técnicas.

Como nota de humor, mencionar que en una entrevista para una oferta de "Analista Programador Web en .NET", o este era el título que encabezaba su oferta, me preguntaron si sabía programar en PHP, que conocimientos de JAVA tenía, y lo mejor de todo, si me veía en condiciones de configurar un servidor Linux. Me dieron ganas de decirle que si a todo y que además vendría a trabajar de 8 de la mañana a 10 de la noche, sin cobrar salario alguno y que ya que me pongo, traería también todos los días los bollos para el desayuno :-D

Bueno, volviendo a los perfiles de las ofertas de empleo, he podido comprobar que ahora mismo hay muchas más ofertas para analistas programadores que de ningún otro perfil. ¿Por qué es esto así?. Naturalmente las empresas buscan estos perfiles medios, o de en tierra de nadie, para que su contratación resulte más barata. Y desde luego, desde las primeras conversaciones con ellos sobre cuales serán tus competencias en el puesto de trabajo te transmiten que lo que realmente necesitan es alguien técnico capaz de programar con fluidez, pero también alguien con experiencia o capacidad funcional capaz de realizar documentación a tal efecto e incluso de tomar requisitos con el cliente.

Por lo tanto, creo que es una buena oportunidad para estos perfiles que realmente no están definidos y que lo mismo necesitan que seas un programador experimentado que un analista técnico. Lo ideal ahora mismo es saber un poco de todo, ser lo más horizontal posible en todo el conocimiento que con lleva el ciclo de vida de un proyecto de desarrollo de software.

 

Tampoco lo tienen fácil las empresas

Parece lógico pensar que con tantas estádisticas sobre el paro, con tanta gente demandando empleo, las empresas deberían tener facilidad para encontrar lo que buscan en las nuevas contrataciones. Pues aunque parezca extraño esto no es así. Es algo que me ha llamado muchísimo la atención. Esto está muy relacionado con el apartado donde hablabamos sobre la dilatación de los procesos de selección.

Por lo que yo he podido percibir las empresas tienen muchos problemas para encontrar profesionales con los conocimientos técnicos que precisan. Y ahora hablamos de conocimientos técnicos, de conocer realmente la tecnología con la que vas a trabajar. No hablamos de tener un título universitario o de 5 años de experiencia en otra tecnología. Si se tienen mucho mejor, todo cuenta, pero ya hemos comentado que realmente lo que buscan las empresas es que te adaptes lo máximo posible a sus necesidades.

No es tan solo una sensación mía, así me lo han transmitido directa o indirectamente algunos de los empleadores con los que he tenido contacto en las entrevistas. Por poner un ejemplo, con varias empresas he tenido que realizar exámenes sobre conocimientos técnicos, en este caso, sobre ASP.NET y el framework en general. Me ha sorprendido la rápidez, una vez evaluado el exámen, con la que se han interesado (o no) por mi perfil e incluso han llegado a comentarme que no encuentran profesionales que superen satisfactoriamente estas pruebas.

Mi opinión es que con el tiempo, cada vez serán más las empresas que recurran a este tipo de pruebas para asegurarse que los demandantes de empleo se adaptan realmente a los conocimientos técnicos que precisan para el desempeño del puesto de trabajo. Y si no...¡tiempo al tiempo!

Os dejo por si os interesa 3 preguntas de las pocas que recuerdo que he tenido que responder.

- ¿Que diferencias hay entre una clase abstracta y una interfaz?. Describe dos escenarios donde utilizarías una u otra y explica porque.

- ¿Que diferencias existen entre las interfaces IHttpModule e IHttpHandler?. Pon ejemplos de tu trabajo donde has tenido que utilizar estos componentes.

- ¿Que ocurre con el estado de sesión cuando trabajas con una granja de servidores?

 

Certificaciones Microsoft y empleo

¿Tienen las empresas en cuenta las certificaciones?. La verdad, en este periodo tan corto en el que he tenido la oportunidad de conocer casi una veintena de empresas, no puedo daros una respuesta rotunda.

En ocasiones he sentido que algunas empresas no saben ni lo que es una certificación ni lo que implica conseguirla. Es lamentable pero es así. También es cierto que muchas otras empresas si lo tienen en cuenta y es sobre lo primero que te preguntan al verlo reflejado en tu currículum. En este sentido te puedes encontrar de todo. 

 

 

¿Entonces merece la pena certificarse con Microsoft en tecnologías .NET?. Mi opinión sin lugar a dudas es que si. Debemos tener en cuenta que existen muchas empresas que son, o intentan ser, partners de Microsoft. Estás empresas no solo sabrán que significa esto de estar certificado, además entre varios perfiles que les encajen, se decantarán por la certificación por los benefecios y requisitos que implica ser partners de Microsoft como empresa.

Si anteriormente hablabamos que las empresas necesitan constatar que las nuevas contrataciones tienen el perfil técnico que realmente necesitan y que para ello recurrirán a pruebas de selección con exámenes, no tengáis ninguna duda que el estar certificados os permitirá responder más y mejor en este tipo de pruebas. Aquí la certificación si marcará la diferencia.

 

Tipos de contratos

Esto es algo con lo que hay que tener mucho cuidado. Al parecer casi todas la ofertas que encontramos en los portales de empleo anuncian que la contratación será indefinida. Pero luego en las entrevistas empiezan los "peros". Que si es para un proyecto de larga duración, que si es un proyecto para un cliente importante, etc...Y tu empiezas a preguntarte si entre lineas no te están diciendo lo que expresa esta viñeta.

 

 

Sinceramente debo decir que la gran mayoría de lo que me he encontrado no eran contrataciones de este tipo, pero..."haberlas haylas, lo dificil es esquivailas". Realmente la mayoría de las empresas buscan empleabilidad a largo plazo. Conocen como está el mercado y lo difícil que es encontrar profesionales a los que sacarles partido o rentabilidad.

 

Resumiendo

En mi opinión creo sinceramente que es un buen momento para cambiar de empresa. Como hemos visto el mercado se está moviendo y es la oportunidad perfecta para encontrar una empresa mejor, más grande o que a tí te cuadre más por el motivo que sea. Así que, si no estás agusto en tu empresa actual porque no te sientes valorado, tu lugar de trabajo está muy lejos de tu hogar, tu empresas no te ofrece garantías de estabilidad laboral a largo plazo...etc...Actualiza tu currículum y armate de paciencia porque el proceso puede durar 2 o tres 3 meses en el mejor de los casos.

Desde luego no esperéis al cambiar de empresa un salto económico considerable. El mercado no está para eso en absoluto. De hecho, hay algunos profesionales que fueron contratados antes de la crisis que se han quedado fuera de mercado totalmente. Conozco compañeros que entraron en la empresa pongamos hace 4 o 5 años y que entrarón con un sueldo alto en comparación con lo que el mercado actual ofrece. Si a esto le sumanos que en esos años probablemente han tenido pequeñas subidas por antiguedad, ahora mismo si intentan moverse en el mismo perfil no será con el mismo sueldo, será por mucho menos.

Dado que las empresas están haciendo mucho hincapié en los conocimientos técnicos reales de las posibles contrataciones, creo que es el momento idóneo para destacarse de la competencia con formación o certificaciones en las tecnologías que más se demandan, como pueden ser ASP.NET, Sharepoint, WCF y recientemente también he visto ASP.NET MVC. De hecho, si trabajas en tecnología siempre deberías estar continuamente actualizandote pero ahora con más razón si quieres tener acceso a este mercado tan competitivo.

En fin...¡que el mercado está ahí fuera!...pero como está, eso es otro cantar tanto para los profesionales como para las empresas.

 

Actualización a posteriori

Como complemento os dejo aquí unos enlaces del punto de vista de un empresario, y por lo tanto empleador, sobre como preparar y sobrellevar una entrevista de trabajo. Me ha parecido interesante incluirlo no porque considere que su palabra sea ley, si no porque me parece muy a tener en cuenta lo que pueda opinar alguién de su perfil sobre este tema. Ojala todos lo hicieran y pudieramos saber realmente lo que los empleadores esperan de nosotros...¡aunque así todo esto perdiería la gracia!...

Entrevistas de trabajo: El previo a la entrevista

Entrevistas de trabajo II: La apariencia y la actitud personal

Entrevistas de trabajo III: El desarrollo de la entrevista

Entrevistas de trabajo IV: Cómo crear un currículum ganador

Entrevistas de trabajo V: La carta de presentación

Recent Comments

Comment RSS

Month List