Wednesday 9 October 2013

Refuerzos comunicacionales

Aún cuando mantenemos una conversación que consideramos interesante y que capta nuestra atención en gran medida; aún cuando el contexto ofrece las mejores condiciones para el diálogo sin elementos de distracción o interferencia; aún cuando tenemos la posibilidad de expresarnos libremente estando de acuerdo con nuestro interlocutor durante el intercambio de ideas; aún cuando nos encontramos dialogando cara a cara dentro de un ambiente constructivo y colaborativo; allí se encuentran presente, de todas maneras, los potenciales malentendidos, contradicciones o Malas interpretaciones propias de la comunicación que impactan en nuestras tareas cotidianas tanto laborales como personales.

Es por ello que cuando se desea ser realmente efectivos al momento de transmitir esas ideas que son tan claras en nuestra mente, pero que pueden resultar muy distintas en la de nuestros interlocutores, es de vital importancia darle el valor que merecen a los elementos que componen la comunicación.





Dado que el lenguaje verbal que utilizamos en nuestra vida diaria resulta incompleto si lo comparamos con el real contenido de nuestras ideas mentales, resulta necesario establecer "refuerzos" sobre el mismo para lograr, de alguna manera, representar aquellas piezas faltantes que pueden resultar las claves de una comunicación efectiva. Estos refuerzos pueden lograrse mediante diversas técnicas de ampliación del lenguaje haciendo uso del lenguaje corporal, de recursos externos tanto visuales como auditivos, o generando meta información que agrega detalles importantes a las ideas centrales del mensaje comunicado.

Llevar a cabo estas tareas de refuerzo comunicacional no sólo requiere un proceso de aprendizaje basado, en principio, en un esfuerzo consciente e intelectual sino que también requiere un trabajo de preparación previa sobre los contenidos a transmitir y la dedicación del tiempo necesario al "trabajo de comunicar". Es por esta razón, y por nuestra limitación humana de disponer de tiempos restrictivos y esfuerzos costosos, que es importante saber distinguir cuales son "esos" mensajes que nos resulta importante transmitir con absoluta claridad para lograr nuestros objetivos.

Tuesday 8 May 2012

Chasing ideas

When working on complex tasks related to knowledge disciplines like software development, our brain works in a way that really makes us find ourselves running and reacting right behind it like chasers.
Given that providing a software development solution requires a great amount of technical rules and knowledge applied to a specific solution, taking into account possible scenarios/use cases/logic paths and a big amount of creativity on the solution design, we usually use a huge portion of our attention on this, which requires a total control on our concentration. 
Trying to think of what I think and do when working on a problem solution, I can enlist some of the ideas and activities that pop up during the process:
  • listen/read the problem (or both)
  • try to understand the expected/desired/possible result
  • think of technical alternatives
  • think of the right tool to solve the problem
  • understand if I need to investigate new tools
  • make quick searches on the internet
  • think of other similar problems from the past
  • sketch some drafts in paper
  • think of a person who would know about the topic
  • go back to the original problem
  • think of a possible alternate high level solution,
  • assess the cost/effort of that solution...
This is just a really short summary of the amount of things we do when working on a solution and, for sure, it varies from problem to problem,context to context and person to person. Besides, the activities/thoughts in the list don't have a specific order and we jump from one to the other based on our previous experience, partial results and lines of thought we have.

It's really interesting to see how a quick interruption in a task that requires our complete attention and concentration can make our previous efforts completely useless and turn them into wasted time. Exactly the same consequence is obtained when working with the incorrect tools, tools we are not familiar with or slow ones.
Imagine the following scenario based on the list above: 

  • listen/read the problem (or both). 
  • I can barely hear, there's a lot of noise in the call/office. Let's start again.
  • try to understand the expected/desired/possible result.
  • think of technical alternatives.
  • think of the right tool to solve the problem
  • but we can't use it, we need another alternative
  • understand if I need to investigate new tools
  • make quick searches on the internet.
  • Oh, my internet connection is really slow.
  • think of other similar problems from the past
  • sketch some drafts in paper.
  • phone call... blah blah.... end call. "what I was doing?" back to start.
  • think of a person who would know about the topic
  • call the guy. Oh, he's not there... ok, let's wait until his back and do something else in the meantime.
  • go back to the original problem
  • think of a possible alternate high level solution,
  • SMS/Whatsapp/facebook/... hm... what I was thinking of?
  • assess the cost/effort of that solution...
Of course, it's impossible to avoid any interruptions in our work environment and this won't stop happening, but what's really important to highlight is the importance of making the best efforts to get as much control on the work environment as possible. Meaning, creating a comfortable environment (from comfortable chairs to mutual respect on the office noise), getting access to the correct tools, avoid unnecessary interruptions, establishing priority rules so everyone understands when an interruption requires immediate attention, etc. and therefore minimize the issues that deviate our attention to our responsibilities while working.
 

Monday 18 July 2011

Creativity

Why do I like software?

This has always been like magic for me. Just get an idea, write some code and get 'something' working from 'nothing' but an idea. I feel it like synchronizing my mind with the code and letting it happen. Are there any boundaries? I don't think so: imagination doesn't have any; maybe computers do, but for the time being my imagination is not that big. ;)

Does software development require creativity?

creative/kriˈeɪtɪv/

adjective relating to or involving the use of imagination or original ideas in order to create something.

Yes, I think so! I guess you can do it even if you're not creative, but the question is: will you enjoy it? I don't see the point if you don't enjoy it!
If we describe software development as "
the process of writing and maintaining the source code of a software application"
doesn't sound really enjoyable, does it?

Does software development require knowledge?

Yep. That translation between the ideas in your mind and the 'real' 'thing' requires some knowledge and it helps if you have a logical thinking given that computers get on well with guys like that. :)
Anyway, go ahead and learn how to code. It's just a mean to get your ideas into working stuff. Then you'll start dealing with things like maintainability, decoupling, refactoring... and so many other things.

What helps a software developer to give real value?

I think creativity is a clear expression of what I'll call mind-freedom here. Make sure your team members feel comfortable and free to express their ideas. BUT! Always remember to pay them a salary and work on the basics first: remember Mr. Maslow.

Anyway... just some ideas I wanted to share :)

“If you have an apple and I have an apple and we exchange these apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.”

Monday 3 May 2010

Students at Work

The Information Technology market in Buenos Aires has been changing for a while and continues to evolve. Many factors have both contributed to and changed the technology environment around
the world including Argentina. Consequently, as the environment changes employers, students,and universities all need to adapt to those changes.

In our country, and especially in the city of Buenos Aires, there's a large variety of options if you want to study any degree related to IT or Information Systems at the university.
There are primarily two educational paths one can choose to get an IT degree. One of the options is to get a degree from a public university. Public universities are free in Argentina, meaning that you don't need to pay a fee to attend the classes. Examples such as UTN 'Universidad Tecnologica Nacional' (officially founded in 1959) and UBA 'Universidad de Buenos Aires' (founded in 1821) both have a very good reputation for companies when hiring new employees.
The second option, private universities, offer more comfortable facilities for students as well as continuously updated study plans that let them develop skills that are part of the current market trends. The cost of this option is of course higher for the students (around $AR 200 - per subject, plus exams fees.) Interestingly, not all of the private universities have a good reputation with
employers in our country.

Today, many IT offices are seeing more full-time employees who also are full-time university students and there are several reasons why we see this growing trend.
First of all, the high need of IT experts in the market makes it hard to find employees who have already received their degree at the university who are not yet part of other companies’ staff. As a result, employers have started adapting the corporate environment to the IT climate by hiring students and giving them support to get their degree and become professionals while working within their company.

With that new context in the IT market, changes also took place in the students’ mindset. It is now more desirable and valuable to be a graduated professional with experience at real work in a company instead of a professional who has his/her degree but no experience. Having this marketability is one of the primary reasons many students nowadays decide to start working before getting their degrees.

This supply and demand context is so strong in our IT market, that universities also have adapted their study plans to ensure the professionals they form not only have high theoretical knowledge, but also real working experience. As an example, since 2006, UTN has a new mandatory subject as part of the study plan that requires students to get access to a real project bigger than 200 hours at any company with a full report due at the end. For those students who already have a job, they can choose to use their company for the project. If the students don’t have a job, the university has developed relationships with other contact companies with an infrastructure in place for students to work as temporary employees.
The consequence of this is that employee starting ages are really low in comparison to other countries, with average ages starting from around 20 years old.
Another key reason why students decide to be both full-time employees and full-time students is because of the economic situation. Private universities in particular, as mentioned before are not cheap and public universities, even though they provide free lessons, students must be able to afford the study materials and living expenses.

The main benefit of studying and working at the same time is that IT people here have the chance to start their career very soon after secondary school and everything learned at a university can be easily applied at work and vice-versa. That makes the learning experience much more useful by having theoretical knowledge applied to the real world. Thus, after getting their degrees, many professionals have some years of experience at work.
The main con I see with this work/study trend is that although students are entering the workforce earlier, students are finishing their degrees at the university later. Nowadays, the average age at which students get their Information System and IT degrees is around 26 years old (non-official data) with study plans planned for 5 years long at public universities.

Besides this, doing both of the things at the same time can cause great stress to people who work full time (usually 9 hours at the office and 4 hours at the university everyday), making that a real challenge for individuals at the beginning of their career.

In my opinion, this whole picture is changing every moment and will still keep on changing for a while, with employers, universities, students and people all adding something different to the equation. I guess there will be a lot more to tell in a few years when the new generation of students gets to the point where they can help set or respond to the rules of the new market.


(Thanks MK for helping on the spelling)

Jornada Trabajo IT & Sistemas

On Wednesday May 12th, Thomson Reuters will be presenting its stand at the Jornada de Trabajo IT & Sistemas. I strongly suggest attending the event if you have a moment to get to know the company and participate on the fair!


Este miercoles 12 de Mayo
Thomson Reuters va a estar presentando su stand en la Jornada de Trabajo IT & Sistemas. Les propongo a los que tengan un poco de tiempo darse una vuelta para conocer un poco mas sobre la empresa y participar de la jornada!

Thursday 19 February 2009

Copy & Paste Oriented Progamming

It seems that you become more popular if your inventions have a name that matches the following pattern:

/.+\sOriented\sProgramming$/

So I've decided to put a name to something that already exists to test if my previous statement is true: the "Copy & Paste Oriented Programming". You'll obviously call it, CPOP (if the acronym of you invention matches a funny word, you'll get some extra points. This is not the case :P).

Okay, now, a tool I want to recommend for CPOP, or just in case you are constantly using the clipboard.

ClipX
This tool lets you store more than one element copied in the clipboard and paste any of them whenever you want. I find it really useful. Give it a try! :P

Spanish version...


Parece ser que uno se lanza a la popularidad y el cholulaje cuando inventás algo y le ponés un nombre cheto que matchea con:

/.+\sOriented\sProgramming$/

O sea, "LoQueSeTeCante Oriented Programming". Así que para verificar si mi teoría es cierta, le puse un nombre a algo que en realidad existe hace mucho tiempo: La "Copy & Pase Oriented Programming". Obviamente, lo encontrarás mencionado como CPOP (nos gusta ahorrar. Ah, y además si hacés que tu acrónimo coincida con una palabra graciosa, vale doble! No es el caso).

Bueno, en consecuencia, quiero recomendar una herramienta para CPOP que es muy útil para los usuarios habituales del clipboard o portapapeles:

ClipX
Es una herramienta que te permite almacenar más de un contenido en el portapapeles cuando copias, de manera que al momento de pegar, podés seleccionar de una lista cualquiera de los contenidos copiados. A mí me resulta bastante útil. Pruebenlo y me dicen...

Sunday 12 October 2008

Development improvement tools

Let me share with you the links to two tools that have been helping me a lot in my daily development tasks lately.
Both of them are available as Eclipse plugins, are free and they really help to improve the quality and efficiency of our developments.

1.- Enerjy:
This is a code analysis tool (similar to Findbugs, for instance) that helps to find bad practices in our code, improve our code standarization, find common errors, and so on.
It's really easy to use since it doesn't need the user to perform the code analysis operation manually; it just executes the task on every build we make, updating the warnings in our editor so that we can analyze the possible errors found and decide if we want to fix them or ignore them (by adding a special comment).
The tool is also easily configurable and provides help information about each warning it shows, explaining the causes of each possible code error.

2.-TPTP (Eclipse Test & Performance Tools Platform Project):
TPTP is basically a profiling tool that helps us improve our applications performance in relation to processing time and resources usage. This tool provides different kind of reports that are configurable so that we can filter the displayed information to our convinience. This helps to find weak points in our application if used correctly.

I recommend you to take a look at these tools since they're not hard to use and are really helpful
.


Spanish version...

Aquí les dejo dos links de herramientas que ultimamente me han resultado de gran utilidad en mis tareas diarias de desarrollo.
Ambas herramientas están disponibles como plugins para Eclipse, son free y realmente ayudan mucho a mejorar la calidad y eficiencia de nuestro código.

1.- Enerjy:
Es una herramienta de análisis de código (similar a Findbugs por ejemplo) que nos ayudará a encontrar malas prácticas en nuestro código, mejorar la estandarización del mismo, encontrar errores comunes, etc.
Es muy facil de usar ya que la herramienta no necesita que ejecutemos el analisis de codigo manualmente, sino que realiza esta tarea ante cada build que hacemos y actualiza los warnings en el editor del Eclipse. En funcion a los warning mostrados, podemos decidir si queremos arreglarlos o bien ignorarlos; esto ultimo se realiza agregando un comment especial en el codigo que evita que se muestre el warning.
Esta herramienta es facilmente configurable y brinda info de ayuda para cada warning que muestra, explicando las causas del posible error.

2.- TPTP (Eclipse Test & Performance Tools Platform Project):
Basicamente es un profiler que nos ayudará a mejorar la performance de nuestras aplicaciones en cuestiones de procesamiento y uso de recursos.
Esta herremienta provee distintos tipos de reportes que podemos filtrar de la manera que mas nos convenga. Asi podremos encontrar debilidades a nuestras aplicaciones analizando correctamente la informacion de los reportes.

Les recomiendo que le peguen un vistazo a estas herramientas ya que no son difíciles de utilizar y son de mucha ayuda.