KakimotOnline

January 26, 2009

Measuring Team’s Code Quality

Filed under: jobs, programming — Tags: — nandokakimoto @ 2:56 am

Hi,

in the last post I mentioned a good reference to prepared youself for a  interview process. However, before you get prepared, you need to choose the company that you’ll work for. Actually, this is one of the hardest step to take. I don’t know anyone who wants to work for a bad company or within a poor team. But, how to measure the quality of the company if you don’t even know anyone from there?

This month I’ve read Joel Spolsky blog a lot and in one of his posts he talks about measuring how good a software team is. For that, he created The Joel Test: 12 Steps to Better Code. The test is shown below. 

joeltest

With The Joel Test it’s easy to answer ‘yes’ or ‘no’ for any of those questions. For each ‘yes’ answer you count 1 point and as Joel says “A score of 12 is perfect, 11 is tolerable, but 10 or lower and you’ve got serious problems”.

To take profit from The Joel Test, he gives some warnings on how to use it:

  1. Rate your own software organization.
  2. If you’re the manager of a programming team, use this as a checklist to make sure your team is working as well as possible.
  3. If you’re looking for a programming job, ask your employer how they rate on this test.
  4. If you’re an investor doing due diligence to judge the value of a programming team, the test can provide a quick rule of thumb.

If you work in a team with score lower than 10, it’s time to wake up. Try talking with you manager on how to improve your team score or, if you’re only a grunt, this another Joel’s post may help you. You can take more information about The Joel Test in his own post dedicated to it.

See you,


Fernando

January 19, 2009

Programming Interviews Exposed

Filed under: jobs, programming — Tags: , — nandokakimoto @ 1:47 am

book

Hi,

this week I’ve finished reading Programming Interviews Exposed: Secrets to Landing Your Next Job. Actually, I’m not looking for a new job now, but I was a little bit curious about how the book shows the way on solving programming problems. The book discuss a lot of lists, trees, strings and arrays problems and solutions, making a very detailed explanation about each of them and their time cost. Besides of that, it teaches you some secrets of big companies’ interviews process.

The book is divided in 16 chapters. Here they are:

Chapter 1: Before the search

In this chapter, the book talks about tasks that you should perform before looking for a new job. The first one is knowing yourself and what kind of programmer you are. Next, you should know the market and understand the current job you are applying for. Later, you need to develop market skills such as upgrade your credentials, get certified and keep learning. Finally, you must sanitize you online profile to prevent screeners to find online informations that can affect your chances of being hired.

Chapter 2: The Job Application Process

This chapter exposes that networking is the best way to find prospective jobs. However, if you don’t have a good one, contact companies directly. The chapter also talks about the interviews in an job application process. In short, there will be one or two screening interviews, usually done by phone, and later a series of on-site technical interviews.

Chapter 3: Approaches to Programming Problems

This chapter introduces the importance of coding questions in programming interviews because they’re the opportunity to demonstrate that you can do the job. Try making your code solid and pretty and always explain what you are doing to the interviewer.

Chapter4: Linked Lists

This chapter talks about linked list data structures, kinds of linked list and  its basic operations, nothing too advanced at all. However, the good part is in the second half of the chapter:  linked list problems, the typical problems that you might encounter during an interview. So, I will be a good boy and show you some of them

  • Discuss the stack data structure. Implement a stack in C using either a linked list or a dynamic array, and justify your decision. Design the interface to your stack to be complete, consistent, and easy to use.
  • head and tail are global pointers to the first and last element of a singly-linked list of integers. Implement C functions bool remove(Element *elem) and bool insertAfter(Element *elem, int data)
  • Given a singly-linked list, devise a time – and space-efficient algorithm to find the mth-to-last element of the list. Implement your algorithm taking care to handle relevant error conditions. Define mth to last such that when m = 0, the last element of the list is returned.

Chapter 5: Trees and Graphs

Similar from chapter before, Chapter 5 gives an introduction on trees and graphs data sctructures followed by some problems involving them. Here they are.

  • Perform a preorder tranversal of binary search tree, printing the value of each node, but you may not use recursion.
  • Given the value of two nodes in a binary search tree, find the lowest (nearest) common ancestor. You may assume that both values already exist in the tree.

Chapter 6: Arrays and Strings

This chapter focuses on arrays and Strings explanations. The book starts with their concept and the differences of each one in languages such as C/C++, Java e C#. Later, comes problems involving operations with both data types. Here are some of them

  • Write an efficient function to find the first nonrepeated character in a string.
  • Write a function that reverses the order of the words in a string.
  • Write two conversion routines. The first routine converts a string to a signed integer. The second routine converts a signed integer sotred as an int back to a string.

From here, I’ll start just saying the name of the chapters, trying to incentivate you reading the other problems by yourself.

Chapter 7: Recursion

Chapter 8: Concurrency

Chapter 9: Object-Oriented Programming

Chapter 10: Databases

Chapter 11: Other Programming Topics

Chapter 12: Counting, Measuring, and Ordering Puzzels

Chapter 13: Graphical and Spatial Puzzels

Chapter 14: Knowledge-Based Questions

Chapter 15: Nontechnical Questions

Chapter 16: Conclusion

In short, this is a very good book on its purpose. So if you are close to apply to some interview process, reading this book is a very good start.

See you,


Fernando

Blog at WordPress.com.