miércoles, 14 de noviembre de 2018

Sobre consultoras, clientes y profesionales de la informática...

En este post voy a hablar sobre las diferentes prespectivas que tienes los implicados en el mundo de la tecnología (hago un inciso: hablo del desarrollo de software, más concretamente el desarrollo de aplicaciones web).

Por una parte está el cliente, que quiere profesionales cualificados que desarrollen aplicaciones que impulsen el negocio. Hay varios tipos:

  • poderosos: conocen bien las TI y saben que roles hay que requerir.
  • no tan poderosos: generalmente piden perfiles inexistentes, un batiburrillo vamos un chico para todo.

Por otra parte está el proveedor de servicios, que realiza un servicio para cobrar por él. Hay varios tipos:

  • poderosos que hacen las cosas bien: no tienen problema en contratar a profesionales senior aunque esto implique un menor margen en los beneficios ya que pagan más al desarrollador. Se emparejan con los clientes poderosos y suelen dejar contento al cliente.
  • poderosos que hacen las cosas mal: generalmente sólo miran el beneficio y siguen una estructura piramidal, pagan un senior y de él cuelga toda clase de juniors (no están mal para aprender si eres un junior). Se emparejan con los clientes poderosos y suelen decepcionar al cliente.
  • no tan poderosos: hacen lo que pueden, si consiguen a un cliente poderoso, suelen comportarse como los proveedores poderosos que hacen las cosas ... mal; por el contrario, si lo que tienen es un cliente no tan poderoso, pues lo hacen peor todavía y el trabajo deja mucho que desear aunque en la superfice no lo pueda parecer (tests, calidad código, seguridad, estándares ...).

Por último están los profesionales/desarrolladores, que también hay de varios tipos:

  • seniors especializados (autónomos o contratados): se dedican a una y sólo una categoria dentro del desarrollo (frontend, backend, operaciones, seguridad, ...) y suelen realizar su trabajo bien. El cliente suele quedar contento y en el caso de los poderosos lo puede contratar directamente.
  • seniors full stack (autónomos o contratados): abarcan todas las categorías y aunque tienen una vision amplia en conjunto, suelen añadir deuda técnica en cada una de las categorías. Suelen estar contratados por los clientes no tan poderosos a través de las proveedores de servicio no tan poderosos.
  • juniors: bien está lo que hacen, son juniors y se les permite que tengan fallos como tal.

Como puedes ver el panorama es muy diverso y uno se tiene que amoldar a su situción personal, pero desde el punto de vista del profesional/desarrollador aquí va un consejo:

  • huye de los perfiles como el siguiente (Como se puede apreciar, son perfiles del tipo batiburillo, pedimos un poco de todo, frontend, backend, CI/CD ... y suelen ser ofrecidos por los clientes no tan poderosos y que luego se quejan en la radio de que no encuentran profesionales y que los que encuentran son muy caros. Esto lo escuché en una entrevista a un empresario, literalmente):
Los requisitos mínimos para participar en el proceso son:

    Diplomatura o grado en Ingenieria técnica en Informática de Gestión, Ingeniería informática o similar.
    Al menos 2 años de experiencia desarrollando funciones similares a las del puesto.

Técnicamente habra que contar con experiencia en:

    Conocimientos en Java8 y Spring.
    Conocimientos amplios de Python 2.7 o 3.x
    Conocimientos amplios de Django
    Git
    Experiencia con algún framework de JavaScript: Backbone, Angular, React, Vue, etc.

Se valorarán conocimientos en:

    Elasticsearch
    RabbitMQ
    Celery
    CI/CD
    Docker 

Retribución según valía.

A los clientes les recomendaría que contraten a proveedores de servicios que hagan las cosas bien (ver arriba) y si no pueden debido a que son clientes pequeños, que contraten a autónomos seniors especializados.

A los proveedores poderosos que hacen las cosas mal les recomendaría que contraten a profesionales seniors especializados y a los no tan poderosos que busquen clientes poderosos.

martes, 23 de enero de 2018

My personal experience as a developer ... thoughts and feelings

Being a developer is not easy, lots of paths along the way to take and lots of feeling and thoughts that you have to sort in order to succeed.

In my old University days, I loved (and still love) Linux and was my passion using those scripts to search files, pipe them and take actions on them in bash scripts. This gave me a huge background (I realized of this when I started working in the private sector) in a field reserved to sysadmins.

Just after I graduate, I got my first job as a consultant in a Business Intelligence Company called "Agensys Technology". There I learned that at the University you are just a beginner, many subjects to overcome but a poor big picture of the professional panorama, so working with more skilled senior developers I noticed that modularity and order in code along a good domain understanding and modeling is key to software success. I owe a lot to Agensys.

After five years, I felt bored of developing few and spending most of my time doing ETL's transformations (although thanks to that I learned a lot about databases, performance and tunning, most of it in Oracle) so I decided to move to a J2EE position, but this time as a freelance.

I was picked by EUIPO to develop J2EE/Spring REST APIs for UIs developed first in Backbone and later in React. I enjoyed, new thoughts come in the form of "this is the work I love" but as the time passed, I saw a lot of bureaucracy and people that contribute few to the project and earn higher rates than you, so new thoughts come in the form of "I'm fustrated because these guys over rate me and developers do all the work" but it's ok, I consider this part of a not very well structured company because there were more managers/BAs than developers.

So, now it's time to move again and sort new thoughts and feelings. I hope to find a job in a tech company that give me a new dimension of what's software development and for that reason I want to join the software developers Community at Toptal.

domingo, 9 de octubre de 2011

Buena consultora, pocos clientes pero bien atendidos.

Buena consultora en Alicante, su filosofía, el cliente es lo primero.
MYBI

sábado, 17 de julio de 2010

Download from oracle site with wget ...

If you want to download links with wget from Oracle site which are session authentication based, you must do it in two steps.

1. authenticate yourself to get the cookie

# Log in to the server. This can be done only once.
wget --save-cookies cookies.txt \
--post-data 'username=xxxx&password=xxxx' \
https://profile.oracle.com/jsp/reg/loginHandler.jsp

2. retrieve the file as normal

# Now grab the page or pages we care about.
wget --load-cookies cookies.txt \
-p http://download-llnw.oracle.com/otn/java/jdeveloper/11.1.1.3.0/jdevstudio11113install.bin

That's all.

miércoles, 21 de abril de 2010

Reordenar particiones y puntos de montaje

Queriamos llevarnos /var, /home y /opt a otra particion distinta de /, para ello hemos hecho lo siguiente:

Teníamos una estructura del disco duro de la siguiente forma:

sda1 Primaria NTFS 20875,77 MB
sda2 Primaria Linux ext3 31001,09 MB
sda3 Primaria Linux swap / Solaris 8143,03 MB

hemos borrado la particion sda1 y la hemos formateado como ext3 para llevarnos a ella los directorios
/var /home y /opt quedando:

sda1 Primaria Linux ext3 20875,77 MB
sda2 Primaria Linux ext3 31001,09 MB
sda3 Primaria Linux swap / Solaris 8143,03 MB

Para llevar la tarea a cabo se han realizado los siguientes pasos:

1. Crear como root el directorio de montaje de sda1.

#mkdir /mnt/expandedDisk

2. Montar la partición

#mount /dev/sda1 /mnt/expnadedDisk

3. Crear los directorios y asignarles los mismos permisos que tienen en /

#cd /mnt/expandedDisk
#mkdir var
#chmod 1777 var
#mkdir home
#chmod 755 home
#mkdir opt
#chmod 775 opt

4. Iniciar el sistema en modo monousuario para que los demás usuarios no interfieran en la copia

#init 1

5. Copiar el contenido en los nuevos directorios

#cd /var
#cp -ax * /mnt/expandedDisk/var/.
#cd /home
#cp -ax * /mnt/expandedDisk/home/.
#cd /opt
#cp -ax * /mnt/expandedDisk/opt/.

6. Indicarle al sistema que monte el sistema de ficheros al iniciar

#vim /etc/fstab

añadir la siguiente linea

/dev/sda1 /mnt/expandedDisk ext3 defaults 1 1

7. Crear los enlaces simbólicos en / hacia los nuevos directorios

#cd /
#mv var var.old
#mv home home.old
#mv opt opt.old
#ln -s /mnt/expandedDisk/var /var
#ln -s /mnt/expandedDisk/home /home
#ln -s /mnt/expandedDisk/opt /opt

8. Reiniciar y probar que todo funciona.

9. Eliminar los .old

sábado, 10 de abril de 2010

Instalar a mano una distribución linux del tipo live en el disco duro...

Hola, aquí os dejo un post que hice hace tiempo pero que vale como guía sobre como instalar a mano en el disco duro una distribución de linux que viene en un live CD.

Instalación live CD en disco duro

viernes, 26 de marzo de 2010

Android customized button, the button you're waiting for

Dear friends, in this post I'm gonna show you how to customize a button in android.

First of all, here you have the source code so you can analyze it.

How to run the example:

You must modify 'default.properties' and point 'sdk-folder' variable to your android sdk directory. In my example I use linux an it points to '/opt/android-sdk'. I use 1.5 API version.
  • Requirements: android-sdk, apache ant.

  • Extract it

  • Run an emulator (emulator @name)

  • ant compile (sometimes it fails due to it can't find some tools in the android sdk tools directory (/opt/android-sdk/tools), link it from android sdk platform directory (/opt/android-sdk/platform/version/tools) to android sdk tools directory.

  • ant install

  • That's it
Here you can se an image of the button



The wheel appears in a fade transition and the wheel's background shows from right to left to its total size.