Dose of learning, not only technical aspects matters

When I started as a programmer, technical matters had the most weigh of my interest, but the more I advance in my career the more I see social and humane aspects of software development as more important than pure technical ones. Some of these aspects turn out to be about dealing with others, having an always-tuning process that fits in your organization, to have a good empowerment policy and stuff like that, probably I am missing a lot of other aspects, but the idea is that not everything is just coding ...

Here's a couple of links to share while consuming the Internet :)

A way to keep track of what you've learnt is to keep a learning log like this one, so you store the real interesting things that helped you in some way in a search-able log. Another learning technique is to talk to someone else about a new thing you just discovered, that would normally make different points of views to show up about the same subject that you haven't though about before. That interaction will make the whole new stuff you've learnt to cause a deeper impression in your brain and will help your memory to remember it later

High IQ != Smart. IQ tests can measure our analytical thinking. But "we process information in two different ways, one is intuitive and spontaneous; the other is deliberative and reasoned". Our IQ can't predict which way will we go on while making a decision given an specific circumstance, this explains why intellectually-able people make fool decisions. The link provided in Slashdot gives us advices on how to not make a quick-and-bind mistake

Are you emotionally intelligent ? Can you measure it ? Can we take benefit at work by knowing it ? I particularly found this article interesting,

Interview with a Software Engineer Kurt Wilms. The last question asked is an advice for up and comming programers. Focus on skills that are transferable

Software that fixes itself. I've heard about this project some years ago and I couldn't believe it. And now it is actually working and doing something real, I still can't believe it !

Can Java be saved, Yet another discusion but really good to read, more the comments than the article.

Java Can be saved. Well, the natural post response to the question :). This really shows a good point where Java is really weak. Read all the comments !!!

Interesting links


Project Management

Junior developer advises

Hi all, I initially started to post link compilation of what I've read in my spanish blog, but ultimately all the links I read are in english, so there is no sense to not post it here.

Basically, all posts under 'links' tag will always have a compilation of links of pages I read, and a short quote of what is in it, or why it might be of interest for you.

I hope you enjoy it, otherwise, remember this is not your blog and just go away :D

Timeless quotes ...

Hi all !

I was looking for interesting quotes every week since I started my last job and now that I've collected a lof of them I want to share it. For some of the quotes I am not sure to whom it belongs, so I decided to let you google for the atributions :)

Enjoy it !
  • Realize that declarative programing is as easy as the 1300 pages manual is showing it is :)
  • Everything should be made as simple as possible, but not simpler
  • Imagination is more important than knowledge
  • Don't let your victories go to your head, or your failures go to your heart
  • When the only tool you have is a hammer, everything looks like a nail
  • Certified coffee addict !
  • The question of whether computers can think is like the question of whether submarines can swim
  • Knowledge talks, Wisdom listens
  • UNIX motto: Provide mechanisms, not policy
  • In theory, there is no difference between theory and practice, but in practice, there is :(
  • An expert is someone who has made all possible mistakes in a very narrow field
  • Before we work on artificial intelligence why don't we do something about natural stupidity ?
  • C makes it easy to shut your foot if you want, C++ makes it a little bit harder, but when you finaly do, it blows out your whole leg !
  • Imposible, es solo una opinion.
  • Style distinguishes excellence from accomplishment
  • Simplicity is prerequisite for reliability
  • You are finally taking a shower ... now your phone rings ... and when you reach your phone to answer ... it was a wrong number
  • A documented bug is not a bug, it is a feature
  • Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away
  • Weeks of programming can save you hours of planning
  • Computer science is an immature discipline, and I aim to keep it that way
  • The great thing about Object Oriented code is that it can make small, simple problems look like large, complex ones
  • A good developer will understand the business implications of technical decisions
  • Always code as if the person who will maintain your work is a serial killer that knows where you live
  • Simplicity carried to the extreme becomes elegance
  • A good developer can translate words and ideas into code, a good engineer creates those words and ideas
  • In order to understand recursion, one must first understand recursion :)
  • We follow two rules in the matter of optimization: Rule 1. Don’t do it. Rule 2 (for experts only). Don’t do it yet—that is, not until you have a perfectly clear and unoptimized solution
  • One mistake and you have to support it for the rest of your life
  • Working with communities is more productive
  • Once you get started, you’ll only stop because you’re exhausted
  • It takes another experienced person to really appreciate what you’re doing
  • One little thing going wrong can ruin everything.
  • Truly great programmers do not exist, there are only those who claim to be great, and those who know they are not great
And these ones comes from wikipedia Seven habits of higly effective people 
  1. Be Proactive: Principles of Personal Choice
  2. Begin with the End in Mind: Principles of Personal Vision
  3. Put First Things First: Principles of Integrity & Execution
  4. Think Win/Win: Principles of Mutual Benefit
  5. Seek First to Understand, Then to be Understood: Principles of Mutual Understanding
  6. Synergize: Principles of Creative Cooperation
  7. Sharpen the Saw: Principles of Balanced Self-Renewal
  • Typing is not now and never has been the bottleneck in writing code
  • Software entities should be open for extension, but closed for modification.
  • Buy the best, build the rest
  • The most difficult thing in the world is to know how to do a thing and to watch someone else do it wrong without comment.
  • Use the simplest thing that could possibly work

Where do you host your website to scale ?

I have been talking to some colleagues about how to start a project that you know it will probably need to scale in a couple of months, think of a heavy text content site. [update: like a lyrics site with kind of social features added to it, with urls that makes the search engines happy]

Actually what we have as far as I know are services like google appengine, that provides you with a full api where you can build your web site. You know they give you processor time, storage space in their datastore, kind of non-relational ( but scalable ) database and a lot of network throughput. What I like about this service is that you pay very little money for a lot of resources, at least as far as know.

Then you have virtualization services like linode and amazon ec2 and other services that I like more because it gives you full control of how to program your site without limiting you with a closed api or closed vendeor.

Microsoft also offer public cloud computing services called azure and I think yahoo also.

But here are some things to have in mind. I don't have a good feeling about who's the real owner of your application since you upload your code to google appengine for example. Or then you fear that they'll say you that your application violates some policies you were supposed to follow. Well, I think you understand.

I think comparing services like appengine and the ones that offer virtualization creates you another problem if for any reason you need to move from one to another, because you probably will need to re-enginer the urls if you'll change the way you are programing and you know, there goes all your page ranking and you'll have broken links if you gained some of them before wanting to move your application.

I am sorry if my English is irritating you, but this is as far as I can talk, what I want to know from you is what will be your thoughts on this topic. What will be the service you'll choose and why. Which services are you using and what is your experience in it.