Thursday, March 12, 2009

The things you should now how to do – Part 1

I was a bit surprised when working for a company with a strong Java culture that many juniors, although awesome in Java, didn’t have a global picture of the world they worked in.
They sometimes lacked the most basic knowledge, and to me this is clearly not acceptable.

Below are the points I consider to be known when dealing with any engineer developing web application. I don’t necessarily request proficiency, but you have to know this exists, or know how to learn to do what I ask for.

  1. Write a command that traverses a whole Linux file system looking for a file, and send a mail telling where it is.

  2. You need to be able using the command-line. Period. Passing this simple test makes you able enough. Further knowledge you’ll be able to pick-up easily.

  3. Write an HTTP request using telnet.

  4. Might look stupid and odd, but it actually teaches me two things. You have basic network knowledge, and you understand how HTTP works. Some people seem to be dumb-stricken when I ask this.
    Additionally, when you don’t have fancy tools like Firebug or Wireshark, this is going to be your only way to debug: you will always have telnet.

  5. Be proficient in one scripting language.

  6. Two reasons for this. First of all, I think that learning an uncomplicated scripting language enables you to discover lots of things, from network programming to database programming, without the language itself being an obstacle.
    Second, on some servers all you’ll have will be either the shell or a scripting language. I would personally rather use Perl to do mass regex operation on files than a shell script, I just find it easier and more powerful.
    Third, learning any other scripting language should be painless once you are fluent in one.

    Which scripting language should you learn? Well, I would tend to say Perl.

    I actually love the language for a lot of reasons but the most important to me is it’s regex engine. You’ll learn regexes as an added benefit of learning perl. You’ll have to, since it’s so integrated with the language. And having a quite good understanding of regexes will definitely save your ass sometime soon.

  7. Using tcpdump

  8. Hey, we are working on a connected world. You have to be able to tell me what goes on on the wires. I can’t even tell you how many people working in our industry I met that didn’t even know what tcpdump was.

  9. Know what a LEFT JOIN is

  10. Even a marketing guy knows how to do simple SELECTs these days. Please demonstrate that you have more knowledge than a marketing guy when it comes to SQL.


Anonymous said...

4. Using TCPDUMP

You should take a look at ngrep. It's an easier mean to sniff network packets.

For example, to see your HTTP requests and responses in realtime:
ngrep -d eth0 -W byline '.*' port 80

Loïc said...

Hey, I agree with you on this one, but ngrep isn't always available :)

Anonymous said...

Well, tcpdump/ethereal neither...

Loïc said...

true enough. More likely though.

Loïc said...

BTW still gotta test ngrep but it looks awesome.

Post a Comment

Please leave your comment

Search Results