Posts Tagged ‘interviews’

Working ,Networking and NonWorking – Part 2

September 20, 2009

In Part one I tried to explain how many “schmoozing” events can waste one’s time and push productivity down the drain.

In this post I’ll explain when networking is a valuable, productive and even a friendly habit.

People around me claim i’m usually over optimistic and tend to see the full half of the glass. Even when the world financial system collapsed, I thought it might bring a change and sanity to the bankers’ outrageous salaries.

Young Bankers ?

Young Bankers ?

I belive in helping other people. If you can aid another person  it gives a warm fuzzy feeling inside, and maybe this person would return a favor some time in the future. Recruiting is one clear example of both.

In our company we recruited at least 60% of the employees through friendly referrals from people that we already knew in the past.We were even able to recruit VP positions using LinkedIn. Since I have many friends who are managers with hard to fill  open positions and many acquaintances who are looking for a new job, it is a great joy to help both sides.

I don’t always like to assist friends to reformat the hard drive but it is really fun to help others to improve their resumes and market their capabilities.It is quite often that I get a friends’  CV and I try to return it to him with gentle improvement suggestions.

Another example is acquiring the first customers for a start-up. In the early stages , one has to rely on personal connections. Obviously, there is no product, no marketing and no sales people. The main available possible assets are friendship,trust and greed.

Trust

Trust

  • Friendship means – I’m helping you because I like you and I want to help you.
  • Trust means – I know you can build a great product that will help me even though you have nothing right now.
  • Greed means – I will help you only because I know you and I gnat to make sure it will help me in the future, or right now.
Friendship

Friendship

Many people think only of greed when they think of “Networking”, but in many cases I found that trust and friendship are the major motives for a building a great helpful network in business and life.

Advertisements

MASLAM – Vain Operation to Soothe the Conscience

June 13, 2009

I only had the pleasure of meeting the impressive Yoel Ben Porat in person twice.

He was a brilliant person, with a sharp, uncompromising view of reality and a great sense for inventing new idioms.

We came to interview Yoel for an historical review of an organizational unit that he founded. We were planning to create a glorified PowerPoint describing the many successes of this unit. Much to our surprise , when we asked Yoel Ben Porat to describe it  he just said “It’s Maslam”.

We never heard the word before, so we asked for an explanation.In Hebrew it translates to “מבצע סרק להרגעת המצפון” which is loosely translated as an Acronym for “a Vain Operation to Soothe the Conscience” (VOSC ?).

What he meant to say was – it’s a useless body, it never had any achievements, it will never have any achievements and  it does not get any real budget or attention.The only reason it exists is that the real solution to the problem is expensive , but we are too afraid to cancel the whole thing as one they this problem might actually take place.

This is quite a common phenomenon in Israeli institutes. For years, after terror attacks, the Israeli government would send the air force to bomb “destinations” in Lebanon to retaliate . The destinations were always empty, since the enemy was expecting it and the retaliation never worked.

The hourly  radio news had a constant the tag line, that almost became a joke, “Our forces have bombed destinations in Lebanon and returned home safely”.

Not surprisingly , civilian managers fall into the same trap quite often. Look around you and search for the MASLAMS you created –

  • The special quality improvement project that lasted almost two weeks, but didn’t solve any root problems
  • The security officer who is supposed to prevent security bugs, but does not get any budget
  • The “We love the customer” signs posted around the office when most meetings are on “lets change the pricing to raise the profits”
  • The “Lets improve the documentation project” by asking every developer to stay an extra hour a day to write an FAQ.
  • The “New SMB product” that was created by disabling 80% of the  enterprise features, instead of creating a product that SMB really need

One thing that people hate the most is cognitive dissonance. When critical issues are at stake, put all the resources to work.

If it is  a MASLAM you are creating, you might as well cancel the whole project ASAP.

The Questions Reporters Never Ask (But Should)

March 5, 2009

In the technical field bloggers can be more professional and accurate then analysts\reporters  because they actually use the products they talk abort in the field.

I’ll demonstrate with the top questions you never hear analysts ask, but they should be asking, IMO.Lets assume a company just a announced a new version of their cool, innovative database. Here is an imaginary dialog.

Question:  How many memory leaks does your new Database have ?

Answer : We don’t really know because we didn’t find all of them, we have a watchdog that kills the daemon every 6 hours. Marketing invented a great name for it – “Automatic recovery in resource constraint environments”.

Question: If the new features are so good, why are they turned off by default ?

Answer: we thought that the real customers would not appreciate the 90% decrease in performance, but still wanted to get the “innovative vendor” award.

Question: How many bugs have you decided not to fix in this version ?

Answer : Only 500. We decided that if the customers haven’t complain about the 5000 bugs in previous versions, we should be fine this time as well.

Question: Why are you bundling the automatic scheme UI with the basic package now ?

Answer: no one would buy the stupid thing as standalone product. This way we might make some bucks out of it.

Question: Can I get the product to play with for 30 days ?

Answer : God forbid. Next thing you’ll want to talk to real customers and not just the two we found for you.

Interview Riddles for the Post Bush World and The Source of Amba

March 3, 2009

Few new questions for software developers interviews. I’m so tired of object oriented design and math riddles I thought I should change.

1. Amba comes from Iraq and Is made out of Mango. Obviously, There is no Mango in Iraq. Explain !

2. If Rice comes from China and India, how come it is so common with Bedouin ? Where do they get all the water to grow it ?

2.In Paris a great tasting Brie in baguette costs 4 Euros but a small cappuccino costs 7 Euros. In Tel Aviv the Sandwich would be 7 Euro and the cappuccino 4 Euros. Explain !

3. Why is there a need for A4, Folio and Legal paper sizes ? Who needs the extra paper ? Can’t we all live in peace ?

4. Is there any CEO that’s really worth 80M$ a year and can’t be replaced by someone just as good for 1M$ a year ?

5. Why does it take a Dual Core 2GBRAm laptop 5 minutes to boot ?

6. Why was there a metal detector in the entrance to VMWOLRD Europe ?

peace and amba in paris tour Eiffel

peace and amba in paris tour Eiffel

The Proof is in the Pudding- Stating the Obvious III

January 31, 2009

Contrary to what many programmers think, QA role is not to do the dirty work for them. QA’s role is to validate, independently, that the code actually works.

The reason I put the responsibility on the coder is simple. The coder is the one who writes the code, the one that understands it and the one that can change it. Why should anyone else be the owner ?

QA has a lot less options for proving the code works and reducing the risk than the developer, they can only test the functionality from a black box perspective.

Smart Software Developer using Virtual Lab Automation

Smart Software Developer using Virtual Lab Automation

The developer, on the other hand, has multiple options , beyond the ones already listed in part II.

  • Rewrite the code in a more modular fashion so it is easier to have unit tests
  • Move from c# to Python to make it easier to write mocks and do sub system testing
  • Add logs, alerts and assertions so he knows that edge conditions are safely handled
  • Refactor the code so User Interface validations and server validations use the same mechanism
  • Add new code with a separate flag\object\screen so it has less chance to have regression on other functionality
  • Shout at the product manager that the requirements are too complex and there is not way to implement them In SQL with proper testing
  • Move from simple ASP.NET mode to MVC model so more parts of the UI can be tested separately
  • Ask QA to help with extensive PRE-COMMIT manual testing as part of the development stage
  • Ask QA to help with running the automatic testing on development branches
  • Help the  Automated QA team  to make sure new features are tested during the development stage and not post deployment

The manager role is:

  • Iterate over and over the concept of ownership, proof and responsibility
  • Back the theory with resources – buy machines for testing, software for code checking etc
    • For example, buying two servers for the clustering team so they can test their code actually runs on a cluster
  • Help to manage trade-offs and real world considerations
    • For example, which functionality is used a lot and which is hardly used
  • Pay the “price” for making higher quality code
    • For example, Pay $50,000 for a new automated testing project
  • Avoid being dogmatic in the specific methodology
    • For example, unit testing might not be effective in certain places and forcing everyone to do them will just create resentment
  • Introduce and promote new technologies such as Virtualization and lab automation
  • Help apply the right methods in the right context
    • The JavaScript testing framework is great, but should we implement it right now ?

To summarize, like any other professional, the developer is the one responsible for the quality of his or her work.Allowing them to push unproven code to customers is what gave us bad reputation as an industry.However, the best ones are able not just to code, but also to analyze the risk, check for validity ,rewrite and design to create bullet proof products.

And if you read so far, here is a reminder to a lovely 80’s song.

Evident Based Coding – Stating the Obvious II

January 31, 2009

Continuing from the previous post let us check why would one pay a developer who can’t prove his code is working.

When I was in Check Point I used to have weekly pseudo-random interviews with employees. It is a great habit that I learned from Dorit Dor, my manager at the time.

When you manage 200+ employees it is one of the only ways to get direct feedback and stay in touch with what’s really going on, but it turns out to be a good idea even when there is only a single employee reporting to you.

One of my favorite questions to developers was :

How do you KNOW the code you produce really works ?

Amazingly, this pretty simple question had all of them surprised.

The university graduate, the PHD, the autodidact  , the hacker, the PC kid and even the group manager. None were prepared for this question.

The Surprised Software Developer

The Surprised Software Developer

The common answers were :

  • I don’t know it works, but I have a good feeling about it
  • It works most of the time
  • QA will test it and than I’ll know it works
  • I tried it a bit and it looks fine
  • I did a code review with my team leader and he approved it
  • It is a small change and I’m confident in it
  • There is no way to do it in the time I was given

As you can imagine, I was not very happy with most of these answers. Here are some of the best developers in the world, with five time the salary of a social worker with 30 years experience, and they can’t explain why their work is actually ,hmm, working.

My belief is that the Developer has to PROVE ,to a reasonable degree, that code he commits is working as planned and does not break other code.

If he can’t do it , he should not be committing the code to the general working branch.

How can the poor programmer achieve this goal:

  • Running and writing unit tests for his code and running them
  • Writing sub system tests for his code and running them
  • Using code checking tools, looking for warning, errors and suggestions
  • Asking peers for a code review
  • Going through the design and requirement and validating actual code implements them
  • Manually working with the system and going through all scenarios he claims to support
  • Spending couple of hours trying to come up with all the extreme cases and special problems
  • Going over the QA test design and making sure his code will pass the tests

And by the way, if all these methods are not available \ reliable or feasible it is also OK to commit the code if the developer EXPLICITLY lets everyone know the status before and gets the managers approval.

I want to commit the new screen, but I never tested it on FireFox and there for I assume it does not work on FireFox. Is it OK to commit ? I also didn’t test the sorting or the client side validation, but I think they might work because I didn’t touch this code and it is very solid

Obviously , developers are notoriously over optimistic  so this should be kept as a last respot, but making them say it out loud is key to maintaing high level of professionalism and ownership. More on this in the next post.

Resume bloopers

May 24, 2008

Below are some real examples from resumes I received, modified to protect the innocents. Each one is follwoed with my take on the quote.

1. Although I have no academic degree ,I authored multiple papers for master and undergraduate students. The papers got excellent grades and I was paid well.

  •   I’m dishonest, cheated for a living, and dim-witted enough to write about it in a CV.

2. My high school average grade is 107.

  •  It is actually possible in Israel , but not very relevant if you are over 22.

3. While working in ACME Corporation I also started a startup with two friends.

  •  I cheated on my former employers , failed miserably and now you have the opportunity to let me do it again.

4. English as a mother tonge.

  •  Excellent control of the spell checker as well.

5. Programming language : Basic, Logo, Turbo Pascal, C,C++, LISP, Visual Basic.

  • Someone once told me to mention every technology I have ever heard of.

6. Operating Systems : DOS, Windows 98,Windows 2003.

  • Not many people pratice DOS these days and I’m unique.

7. Army Service: Sniper. Finished first in Class.

  •  You’d better hire me, or else…

Where in the world are the great user interface developers? – Part II, The Interviews

January 19, 2008

Clones

 After we saw why most UI developers are underpaid, let’s examine why it is hard to filter out the best ones.The problem starts with defining the job description. I wanted to build an enterprise class web based service on .Net platform.

In ideal world I would have hired the following people:

1. Product manager to define product requirements, use cases and priorities

2. User experience expert to define interaction, hierarchy and guidelines

3. C# back-end programmer to program business logic, ERD and database access

4. C#, UI architect to define and implement UI modeling , framework, components

5. HTML master who handles ASP.NET, HTML , JavaScript & CSS

6. Graphic designer to implement ,well, the graphics

7. Flash programmer\designer for rich client experience

In the real world I am the product manager. The user experience and graphic design positions are outsourced. The hard part is to differentiate the C# back-end programmer,UI architect and the HTML Master. Sadly we could only afford two in-house positions for the three roles.

In the beginning, we made the mistake and asked for a “Web developer”. As a result we got the resume of John. John had no computer science degree; he worked for three years as a web site administrator and studied HTML in a technical college. John could not fulfill our position since he has no coding experience and did not develop any enterprise class applications.

Our second definition focused more on the programming aspect and on the “.Net” side.

Rachel listed six years of developing VB application in big IT software integration shop. Unfortunately she had neither web based background nor C# experience.

Tom sounded very promising. He had ten years of experience, four of which as team leader for multifaceted system management software. He had a graduate degree from a top university and seemed mature, experienced and friendly. In our first talk we shared insights about UI design, modeling and common mistakes. I really liked his character and insights.

We moved on to the technical part of the interview. Now, everyone has his own type of questions in such occasions. I usually hate asking riddles or peculiar C++ fine details that only stroustrup understands. My favorite questions are real life problems I encountered, which are hard to solve and have more than one acceptable solution.

Just to get going, we asked Tom to write down binary search implementation. Amazingly, he had a great difficulty in performing the task.  More surprisingly, he was not the only candidate who had trouble in this question.

Internally, this caused some debate. Some people claimed it has been ten years since he graduated, and it is possible he just does not remember the more algorithmic side of computer science. While I am willing to accept this assumption, I just fail to see how one can be a programmer and forget how binary search works. This is really elementary stuff. It’s true 90% of programmers  get it wrong, but we are not very picky on the exact implementation details.

To make matters worse Tom did not seem to have a clue on the internals of frameworks he was using. While it would have been great if one could develop web application with no concept of HTTP, but it just does not work like that in the real world. An exceptional UI developer needs to know how HTTP works to test the application, debug it and improve its performance.

Jane was far more impressive in the technical aspects, she had lots of experience in C++,MFC, desktop applications and a great track record. Unfortunately she was afraid to move into a new domain after 12 years of expertise. I tried to explain MFC is a dying art, bud had very limited success.

Frank came to the meeting with amazing samples of his work. He built a complete network modeling application In AJAX which looked as good as any desktop application. The only problem was that he was a JavaScript purist. He was not willing, or interested, in coding in the server side. His methodology assumed complete separation of the fat client, programmed in JavaScript, from the business logic code. While this concept can work, it would leave us entirely in his hands. There are very few people or tools that support this paradigm. Furthermore, Frank was cocky and only agreed to work as contractor.

Next Post – The Consclusions !