Python for Executives

July 20, 2008 by ophirk
I’m very happy with our choice to use Python as one of our core development languages. It has proven to be a great time saver, in overall development costs and allowing an excellent pace of changes.

When we started IT Structures we debated over using Java\Linux combo or .Net\Windows duo.  Python was pushed in as an “experiment” by Ronnie. Our collective experience was derived from C , C++,JAVA , the hard core programming languages of past decades.

Python Logo

We started with Java, as our core belief was that Linux is a much stronger server platform than windows and that integration with a large number of distributed servers would be much easier in Java.

It took us less than a month to throw Java\J2EE out of the window. It was just far too complicated to get a simple combo box done, too many library options, too many eco-systems which are magically incompatible.

We decided to move to .Net and IronPython, preferring the developer productivity over the server utilization. This was done two weeks before the deadline. The combination allowed us to finish the version in the original time frame with minimal delay.

IronPython is cool because Python can be used together with C# and .Net . We are using C# for the more “traditional” business logic and UI elements, while Python is used for orchestration of a highly sophisticated real time server environment. That way we enjoy the best of both worlds.

The main fears managers have around Python are: Risk, Recruiting, Performance and Immaturity. At this stage I can say we have overcome all these reservations.

  • Recruiting - It turns out that smart and innovative people are attracted by Python .Innovative smart people can also learn Python very quickly.
  • Risk - in one year we had only five cases where a Python specific bug occurred. We had many more ASP. NET, JavaScript, HTML and even Java specific problems.
  • Maturity - not only is Python very solid, so is IronPython. The code is stable, the smart features work, the community is responsive and the libraries are rich. The only downside is the IDE and Visual studio integration, but this is progressing as well.
  • Performance - Python flexibility allowed extremely fast optimizations at the system and algorithmic levels, without requiring premature optimization. The system and algorithm changes are the ones critical in a real world environment. Some issues are showing up, but it seems they can be solved with a reasonable cost.

As time passed time our confidence grew we started using Python in a more and more places across our service. Overall it was an excellent choice and well worth the risk. I would not go into the reasons for Python success in this post, but you can read about it around the web.

The Feature Owner

July 4, 2008 by ophirk

One of the strongest concepts I learned in Check Point is “Ownership”. For almost any task there is an “owner”. The term “owner” is quite different than “manager”. On one hand it implies emotional attachment and on the other hand it implies you don’t have to be a manager to have responsibility.

The simplest way to describe the owner function that the owner bares the sole responsibility to finish the task he owns. He is accountable.   The “Feature Owner” is a specific example for an ownership within the R&D organization (which is actually called “products organization” in Check Point).

How does it work?

The product manager wants a new feature added to the on-line application. Let’s assume the feature is a new usage report for an on-line application. The group manager chooses a Sara to be the feature owner. Sara is a senior developer.

Sara now owns the entire life cycle of the feature: requirements, design, user experience, coding, testing, documentation, upgrade and deployment.

At first this seems very strange. As the lead developer on the project Sara would not have time to work on all the other tasks, and if she does, who will do the coding?

Furthermore, Sara does not have the skills to write an MRD or describe the user experience since she is “Just” a database programmer.  

The trick here is that Sara does not need to do everything on her own. As the owner she has ad-hoc managerial power to push other people to do their work. She demands requirements from the product manager, pushes QA for the test design and nags tech writers for better version.

There are multiple advantages to this approach:

  • 1. Sara has to know what the product goals of the feature are.
  • 2. Sara has to take into account testing, tech writing and other considerations she would otherwise ignore. The nice thing is that she can make changes in coding to help them.
  • 3. There is a clear owner for the task success with a strong emotional attachment.
  • 4. The feature owner has strong technical understanding of the feature.
  • 5. It is easy for the managers to monitor the feature progress and status.

 

But the best advantage is there is no escapeway for the feature owner by blaming others.

“GUI didn’t finish on time”

“QA missed the bug”

“The Requirements are not clear”

“We don’t get enough priorities from infrastructure team”

“No one told me how to handle failures in the database”

Sara is the owner, she has to take care of everything by definition. By empowering the developers, the results are improved and everyone is much happier.  On a future post I’ll describe some of the downsides of this approach.

Cloud Computing, Wine Walk, Pride Parade and Micro Macro Economics

July 4, 2008 by ophirk
  • Here are some really unrelated insights from my two weeks business travel in the states.
  • 1. The dollar is so weak that a haircut in New York, 45th street, 5th Avenue Is just $11. In Tel Aviv’s old north it is $18. In Nes Ziona it is $12.
  • 2. The real cost of hair cut in New York is $13. One dollar extra because the Israeli barber assumed I was a stupid German tourist .He said to his friend, in Hebrew - “You can take $12 from this guy”. Another dollar was for a tip strongly demanded, although the whole thing tookless than five minutes…
  • 3. For $15 you can eat the best ceviche in the world in Fresca, new Peruvian restaurant in the trendy Fillmore street , San Francisco. That does not even buy one a breakfast at Nir Zuk’s Noa bistro in Jaffa.
  • 4. Cloud computing is the new buzz. A year and half ago it was an early rumor. Now I was in three separate conferences in one week and all tried to focus around it - Structures08, velocity08, Gartner Israel.
  • 5. Internet Explorer 8 is going to have 6 concurrent HTTP requests for each host. Hurray. This simple change can speed up the entire Internet by 20%. In 2010 they might even support HTTP pipelining. And we thought computes would have Artificial intelligence by 2010.
  • 6. Everyone knows TCP is broken for the modern web, everyone knows how to fix it. No one is working on HTTP over UDP and CDN’s are still making a fortune.
  • 7. The San Mateo Wine Walk is a really nice event. Where else would you get 10 glasses of wine for $30 ? and where else can you see college kids performing “Born to Be Wild” and 60 year old White, Mexican and Afro American ladies in shorts shouting at them and dancing ?
  • 8. Steve Souders, Yahoo’s former chief Performance Officer now works for Google. Quite Symbolic. And he is a very nice person as well.
  • 9. 50% of the overall cost of running a data center is actually the cost of building it. Turns out that the physical and power infrastructure is very expensive.
  • 10. There were 10 firemen marching in San Francisco 2008 pride parade. There were about 40 chefs. 70% of Linux kernel contributors are working for commercial firms.

Spec Master: The Hidden Product Manager Role , Part II

June 13, 2008 by ophirk

One week later Alex returned to our weekly meeting.

  • Setting the routing table takes 0.2 seconds
  • Setting the virtual network adapter takes 5 seconds
  • Networking with the server and authenticating take 3-5 seconds
  • The time to set the virtual network adapter is actually a degradation from two years ago. We changed to a new adapter, which is easier to maintain, but increased the connect time by 3 seconds. I think I can we can use the old adapter and reduce it back to two secondsIt is very hard to change the networking time since it is part of the protocol and needed to set up the VPN tunnel.

    Ophir:  Great, but the overall result would still be around 8 seconds

    However, we can do a nice trick. We will keep the VPN tunnel always open, even when the client disconnects. Instead of terminating the connection we will reset the routing table (which is fast

     As a result the first connect in a day would be 3-5 seconds but all the other connections would be just 0.2 seconds, which is almost unnoticeable

    Ophir: Amazing. What’s the catch?

    There would be extra memory utilization in the server.

    Ophir: I think the memory issue is no brainer. For most customers the number of tunnels is no so big and it does not seem will add more than 10MB , even in the worst case. Excellent work.

    Going back to my initial hypothesis, I believe the chronicle has great lessons.

    When goals are measurable, they can be analyzed and improved. Setting high goals allows developers to innovate. When the product manager is ready for a dialog, she will find out new tradeoffs that she could not come up without the R&D feedback. Relative goals are dangerous, because the starting point is unknown.

    In our case, a few hours or research allowed to reduce the connect time by 50% in all cases and by 95% in 90% of the cases. We also set a new key parameter for developers and QA to test and validate. The effect would be noticeable by the end users and greatly improve their satisfaction. 

    Spec Master: The Hidden Product Manager Role , Part I

    June 7, 2008 by ophirk

    Developers hate specs. Specifications make them feel like engineers. They stimulate visions of dead beat employees in grey suites browsing thru thrutons of documents and complex sketches. It really clashes with their self portrait of artistic, pizza grabbing creative wizard.

    Product managers hate specs. Specs make them think. Specs break their castle in the sky world. Specs make them confront their biggest fear – reality.

    Engineering Love

    These are the exact reasons why software specs are great. They set measurable goals everyone has to agree on. Like many other chores in software engineering, this step is commonly ignored because doing it right is very hard.

    Let’s look at a small case study.

    The product is a VPN client. A VPN client allows an employee to connect from home to the office and work on the internal network office in a secure manner. The product is very successful in the market, but the code base looks like Spaghetti Carbonara.

    I’m the annoying director and Alex is the brilliant team leader.

    Alex: I want to start coding the new client.

    Ophir: Great. What is the new spec?

    Alex: Well, instead of 27 threads we are going to have just 2. It will solve most of the horrible crashes support is complaining about.

    Ophir: But what’s the spec?

    Alex: I don’t follow. The product is running for eight years now. We are just going to rewrite it in a modern fashion.  We conducted a customer survey on which features can be removed, but unfortunately didn’t find any.

    Ophir: How about the connection time? How long would it take me to connect to the VPN gateway and start working?

    Alex: mmm… 10 seconds.

    Ophir: I’ve noticed there are multiple occasions it takes 60 seconds and sometimes even three minutes.

    Alex: well, it depends on many factors. The adapter, the network, the authentication method, the client mode.

    Ophir: Do we have any official number? Did QA ever measure it ?

    Alex: Nothing. We never thought it is important.

    Ophir: OK. I’m using my authority as a director and setting the new target for connect time.

    Alex: Yes, Sir. What is it?

    Ophir: Zero seconds. I really hate waiting for the client to connect.

    Alex: Say What? You did have a physics degree before you became a manager, right?

    Ophir: Sure. I’m using a 3GHZ dual core laptop with 2GB memory on 54Mbps connection with 30 msec latency. Why does it need to take more than 150 milliseconds  ?  (there are some mandatory request response due to IKE horrible RFC) .And I would still like it to be zero seconds.

    Alex: But Cisco does it in 20 seconds. Why does it matter?

    Ophir: Think about the great impact if we can do it in zero seconds. Our client would kill theirs. Nobody notices the difference nowadays since we are at the same neighborhood and the variance is not very big.

     Alex: I’ll go and think about it.

    On the next episode : The results.

    Models Site Hacked - Reported Here First :)

    May 30, 2008 by ophirk

    As reported in this blog by our reader A.J the top model agency site had an SQL Injection.

    Turns out that it was actually used by slow hackers and made the front headlines  http://www.globes.co.il/news/article.aspx?did=1000347082&fid=594.

     

    Resume bloopers

    May 24, 2008 by ophirk

    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…

    Best Single Tip on Writing Resume for Top Jobs

    May 9, 2008 by ophirk

    The Tip: Write your achievements,  not your whereabouts.   

    Reading thousands of resumes in the last eight years, I get very frustrated from the candidates inability to market themselves. While there are hundreds of on-line sites that give great tips, people seem to be ignoring them completely.

    When I read a CV I expect it to answer the following questions:

    • How can I know the candidate would succeed in his role?
    • Why should I hire this specific candidate?
    • What is his past record?

    The simplest way for a resume to answer these questions is by describing previous achievements. Think about it as what you want to write on your professional gravestone, if the worst  thing happens.

    Bad example:

    2000-2004: Software developer in Lucid Multimedia, part of the tools team, wrote in ASP.NET(C#) ,SQL Server, NHibernate.

    Average example:

    2000-2004: Software developer in Lucid Multimedia ,owned the development of an ORM module between SQL Server and C# business logic.

    Good example:

    2000-2004: Software developer in Lucid Multimedia, I lead the development of an ORM engine that reduced development time for new forms by 40%.

    Excellent example:

    2000-2004: As a developer in Lucid Multimedia, I lead the development of an object relational mapping engine that reduced new forms development time by 40%. I developed the engine in 3 months, and I improved the performance of top queries from 5 minutes to 20 seconds.

    Can you see the difference?

    For top jobs, I do not care too much about the candidates’ set of skills. These should be mentioned, but can be described in a short paragraph in the end of the CV. It does not mean much that a candidate was a C++ programmer for five  years. I know plenty of poor C++ programmers. Maybe he is just one of them?

    Maybe during these five years he was reading TechCrunch and browsing Jdate in the search of a more promising future. Facts on achievements are much better. The candidate needs to briefly explain major achievements, show all signs of excellence and why his previous employer would miss him after he quits.

    For some reason, I get a lot of objections when I try to help people improve their resumes. The most common ones is:

    “My work cannot be measured in quantitative manner since I’m Psychologist\Software Team Leader\Business analyst \Milkman”

    My belief is that in any subject matter there are ways to explain the achievements in a clear factual way, at least to readers who come from the same domain. The trick is to find the right angle.

    Psychologist:

    • 2000-2003 I supervised the treatment of five children aged 3-4 with severe social skills difficulties. I managed and mentored a team of assistants, speech therapists, and art therapists in a highly demanding and intensive environment. All five kids are now studying in regular schools to their parent’s satisfaction.

    Business Analyst:

    • I coordinated $100,000,000 budgeting process in a multinational consumer company. Initialed a new process for budget preparation, across departments. As a result the budget was ready in November instead of December, allowing the management to have proper preparations.
    • Internal Guru and the Go-To-Girl in building highly complex Excel planning modules. In 2 weeks I prepared a sales compensation plan which is used in 30 countries across the company.

    Team Leader:   

    • Three members of my team have become team leaders within two years.
    • Improved the relationship with QA peers by conducting open weekly meeting. Product quality and atmosphere have greatly improved.

    Remember - the facts don’t have to be numeric or printed on paper. Fact checking will be done later during the interviews and reference checking. At the resume stage, the reader trusts what he reads.

    If it is hard to find measurable indexes of success, at least try to give more details on what you have been doing.

    What was the size of the project? How many people did you manage? How much money was involved? How many customers were served? How does it compare to the situation before you started?

    The best thing is if you can show samples of your work. I love it when people add a a link to web site they built or an open source project they lead. It makes it very easy to check their professionalism.

    To summarize, don’t be shy about your achievements, you need to market yourself. The best way to do it in an honest fashion is to give the facts which highlight your contribution to your last employer.

    Why Do Recruiting Companies Act As Spammers?

    May 8, 2008 by ophirk

    In Israel, recruiting companies send tons of non relevant CV’s  that need to be to filtered  out. After I spent hours defining the exact features of my beloved employee, they disregard everything I carefully crafted.

    For example, When I asked for a veteran, C++, team leader I got a visual basic junior programmer with two years experience building his high-school site.

    When I asked for .Net C# UI expert who worked on enterprise software, I got a free lancer with lots of networking experience who wrote an amazing SMTP proxy.

    The easiest thing is to blame the recruiters for their laziness, lack of technical understanding and false summaries they attach to the candidates resume ,without even interviewing the.

    However, the real problem lies in the existing compensation mechanism in the market. The recruiters get paid for “success”, which translates to a one month salary for each candidate that is actually recruited. Of course, if you get the same candidate from multiple sources, the first source gets all the compensation.

    Not really the same context, but funny

    The best way to for the recruiter to make money ,in this case, is to send as many CV’s as he can to all the customers without any filtering, as soon as he can. Let’s say the recruiting company gets 1000 CV’s per month, and it’s trying to recruit 100 open jobs. Their best option is to send 100,000 emails right when they get the new CV. Every minute of thinking, summarizing, interviewing or spell checking can result in losing all the capital from this CV.

    Since they don’t get punished for sending too much twaddle, they are “just” optimizing their income.

    Maybe it is time for a new reward mechanism. How about the following idea - I’m willing to pay $1000 for every relevant candidate resume. However, I’ll deduct $200 for every non relevant CV they send my way.

    Assuming it takes 10 worthy candidates to recruit one, they would get $10000 if they don’t send any “noise” my way. If the ratio of signal to noise is 1:1 they will get 10*$1000-10*$200=$8000. If they send five bad resumes for each good resume they will get $10000 - $10000 = 0$.

    This method makes sure I will get CV’s quickly and accurately. Seems the big problem is how one judges what a “worthy” CV is, but there is a simple answer. The companies usually don’t send the candidates contact details until you ask them to reveal his contact details.

    It is fair to assume that if you ask for a candidate details, you think he is worthy candidate.

    It is going to be hard to change the industry standard, but I believe it would be good for everyone. Today, the hiring companies think they save money, while it is actually spent on filtering and interviewing which should have been done by the recruiters. What do you think?

    Picture used from http://www.flickr.com/photos/walmartmovie/17170407.

     

    Funniest Sign In The Last 10 Years

    April 29, 2008 by ophirk

    I’m trying to think about a lame excuse to relate this post to software or management.

    Let’s say it has to do with marketing, support and branding :)

    During a  half-day of strategic planning, I had to excuse myself to the convention center restrooms.

    To my amusement they had the following signs (3 of them!) posted above the urinals.

    It Is prohibited to use the electric urinals on Sabbath

    There are so many possible punchlines I will leave it as an exercise to the reader…