Learning from Jason Bourne

October 28th, 2008 by ajlopez

Last year, Alex “the evil” Jack had raised in a meeting of development in Southworks, that a software developer must pay attention to Jason Bourne. At the begginning of this year, I discovered excellent blog of {codesqueeze} , having the article:

7 Things Developers Dog Learn From Jason Bourne

Then, I wrote a post in Spanish at my MVP blog:

Aprendiendo de Jason Bourne

Alex is not writting a lot, so I am going to take the token and to comment the points of that post by Max Pool here:

1. Always sees extreme aware

To be “aware” is one of my phrase favorite, specially in philosophical topics of my personal blog. I believe that we always must be aware of what is happening, what we thought, what the others do, what we do. Not to be a person locked up in his own bubble, or that works in automatic way.

And sure to be “aware” of how our project goes: not only to seat and to take care of the your part in the project. You should have a general vision of the project, of its advance and status. Failing to stay aware is as counter-productive strategy. It’s like to drive a car while reading a book: we are going to have problems at some time.

Also see beyond your project or job: watch the industry, the existing trends, and the causes of such trends. Be aware of the present and the future, be prepared.

2. Always ruthlessly execute

Not only it is necessary to think, is necessary to execute. And to execute, to execute, to execute. And to execute thoroughly. If we have a problem, we see it as an opportunity and we attack its root: we do not do it partially.

3. It sees resourceful

Do you remember the TV Serie “McGyver”?. I learnt one thing from the protagonist, two decades ago: be a person full of resources. The more tricks and tools you know, then the more comfortable you feel with patterns, software libraries, and concepts (not forget to think, to know by why that pattern was used, or what is the objective of the libraries we use), whatever the more you have learned of the knowledge and experiences of others (books, books, books…. I would say imitating Steve Ballmer voice), the more “magical words “ (remember Harry Potter?) you know, the more confidence you will have in your work. The more resources you master, more perspective will be able to use in order to find a solution to any problem. If you only knows XML, you see every problem as an XSL transformation (I call this tech “the way of the devil”). Only one language or technology is a limited set to use. Get out of your comfort zone, and learn more stuff.

4. Always make calculated decisions

You should always make calculated decisions. It could not be the best decision: you have to know when to adopt a perfect super solution, or when to take a simplified one, for reasons of time to market. If you decided by a sub-optimal solution, be conscious, be aware of the reasons to choose that decision, and communicate them to your team. And when you do something, know clearly why you are doing it. Don’t use libraries and technologies using blind feelings: take them or forget them, using a calculated and clear decision. So many times I see that in a project the team use a tool, because it’s popular, but they didn’t analyze the reasons of such adoption.

Question: this that I am doing, is aligned with my objectives?

5. React quickly (do not stop, inaction is death)

If there is a new situation, a new problem, don’t remain paralyzed. React. Think, make a decision, but do something. You don’t remain in the middle of the stree while the truck continues advancing. You should react. You would make the best decision in such circunstance, but it doesn’t matter: once you are moving, you can improve what are you doing. But if you remain in the middle of the street, the truck will hit you.

6. Stay strong

I already know. You are busy, all the day at work, soon you want to go away, back to home. Anyway, leverage your time, and read about your profession. Keep up today with technologies and knowledge. Read blog, articles, magaznies, books. Learn something new every day. Daily improvement should become an habit.

Learn a new programming language, although you don’t need to use it in any current project. Read about new paradigms in programming. Study funcional programming, maths, robotics, anything that could enrich your brain. Keep the neurons active and strong.

Take care of your health, too (something I have to do).

7. Learn to work alone

Your daily work is as a member of a team. Ok, but don’t forget to exercise your own skills, working alone. Be prepared, at some moment, to face a task by your own. This is like a test of your abilities, of the resources you have. If you work in group, learn something from your fellow members, and teach something to them, so every member will become stronger at the end of each project.

If you work sometimes as a “lone wolf”, you will improve your discipline and confidence. This is the test of your expertise grown. Remember, in the long term, you are the only partner in your life.

Thanks to Martin Salias’ blog:

http://msalias.blogdrive.com/

where I found the reference to original Max Pool post, in:

My favorite new blog of 2007 by Jeremy Miller

Get smart, get Bourne.

Angel “Java” Lopez
http://www.ajlopez.com/
http://twitter.com/ajlopez

 

Posted in Personal Development, Software Development | No Comments »

Presenting ajlopez

October 27th, 2008 by ajlopez

After years of visiting Southworks facilities as a vendor, the company gaves me this blog. Now I have another blog to write my crazy things!

So, this is my personal presentation, written in Anglish (Angel’s English) ;-). It’s composed of comments about my interests and idiosyncrasies, so I hope other southies could understand me better. I’m usually so concentrated in my duties (my twitter, you know… ;-), that I miss many opportunities to keep in touch with southy bunch.

I fell in love with software development during my teenage years. Thirty years ago, I started programming, with COBOL and IBM/360 assembly language. Oh, those days! Anything was new to me. And, after three decades, I still have that attitude. It was (and it is) a wonderful world to explore. I should write about those early years in another post. I’ve worked with CP/M, mini computers, Pick System, first DOSes, BTOS emulating Pick emulating DOS, Windows without overlapping Windows and only four colors… ;-). I wrote programs using many languages, from C to Smalltalk to many assembler flavors, from Pascal to APL to Forth to Lisp to dBase to VB to … and so on.

I’m interested in programming languages and software architecture. My interest in programming languages is motivated from my interest in language, logic and mathematics. There are so many interesting way to express ideas and algorithms. Software architecture is a wide field, but I like it because it pushes me to raise levels of abstraction. After experiencing so many technologies, platforms and tools, I grasp a sense of abstraction: the way to separate the important things from the technicalities. It’s a rewarding activity, something that regards me mathematic activity.

I had my nickname, Angel “Java” Lopez, since the mid nineties: I became a Java evangelist, and even wrote a book about the Java programming language. In this XXI century, I received .NET as refreshing air. Java and .NET are mature technologies, that give us the power to write better and powerful software. Now, we can write software, without fighting againts technology weird limitations.

Years ago, I read Isaac Asimov’s tale: Profession. Since then, I struggled to don’t fall in specialization, and concentrate doing new things, creating software, and exploring new topics, every week of my life. I don’t like to be “the expert on TechX 1.7″. Yes, I like to be a “generalist”. This strategy is not free of hassles, but I can live with them. Having a general view, knowing many topics, gives me the power to understand better what happens in my profession, and life in general.

I’m a compulsive blogger. For me, writing is a way to clear my thoughts. I like to write down ideas, not only think about them. And write software implementing ideas, not only talk about them. One year ago, I started to write one post every day. It was one of my clever decisions in this century. This year I improved my writting skills, and gained insights on my own thoughts, opinions and knowledge.

I love mathematics. If I could choose, I would pick mathematics as the only activity in my life. But I guess I would generate few advances, if any at all, in the most beatiful branch of human knowledge. For me, a mathematician is a human being in the way to become a semi-god/godness. History of mathematics is a fascinating topic, too. I can spend hours reading and thinking on mathematics: algebra, topology, group theory, category theory, number theory, are my preferred topics.

I usually give a lesson on software development, each day from monday to saturday. I teach PHP, .NET, Java, software architecture, frameworks, and recently, I added Scrum to my porfolio. Teaching is not my favorite task, but I think it’s the way I can reach more people, and make a difference. I would prefer to write software all day and night, but nobody is using it… snif… ;-)

I’m interested in the game of go, since early eighties, when I met the game at Universidad de Buenos Aires. In my opinion, is the best mind game ever invented. But I have professional interest in it: it’s the hard problem in game programming and artificial intelligence.

I’m a fan of code generation from a model. My pet open source project is AjGenesis. You’ll find more info in the links at the end of this post. For years, we forget to raise the level of abstraction, and, after all advances in technologies and platforms, we are still using programming language in the same way we used them thirty years ago. It’s time to address complexity of making software with the help of software itself.

Artificial intelligence is a topic that struck a chord in my brain and heart, even before software development. I predict these coming years will be full of synergy between AI, grid computing, robotics and web n.0. I’m working on cross over between AI and code generation. Automatic code generation is a kind of expert system. The field could be improved using AI.

I was selected as Microsoft MVP since 2002. There is something wrong in the selection process, and the title was renewed this year. I guess I suffered the same bug that made Martin Salias an MVP… ;-)

Reading is one my favorites activities. I could spend hours, literally, reading about the topics I mention. But, after reading, I dedicate time to think and write what I discovered in readings.

After writing so many posts, writing software projects, and collecting information, I guess the best way to understand me, is visiting my personal site, blogs, relevant posts, and projects (OK, it could be a overwhelming list, take whatever you think is interesting, or forget the full list). In “Pierre Menard, Author of the Quixote“, Borges enumerates Menard’s works, a way to show Menard increasing mental illness. Well, this is my own list, take your own conclusion… ;-):

Personal Sites
http://www.ajlopez.com (Spanish)
http://www.ajlopez.com/en (English version)

Feeds
http://delicious.com/ajlopez My Delicious Tag Cloud
http://twitter.com/ajlopez You must follow me if you want to understand my brain-damaged behaviour
http://ajlopez.popego.com I’m testing this autoblog
http://friendfeed.com/ajlopez Consolidated me

Software Development Blogs
http://www.msmvps.com/lopez (Spanish)
http://ajlopez.wordpress.com/ajlopez (English)

Software Development
Codethinked: what is your strategy for becoming a better developer
Programmer competency matrix
Grid Computing
Grid Computing programming
AjGenesis Studio: an IDE for AjGenesis
Lessons learnt from an agile year
Un programador pragmático
Tres canteros
Agents in a grid
Code generation as a service
Aprendiendo de Jason Bourne
Articifial Intelligence Posts (Spanish)
AjGo- hacia un programa que juegue al go

Projects
AjGenesis my code generation project
AjGenesis Posts (English)
AjGenesis Posts (Spanish)
AjMessages Fabriq-like implementation
AjBasic Basic interpreted, base of AjGenesis template language
AjSharp Other interpreter, based in the same core of AjBasic
AjFunc Functional language interpreter
AjLogo Logo language interpreter
AjTalk Smalltalk interpreter
AjAgents Agents, with asynch message communication
AjLisp Lisp language interpreter
AjGo Computer Go program
Coming soon: AjProlog, AjCloud

Personal Blogs
http://ajlopez.zoomblog.com (Spanish)
http://ajlopezen.zoomblog.com (few posts, practicing English)

General
My best post ever: El arte de Angel Java Lopez, un prólogo de Gervasio Montenegro
Me pisó el 60
El efecto Coto
Si no está escrito, no existe
Don’t be a canuto (Spanish)
Don’t be a canuto (English translation and comment, by Ignacio Baumann Fonay)
A post a day keeps the doctor away (Spanish)
A post a day keeps the doctor away (English)
A post a day keeps the doctor away 2008 (Spanish)
The game of Go by Borges

Mathematics
Mathematics in my site
Mathematics in my personal blog
Teoría de Galois
La forma de trabajo de Andre Wiles
Siete mil años de matemáticas
Recordando a Beppo Levi
Recordando a Mischa Cotlar
Mathematics in my delicious

Science
Science in my personal blog
El estudio de las partículas fundamentales
Partículas fundamentales y representaciones, según Feynman
Información, átomos y Feynman
Science in my delicious

Philosophy
Philosophy in my personal blog
Al pan, pan y al hecho, hecho
Posmopolitan
Grandes preguntas en filosofía
De donde venimos, adonde vamos
Oye Mike, ¿cuál es el sentido de la vida?
Estrellas desde la balsa
Un plin plin en el viento
Para triunfar en filosofía
En difícil es más “cool”
Las cosas y la esencia
La última pregunta
Philosophy in my delicious

Philosophy of Science
Conceptos, modelos, mecanismos y ciencia
Sobre el psicoanálisis
Los elefantes, la tortuga y el modelo
La filosofía y la ciencia
Ciencia es más que leyes
La actitud científica en la vida cotidiana
Bunge y el psicoanálisis: Macaneo I, Macaneo II, Macaneo III
El limón adelgaza

Other topics in delicious
Entrepreneurship
Economy
Business
Microsoft
Google
Twitter

A short explanation of Anglish in my presentation at RAF 2008.

Angel “Java” Lopez
http://www.ajlopez.com/
http://twitter.com/ajlopez

 

Posted in General, Software Development | No Comments »