How to prepare for a Technical Interview

With April being the graduation month here in the Philippines, you’ll be seeing fresh graduates in various forums and discussion groups looking for advice on how to pass technical interviews. Here’s one posted over at the PHP Users Group forum earlier today:

Can you help me with this? I’m going to take a technical written exam for a job i’m applying. Here is the list of what are expected on the exam:
-Basic Programming
-OOP
-recursive programming and variables in programming
-? statement
-conditional statements
-loop statements
-flowcharting
-pseudocodes (strings,odd/even)
Can you guys give me tips and heads up on where to focus and what to expect on the exam? The exam will be next week and I want to be prepared for it. Thanks in advance.

PS: Hindi ko alam kung anong programming language ung eexam. (I don’t know what programming language will be used in the test)

Whenever I see these type of questions, the first thing I do is give a ಠ_ಠ to my monitor. The listed coverage above is so basic that every 2nd year college student should have no problem with it.

It’s like a carpenter asking what tool to focus on when applying for a carpenter position: screwdrivers, hammers, saws, or measuring tape? Yes, it’s that basic.

Unhelpful snarkiness aside, what advice would I give to these fresh grads?

Continue reading “How to prepare for a Technical Interview”

Quick Look at Notepad++ as a Windows Ruby/Rails Editor

Last year, I looked at the better Ruby/Rails editors in Windows. With Notepad++ version 6 released recently, I decided to check whether it’s good enough to be an alternative to those two.

Screenshot again with my depressing lotto app:

notepad++

Overall, it’s ok, especially with the Explorer plugin. However, there are still a bunch of stuff I’d nitpick about:

  • Split screen is limited to 2 screens. Which is weird limitation considering both vim and emacs can do an infinite number of them.
  • EOL symbols are ugly and can’t be modified.
  • No Haml support yet.

Other languages you should learn

body language

At first glance, this tweet in response to my previous post looks like a simple joke. But it’s actually true the more you think about it.

Understanding body language is important because software engineering is more about dealing with people than with software itself: almost all failed software projects are due to people problems (e.g. management and client problems) instead of technology problems.

Here are some cases where knowing body language can make a difference:

  • A client asks for too many features under an impossible deadline – by gauging the client’s behavior, you can determine if she’s basically bluffing (to which you negotiate a compromise by reducing the scope) or if she’s really that stupid/sadistic (to which you drop the client for better ones).
  • A developer puts in too many hours into overtime – depending on the dev’s behavior, a good manager would determine if that dev is simply temporarily getting brownie points for a promotion or upcoming long vacation. On the other hand, it may also mean that that dev is incompetent to the point that he needs more hours to fix his crappy code. At the worst case, it may also mean that that dev is already at stage 2 – 3 of going into burnout.

Another non-technical language you need to learn is Basic English.

Go ahead, laugh. But then recall the last time you’ve seen a “plz send me teh codez” post in a public forum or a job posting full of misspellings and grammatical errors (a big warning sign) and you’ll quickly realize how important it is to have a good grasp of the English language.

Lack of proper written English skills is a somewhat widespread problem in the current generation, with the prevalence of text-speak and the fact that a lot of young people don’t join international community websites/forums/mailing lists/chat rooms. This can be a problem when they enter the corporate world, where semi-formal English is the lingua franca: I’ve even heard of stories of project managers re-writing some of the team members mail before sending them to their foreign counterparts because of their poor English.

Note that your English doesn’t need to be at the level of essayists or other professional writers. In fact, simple, direct to the point (but at the same time, polite) messages is much more effective at communicating to clients or team members when compared to long-winded messages full of highfaluting words. Doubly so when dealing with clients whose primary language isn’t English.

To wrap things up, I just realized that I wrote about a similar topic a few years ago. You don’t need to click that link, as the tl;dr is just the same thing I’ve been saying all the time: developers need to learn more than just coding.

What programming language should I learn?

I got to talk for DevCon again last Saturday at STI Makati. Instead of preparing a new talk, I just rehashed an old talk to save time. The new talk is also over at Slideshare.

Anyway, the point of this post is to answer a question posed to me by a student in the Q&A portion of the talk:

Anong programming language ang dapat naming pag-aralan?
(What programming language should we learn?)

Here’s a question I wouldn’t want to hear answered by someone else (i.e. someone who’s also invited to talk to students). The question itself may seem simple, but unless you’ve seen how the industry works as a whole, you’ll probably give a wrong answer.

The traditional answer I don’t want to hear is to give a suggested list of languages based on market demand.

Simply put, this is bullshit. This is the same sort of bullshit that pressures our youth to take nursing courses even though they’re just in it for the money, money that they probably won’t get due to the eventual over-supply of nurses.

So for the student’s question, I gave two answers:

Programming language and platform choice doesn’t matter, because for the most part it’s a business decision.

Yes, I’m talking about steaks and strippers. In a large company, you may be initially hired to work on a single language, but eventually there will be a time where the company will make a business decision to shift technologies, whether due to market pressure or due to a new client. If you focus too much on a language, you will not be prepared for the change and you may end up getting fired or demoted.

In smaller companies or in a freelance setting, language still doesn’t matter, though for another reason: the client will not care about the language as long as you deliver the product.

This leads to the other answer:

Focus on the fundamentals, not on the language/platform.

A common mistake among fresh grads is that they’re confident they know language A or platform B because they were able to make their school projects or theses while at the same time not having their fundamentals down pat. Not only does this make them inflexible in terms of learning new languages, it also makes their work brittle and sloppy.

In other words, a student who has 4 years of school “experience” in Java is nothing compared to a developer who just had learned Java a month ago but has solid fundamentals in OOP.

You might say “Screw learning, I’m just in this for the money!”. But the fact is, there’s this thing called the Python Paradox: developers who are passionate enough to learn more than their peers often end up in higher-earning and less-stressful jobs.

Bottom line: There is no “best” language that you need to learn in order to earn a lot of money. However, if you have good fundamentals, learning the language and platform that the market needs will be much easier for you.