Sounds dirty ha! Let’s get deep, but this time with some corporate manager, named Dean Hach from Microsoft. This is very close to the full conversation that I had with him today; I will write commentary notes about what I thought of this interview in later posts.
Dean: Arya!
Me: Yes;
Dean: Hi, I am Dean from Microsoft;
Me: Hi, I am glad to meet you;
Dean: Have you completely filled out the application?
Me: I have a little bit left;
Dean: OK. I give you another minute and I will be right back;
And he leaves me alone so that I finish filling out the brief job application.
Dean: Are you done?
Me: Almost, just let me sign here and here you go;
Dean: OK. What position are you applying for?
Me: Program Manager;
Dean: Tell me why you are interested in being a program manager;
Me: Well, I have done a lot of coding and I realized most of the issues later in the software rises from poor design, and during my course of internship, I have reengineered the design of a software which I found it to be my strength;
Dean: Tell me more about what you did exactly;
Me: Initially I was given these codes, written in Perl, which supposed to perform some auditing on company’s databases. They were hard to deal with and their design was not modular or scalable. So, I spent a lot of time coming up with a better solution; [I get cut]
Dean: So, did you write any code?
Me: Not at the beginning, but after the redesign. I spent a lot of time, maybe over a month, to design the software. I researched what outcomes this software needs to have, or what methodologies are best for implementation; for example, by the end, the software must have produced an audit report showing the access privileges which were issued or revoked to certain organizational databases, and then; [I got cut]
Dean: OK. Let’s do this problem: You have an array of a[0-N] which holds values from 1-N. Obviously, there is a repeated value. Assume there is a function duplicate(a[],size) which returns the duplicated value. The first argument is the array, and the second is the size. Give an algorithm which solves this.
Arya: Hmm.. Interesting problem! What timing goal do you have in mind? I mean, how efficient do you want it to be?
Dean: The most efficient;
Me: OK. Let me think a little bit;
Then I paused for a minute to think.
Me: OK, let me tell you what I am thinking, well I think there is linear algorithm. We take the first one, and check it with the second one! Oh! Hmm! this doesn’t work as I was thinking, let me think a little more;
Me: OK, let’s use one of our favorite sorting algorithms like quicksort to sort the list in O(n lg n) time. Then we can apply my previously thought method, and that is to start from the end, and check the last one with the one before it. It is equal to the one before it, and then we return, otherwise we call the function recursively decrementing the size so that next time this process repeat. This should give you O(n lg n) + n [I got cut]
Dean: Which is?
Me: O(n lg n) which is dominant over n and that is log of base 2.
Dean: Does it make a difference if it was log of base 10?
Me: This is quick sort and we are dealing with binaries; it is not log of base 10;
Dean: I know, but let’s assume;
Me: Well, mathematically log is dominant, weather base 10 or base 2;
Dean: Alright, tell me the name of a software which you use every day;
Me: Windows
Dean: Ah.. Let’s skip Windows. What do you use to surf the web?
Me: Firefox!;
Dean: Oh. OK. Good. Tell me what is the killer feature of Firefox that you like such that you go to someone and tell them you love Firefox because of that feature;
Me: I like the session restore feature after the Firefox crashes;
Dean: OK. Let’s say you want to improve it, what would you do?
Me: You know, when you are typing your email or filling out a form, if it crashes, you lose all that, and I like to see some feature which also restores my sessions, of course in a secure way; for example, if I was logged on to my bank site, it is not a good idea to re-open that again. So, I am thinking to secure those cases with some password mechanism or secure cookie handling like killing the cookies for those sites;
Dean: So, you recommend to have a cookie manager so that customers can chose which cookies to delete or keep;
Me: Well, not quiet. Most people don’t know what are cookies, and it is hard to explain it to them, we are CS geeks and we know what they are; thus, I recommend making the cookie manager as hidden as possible, so it does things in the background in a proper way;
Dean: What is a cookie?
Me: Cookies are files residing on the client side and sometimes on servers keeping some information about customer’s state of browsing. This can range from session data and encrypted passwords to shopping cart data.
Dean: Let’s say you want to launch Firefox 3.0. What would you do with it?
Me: I make the browser the Operating System. Everything is going to be in the browser like my documents and applications. I am saying this because in the new generation of the web, everything is like an application in the browser rather being only bunch of links. You can do everything in the browser and save your stuff in a centralized place;
Dean: Do you have a laptop?
Me: Yes;
Dean: What would you do if you are on the plane and there is no Internet?
Me: Well, initially my assumption was that in the future the communication pipeline is going to be everywhere, but saying that it is not, we can implement caching such that your work and some of the frequently used applications get cached on your local machine and then synchronized while you are online;
Dean: Lets go back to the current Firefox, saying you want to add a small feature to improve the current version. What that would be?
Me: Well, I improve the password manager in a way of making it portable, such that you can export your Firefox customized settings and passwords into a portable device like a USB key, and then when you are using some other computer, by plugging in your USB key, after passing through some method of authentication like password, then the browser will act like you are using your own with your passwords and saved links.
Dean: What is AJAX.
Me: It stands for Asynchronous JavaScript and XML; basically, many of today’s web pages are translated into XML, and requests get sent back and forth in XML format, and they get parsed by the browser and a front end JavaScript is tight to most of these web pages using the parsed XML data to update portions of the web which needs to be changes rather the old fashion of refreshing the whole page; this allows more elaborate and interactive web pages; for, example the new Live Mail or Yahoo! Finance can be good examples, only the portions of the page gets updates as needed, and this is what AJAX does;
Dean: OK, I am going to stop here; do you have any questions?
Me: What do you do at Microsoft?
Dean: I am the head lead of Internet Explorer;
Me: What do you think about me?
Dean: Obviously you are very passionate in your work, and you are able to see what needs to be the outcome of the project like needing the audit list on a spread sheet work to achieve it using different methodologies. You are very visionary and can see customer’s point of view and examine what they need, but you are not deeply technical as compared to some of your peers. What do you think?
Me: I think that is true in your perspective of being deeply technical.
Dean: Well we need someone who knows exactly what SOX wants, or I really need someone knowing how to deal with network stack. We need someone to have an exact balance among vision and technical expertise.
Me: Don’t you think someone with deep technical expertise will have a different perspective of software and the way they should be rather than a visionary person with customer’s perspective?
Dean: No, a lot of time, if you don’t know something because you don’t know the details deep enough, you get stuck. It is like for me, staying fit is important, and you ask me what do you do most of the time, and I say I watch TV and go to restaurants. Well, I should have said I like to watch TV rather than going to the gym.
Me: Well, you think I don’t know the deep technical stuff, why don’t you ask me more questions about SOX and network stack that you are curious about?
Dean: Well I guess we are running out of time.
Me: OK. Then. It was really nice chatting with you.
Dean: Same here, good luck.