Archives for July 2003

Employability and work ethics

Imagine that you are a perm, working for a few years in the same company. You are a mid/senior software developer. You work, maybe, in your cubicle. You are good at what you do. You are adaptable (you were even the first to be ready to help the company move from legacy .NET to J2EE). You don’t even need trainning, you do self-trainning as you have enough conceptual knowledge to learn by yourself. You help/mentor your coleagues. You are productive, deliver on time, and with very few bugs. You document your code. You do unit tests.

For some reason you loose your job. BTW, you know that your ex-colleagues and your ex-manager will be your reference (they may be in the same situation as you, jobless).

You start job hunting. You don’t have that many contacts because you were all the time in the cubicle. So you send CVs.

Your CV arrives to a recruiting agent. It says more or less the same that a CV from somebody that doesn’t have half of your abilities. In the stockpile, even the cleverest recruiting agent will probably miss your CV.

You are lucky and your CV lands on some HR department, the HR people have the same problem as the agent, and between the 100 CVs yours will probably be missed.

If you are lucky to get an interview, than you are probably OK. You will shine at it and BTW the references will help. But to get the interview, nowadays, its almost impossible.

The moral of this story is: being a professional, reliable worker has value but its not enough. You need contacts, you need to make yourself visible to the world.

There are lots of ways of doing this, but it takes time: Have a job that puts you in direct contact with lots of people (and do a good work to them), help an interesting open-source project, blog with quality, write articles, help on mailing-lists, etc. My suggestion is: choose things that you like to do as in most of the cases you will do it in your free time and you will need motivation to maintain that activity. It not guaranteed, especially in these times, but is surely better then knowing almost nobody and only sending CVs in the blind.

A final, important, note: If you search on the Internet, you will see that unemployment from Math/CS grads is still below the unemployment average in most countries. The situation is not that bad, the problem is that we are used to 0 unemployment, which will probably never come back as our industry matures and becomes a normal industry with normal unemployment rates

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • connotea
  • DZone
  • Reddit
  • Slashdot
  • StumbleUpon
  • Technorati

Filed in: uncategorized

by: tiago

No Comments

Java is more Efficient than C

Before discussion I am assuming the following:

  1. Server-side development
  2. Efficiency meaning less time to develop
  3. Efficiency meaning less maintenance hurdles
  4. Efficiency meaning faster execution!

Points 2 and 3 are pretty obvious: From the language and API advantages Java code is smaller and less dirty than C code. What is not that much obvious is that in 90% of the cases these are the most important types of efficiency. That is, from an economic point of view its much better to be conservative on developer and management time (human resources) than on, say CPU time or memory.

But I would also like to argue that in most cases Java code (server-side) is faster. A short story:
A macho programmer that I know decided to implement an highly threaded proxy server in C. Threaded programming in C/Unix (pthreads in the case) is quite awful. Also, other things for the project at hand are already available out of the box in Java, but not in C. It so happens that the proxy has a performance bug (still to be discovered) that puts the CPU at 100% utilization.
Yes, I know that with more careful programming (note: this guy is not bad at all) the C version could be much better. My point is that the human ergonomics of a language should also be considered regarding the performance of it, so as C is a dirty language, there is a bigger possibility of your code be less efficient because its easier to make (performance) mistakes.

There is also another reason why Java (especially on the server-side) can be faster: Clever engineers designed APIs and application servers for you to use and architected it with performance also in consideration.
You might have a deep understanding of your application domain, you might even understand server architectures to a certain degree, but do you really believe that you can do that better than dozens of engineers that concentrate solely on making clever application servers and APIs? I understand a little bit of infrastructure, but I prefer to outsource it, and concentrate on my core business.

By the way, a link on Macho programming

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • connotea
  • DZone
  • Reddit
  • Slashdot
  • StumbleUpon
  • Technorati

Filed in: Java

by: tiago

No Comments