What's hot ? (and I mean really ...) - scroll down for more
1).  Code Templating - advanced usage of delegates & generics: my slides & demos are available for download! CodeProject article is also available.

2).  My series "TDD in the eyes of a simpleminded" is in progress(including code!): preface, part1, part2, Q&A 1, Manual Stub .vs. Mock Stub

3).  TDD Workshop: SeeCompass v0.1 and v0.2 are out.
# Friday, November 07, 2008

"Why do you love working as X so much? so much that you're willing to spend that many hours of your life at?"

Pause for a second. Try to close your eyes and think what will be your answer for this question?


For me, the answer is obvious: It's the people and challenges that make my brain tick and my motivation SKY high. It's the feeling that I can really make things better by investing everything I got into it that makes me proud of my work. I get huge satisfaction installing TFS 2008, trying to make our Integration Tests work X6 faster, practicing some Agile principles I've read about or take any other "dirty yet important work" no one would like to touch. I'm not scared of  hard work and if I can feel, down there in my stomach, that it would make my teammates more productive - I'll do anything I can to make it happen. Oh, and I'm trying to build one of the most complex search engine the world has the offer with a bunch of b-r-i-l-l-i-a-n-t guys! Can you blame me for working so hard, enjoying every minute of it?

Sure, getting a few bucks more would be great, but that will not make me proud of what I'm doing. One of the main things I've learned in my 8 years of developing software, is that highly motivated teams will always make the best products. Leave aside for a moment the productivity boost these teams enjoy and imagine their daily work, their lunches together, their working environment, their joy of talking with one another about day to day stuff. Imagine how they dream about their goals together, discussing ways to making it better and more enjoyable. It's the buzz these companies have that drove the best guys to them, so "effortlessly". The commitment to one another will make sure you'll build quality systems, that you'll try your best to deliver on time, to make it better, smarter, BIGGER, every single day. It will allow you to grow like you could never anticipated. Trying to grow this culture in your team is one of the hardest things in the world, way harder than any logical puzzle thrown at you. Believe me.

It's just so damn hard to get it right.


"
There are many men who feel a kind of twister pride in cynicism" (Theodore Roosevelt, The Man In The Arena speech).
Over cynicism means death for any joint effort. No matter how strong your team is, negativity and cynicism will break your team spirit. It always does.
Stop being so negative, so cynical about your actions and your dreams. You can do great things by answer the question above and remember that it's all about the people around you. It's all about you! you can actually make everyone around you better by taking action. Stop listening to people who thinks they know best and mocking you with "you're only a tiny nail in a giant machine". Don't be afraid of constantly trying to make a difference, even if you'll lose here and there. Read books, talk about them and your ideas, share and try, try, try, and try again!

This attitude will probably make you a winner, someone that others will enjoy working with, being with, taking inspiration from.
I know that these guys are the one I love working with or going to a bar close by, drinking some beer and talking about how to change the world.

Best people simply do for each other.

Posted by Oren Ellenbogen 
07/11/2008 05:40, Israel time UTC+02:00,     Comments [1]  | 
# Friday, January 25, 2008

Alright alright, so I didn't post anything for... a decade or so.
but I'm here (at the office that is) all day long, being a part of a great Team, building the greatest\coolest piece of software I've ever dream of.

I promised myself that I'll be short this time so here it goes, Oren's 60 seconds update:

  1. We've changed our name from Semingo to Delver (delver: (n) deep thinker; one who investigates data).
    Hopefully (if God will hear his little buddy here), the phrase "To delve" will catch up with the scary "Google-it".
  2. We're going to show our product to the world at the DEMO conference (28-30 January, yes, in 4 days!) in Palm Desert, CA.
    If you want to be one of our first beta users, please go to our site: www.delver.com and register (we'll send you an email once we'll release our beta).
  3. We're looking for super talented folks to join our amazing Team, interested?
Short, to the point, no technical buzzzzz. I'm feeling violated.
 
update:
here are a few links from interesting articles about us:
 - http://www.delver.com/about.htm (from our home site)
 - http://link.brightcove.com/services/link/bcpid1127798146/bclid1396518815/bctid1392526686 (6 minutes of live! demo\video, presented by our CEO at DEMO conference)
 http://www.somewhatfrank.com/2008/02/silicon-valley.html (5 minutes demo\video from IsraelWebTour 2008)
 - http://www.readwriteweb.com/archives/delver_reinvents_search.php (great summary to understand our product)
 
 
Next post - some cool multi-threading code and how to test it without wanting to stick a nail in your eye (or someone's else eye).
Now I'm feeling better...
Posted by Oren Ellenbogen 
25/01/2008 12:46, Israel time UTC+02:00,     Comments [0]  | 
# Friday, July 13, 2007

Gosh, I did not know Raymond Lewallen was reading my blog (I guess I should start writing some meaningful stuff and stop playing around ;)) but I'm more than happy to raise up to the challenge and talk about what I am doing in order to go to the next level.

In one of my post, What it takes to become a great developer, I mentioned the notion of "Be Eager To Learn". I don't consider myself as a good developer due to my natural skills (I don't think that I'm mediocre, but certainly not Larry Page). Starting 8 years ago as a little teenager at 15, I had to work my ass off in order to keep up and show the rest of the people I was working with that I'm just as good as they are. Reaching this goal, I wanted to show myself that I can be the best guy at the company.

Eight years passed and a lot have changed, but I'm still very much eager to get better and more versatile. One thing I'll always keep with me, as it proved it self so far, is the no-fear attitude and the (sometimes) ridiculous optimism. I'm not afraid of doing new things or changing positions when an "offer you can't refuse" knocks on my door. Life is short and you most grow each and every day. I'm still the same team player guy, although I can get over confident (aka arrogant) or raise my voice here and there. I care about my teammates and know when to say "I'm sorry". I work with my heart and hopefully my current and future teammates will forgive me for my faults.

I think that in the last few years I've learned a lot about myself, about the things that really intrigued me, that push me to excel. I love coding, I love talking with people, mentoring, lecturing about technologies or Agile methodologies, but most of all - I enjoy taking ownership of projects I participate in and making them successful. I'm looking to surround myself with people smarter than me, those that have natural gifts in them, and making them better.

Things I should do

I should try to get more organized in planning my time. I read a lot of books about self management but I don't feel like I'm practicing them as much as I should. I should really invest more time in myself, trying to set goals and constantly reviewing them. I'm leading the Agile a la Scrum at Semingo so I hope to use this work & review notion more in my life.

I should learn more about Agile, Scrum and XP. I've read a few great books about Agile\Scrum\Management but I still have a lot of unanswered questions. I know that these methodologies only offer some solutions but I don't believe we should enforce them. I believe in making our own Agile process at Semingo. That said, I do want to read more books from people with different experience, different ideas and best practices I could learn from.

I should definitely write more posts! (particularly about Agile\Scrum)

Things I want to do

TDD: getting better in it and start lecturing about it more.
Multi-threading: This one is a new set of skills I'm developing at my current job. Looking at the near future, this skill is crucial as a developer.
WCF: I need to use it in my current job and I have a lot of catch up to do.
Lecturing: At least 4-5 lectures a year looks like a solid goal at the moment.

Most of all, I want to make Semingo the best place to work at, to bring more amazing guys&gals to work with us and making an application that will change the way millions of people work.

Things I won't do

I think that it's getting clear to me that I do not want to be an external coach. I don't see myself coaching a team for a 2-3 months and then shifting to another team. I enjoy working with people and I take pride and strength in making things complete.

I won't stop talking and writing about software, practices and people as long as I have keyboard and working set of 1-N fingers available. Count on it!


Tagging these folks

Pasha BitzShani Raba, Doron Yaacoby, Eran Nachum, Ken Egozi

Posted by Oren Ellenbogen 
13/07/2007 08:52, Israel time UTC+03:00,     Comments [5]  | 
# Saturday, June 09, 2007

This title encapsulate a lot of changes in my life.

Leaving Mercury\HP

After less than a year, I had to make one of the hardest choices in my life and decided to resign my position at Mercury after receiving an opportunity to join a baby(we're looking for offices now) startup named Semingo. Mercury is a great home for developers; The quality of the people there is beyond anything I've seen in the last ~8 years, the projects are challenging, the clients are demanding and the amount of investments the management put in the teams is unimaginable. No wonder why Mercury was bought for the huge price of 4.5 billion dollars by HP. Putting the clients first, hire great managers, non-stop training and fetching the best programmers available is a bullet-proof path for success.

The hardest part was leaving my friends there, but I know that I'll keep in touch with them. I said goodbye to the guys in a small gathering so I want to leave it private, but I do want to thank you all again for sharing your life, your ideas and challenges with me:
Hagay, Number, Big Guy, Jersey, Nicos, Rico, Master Jedi(Doron), Moti, Jonit, Chonga, Maya, Mininberg, Alon, Chik Chik, Abergel, Oleg, Mizrahi, Ravit, Sefi, Lidor, Zini, Arie, Ifat and the rest of the guys there(I hope I did not forget anyone :|) - goodbye and good luck. I love you all.

Joining Semingo

This was an offer that I just could not say no to. The project is inspiring, the scale and size are unimaginable, the team is built from a group of young(avg. ~25) "hackers"(my nickname for highly talented workaholic developers), great technology, great management. All the right cards. In addition, and this one is crucial - I'm 23 years old so this is a great(maybe the only) time to work 14-18h a day without paying alimony\psychotherapist. I'm sure that it will be very interesting ride. 

At the moment, I can't say much about the stuff we're doing except that it's a very challenging web 2.0 project.
I promise to publish more about the team, work methodologies(agile\scrum) and technical experience later on...

Leaving my home, renting an apartment:

I'm looking for an apartment in Herzelia\Herzelia Pitouch, close to the our future office. If you know a guy that knows a guy - please send me an email! ;)


Gosh, it's going to be one hell of a year!

Posted by Oren Ellenbogen 
09/06/2007 12:10, Israel time UTC+03:00,     Comments [10]  | 
# Saturday, February 10, 2007

There is a big set of posts about this issue lately. From Ayende's Can you learn to program better? and What can make a great programmer? to Phil Haack and his Better Programming By Programming Better to Jeff Atwood and his How To Become a Better Programmer by Not Programming and many others...
Well, they are all great developers and they all give us a great view for what is a great developer and how can you become one(or realize that you already are, for that matter). I like the way Jeff sums it up:
" You won't-- you cannot-- become a better programmer through sheer force of programming alone. You can only complement and enhance your existing programming skills by branching out. Learn about your users. Learn about the industry. Learn about your business. "

I agree with all of them about the HUGE leap each great developer should take from being a good developer into a great developer. Not many have done it, although I believe that many more can. I'm not sure if you heard about Ron Clark, his story is an amazing demostration of true passion to bring the best out of people. Ron managed to take a bunch of kids from Harlem, those that no one believe in them, and make them one of the best classes in the US. In his first lesson, he wrote on his board: "Dream Big! Take Risks!". He manged to direct his students with his 55 rules and teach them how to become a great human beings before everything else. It's a story about how to get everyone around you excited, driven to extract the very best out of themselves.

In my point of view, great developers are the one that really into code because they love it and because they want to make the rest of us guys better. They possess Ron's Passion to make everything better. The software they are building and the guys that are involved in doing it.

I tried to come up with my "rules" that helped me progress and influence others in the last 7 years:

  1. Be proud of your work - The most important rule I give others - Love your job, Enjoy code, Appreciate elegant solutions and let them be your inspiration.
  2. Be Eager to learn - In order to become one, you must learn the "55 rules", the foundation of your progression bar. Ayende says it best:
    " At any rate, what I am trying to say is that you need to act. Doesn't matter what you do, you need to keep pushing your knowledge until extra knowledge is easy to absorb. ". Always have a list of things you would like to know. Clear some time for you in order to progress. baby steps.
  3. Write it all down - It will take you years to understand why X is "better" than Y. Why writing logic inside a stored procedure is not always the smartest thing(or why SP is not the best way in common\simple scenarios), why it's important to unit-test your classes or why loose-coupling is that important. Following only ideas from others without suffering from your mistakes will keep you always a mediocre\good programmer at best. I have started my world with Data-Access-Layer written manually, then generated it and only then using some sort of ORM tool for this task. I've learned so much in the process that "spending" years at each phase made me understand better the way I work and the way I want to work. It was worth it. I don't encourage repeating others mistakes, I just want you to follow your heart. There are mistakes worth repeating, if it will improve you and make you releaize things about yourself.
  4. Seek for better ways to solve things - In time, you'll see a lot of recurrent patterns in your code. The way you write your application tiers, your data-access, your database, your sql, your security handling, your logging mechanism, how you integrate with other applications or how you create a solid framework. In time, you'll see a lot of recurrent thinking you were used to. Only in time you'll know how to solve code duplication in a proper manner, how to build a smart API and how to estimate your mission so you'll meet the deadline without staying at work for 14 hours a day.
  5. Don't be afraid to get credit for your work - remember, be proud of your work. You deserve it. Take ownership!
  6. Be proud of your people - Your people will make you progress or stay put. It is simple as that. 
  7. Share your knowledge - I remember that a good friend of mine talked with me about whether is should help others at the office on the expense of his time. He felt that writing code for others will make them progress on his expense. I could relate to his thoughts, but I strongly disagree with him and that's what I told him: Teaching others is the best way to take the next step. Make sure you educate others, it will make them easier to give you back. I believe that this ability and willingness to teach distinguish the great ones from the good ones. If you really want to progress from being a programmer to a Team Leader\Architect\Adviser\whatever, you would need your co-workers support, right?
  8. Find a mentor - find someone at work that will make you work harder just to so they would be proud of you. I call it the "work-daddy syndrome". It is much easier to motivate yourself if you know that someone expect greatness of you. My parents expected that I'll be great from the first day I could remember myself. They never pushed me too hard or made me stress. They were there for me when I needed them. Always with something good to say to calm me down. The reason I am so motivated to be the greatest programmer I can be is that I have great friends that expect it from me and I had the pleasure to work with my mentors and get their feedback to push me forward. I want to make them proud.
  9. Be a mentor for others - All my life I thought that I am blessed with great family, great friends and great co-workers because I manged to contribute to others. I allow myself to feel this as I know that I do my best to contribute others, to make my surrounding feel that we're heading for a better place. That we will actually be there soon. Look hard and find someone that you can see the potential in him, and if he\she let's you, help them to become better. There is no better feeling that getting a big Thank You. I'm hardly a religious guy, but I feel it easier to except good surprises in life due to good acts on my side. If something terrible happens, I know that I have a good place to fall into, that I'll bounce back.
  10. Enjoy life, it's yours - leave a funny comment in your code, don't be afraid of saying geeky comments, laugh about your\others old code. Laugh as much as you can. People will follow you if you'll know how to make them smile when things are hard. Coding can be a bitch, great programmers makes you forget it for a while.

Good luck, I know you can make it. 

Posted by Oren Ellenbogen 
10/02/2007 02:55, Israel time UTC+02:00,     Comments [4]  | 
# Tuesday, September 12, 2006

I've just opened Yediot Acharnot's(one of the largest newspaper in Israel) site - Ynet.co.il:

newspaper.gif

On the bottom-left of the picture you can see the title "The Palestinians: 13 years old was killed by the Israeli Defense Force fire". Reading a few sentences inside of the article paints a different picture: several Palestinians terrorists, and the 13 years old boy among them, throw a grenade on our soldiers and one of our officers was hit. The fire was in response to that grenade. What the hack a 13 years old boy running with terrorists? Should we not defend ourself? Would you remain motionlessly after being hit by a grenade!? I doubt it... This boy have a mother and father, where were they? The hatred made them blind? made them believe that their son's life are not worthy? Is it OK to send your son to explode and than raise his little brother to follow his path?!

The Lebanon War was exactly the same - they(Hizbala) fired missiles from civilians houses and then entered the building. Did our army react? in 99.9% of the time the answer was NO(you didn't hear about it right?); One time (Kfar Kana) we did react - the entire world was shocked by it for several days. Where are the pictures of the destroyed houses by that missile? Where are the Israelis Pictures who died from that missile? 

Did Kadafi asked himself why a terrorist entered a building after firing a missile? I bet that he did. "Well, they fight the way they fight. I don't find logic in their actions that I can relate to, but it must be there... right?".

Did you ever see on television(CNN, FOX news, whatever) a 13 years old kid throwing a grenade on a tank that kills our soldiers or the 5 minutes later that this kid was shot? Why don't you investigate where his parents were at that time? What about the terrorist that threw a grenade inside a house with civilians in attempt to kill one of our soldiers and "accidentally" killed the civilians in that house? I guess you heard something like "Israeli Defense Force killed an entire family while catching a terrorist". What about the 100->55->44->30->22 dead in Kfar Kana. The German's press(no the Israeli press, the German's!) took picture of the place and they catched(on video) that the bodies were moved around just so it will appear that more than 100 people died!

That's OK, I don't expect from the outsiders to play nice, to cover all the facts and tell the story from our side as well(I'm no journalist, but isn't it the first rule you learn - "cover the story from every angle"). That's asking too much I assume. But from Israeli media I do expect more! These reporters make us look bad. Tell the story as it was and emphasize the cause that lead to that result, you are Israeli reports for god sake!!

The funny stuff is that we(the Israelis) always think that our ambassadors are not doing it(Public Relations) right on the outside.
We are so wrong. Our problem is from the inside, if a guy like me have to read this story from the Palestinians side and in small letters - our side, in an Israeli newspaper, it's our fault.

Shame.

I really tried not to get into the core of my thoughts as it might start a World War III which is usually a bad thing(right?). Our people want peace, we want to live with our neighbors, we do hurt that their kids are dying and our people are being bumbed in buses. I sometimes wonder though, what about the other side? What about the world?...

Posted by Oren Ellenbogen 
12/09/2006 08:43, Israel time UTC+03:00,     Comments [0]  | 
# Thursday, September 07, 2006

I can't think about a better phrase to describe the latest songs in the industry. Listening to the radio makes you switch between the stations like you have some kind of disease; The songs lost all their meanings and instead we are swamped with "catchy" songs that we hate, but just can't live without whistle them every 2 minutes or so. Just listen to Justin Timberalke's latest song - "SexyBack", this is all about the catchy music, the words are completely irrelevant and you can't even hear the singer as the drums block his(?) voice(I'm not sure it's even Justin's voice). Does Justin OK with this kind of music? I'm not sure, but I *hope so. It still makes me think a lot about the way I worked until now and the way I'm working today; I really believe that being a programmer is as artistic as being a singer or a writer. There were times in life that I felt we are writing code just to make half-baked applications and ship them out to the mass(our clients), the quality was peripheral, and it conflicted with my "artistic"-self values. Are you familiar with that feeling ? There were also times of elation, when our code was beautiful, pure, magical. It made me smile talking about it later on. Working on a big product, at Mercury, and talking with the (amazing)guys at work, made me feel how lucky I am. Thankfully, I'm still in a position in life that I can made an influence, although I'm not naive and fully aware to the fact that clients are always right and $$$ will dictate deadlines and features packs. There is one sentence I keep saying to the guys working with me (since I was 16) - "be proud of your code". Write your name in big, CAPITAL LETTERS, at the beginning of your files, make sure everyone knows YOU did it. This will push you into excellence (you don't want others looking in your code and swearing your mom, do you? update: your mom says "no!") and inspire you to think about better, more creative and unique solutions instead of ad-hoc, ugly "But hey, it works!" solutions.

So, please, don't let **marketing or money dictate your life. Everything in Life is a trade-off, but you should decide your path, don't walk silently in a path carved by others even if it's easier. At the end of the day, saying "But I had to" or "But it's shorter" will not make you sleep better at night; If you like what you're doing, I'm sure that you are familiar with the feeling.


* I know. he is rich & famous, he must be happy. Does he ? maybe...
** Unless this is your decision, which makes it OK. As long as it is your choice.

Posted by Oren Ellenbogen 
07/09/2006 08:31, Israel time UTC+03:00,     Comments [1]  | 
# Tuesday, August 15, 2006

Hey guys & gals,

After a few intense interviews and a great time talking about things I just love (code, code, code), I did it.  

I'm very proud to inform you that I've join Mercury as a programmer at the Performance Center product

 

 mercury_logo.gif

" Mercury Performance Center™ is an enterprise-class application performance testing platform. It provides a complete, on-demand optimization solution for your application performance process, integrating load testing with diagnostics... Mercury Performance Center is the platform on which you can base your quality initiative. Mercury Performance Center delivers a 24x7, globally accessible and shareable pool of load testing resources to minimize the total cost of load testing in the enterprise "


Man, I'm so eager to start !!!

Posted by Oren Ellenbogen 
15/08/2006 10:30, Israel time UTC+03:00,     Comments [7]  | 
# Tuesday, August 08, 2006

While I was sitting in McDonald's today, eating some junk-burger, I looked across my table and noticed a beautiful girl. Man, she was something else. A true beauty. I looked at her walking to another table, 20 fit from my table and sitting down. In front of her was a woman. Try to guess on your own, how does the woman look like:

a. A true super-hot-mama, even more beautiful than her daughter(?).
b. Good looking woman.
c. An OK woman.
d. My GOD! What a monster ?!

I'll let you ponder for a few seconds...

Now that I'm sure you've got the right answer, have you ever thought about these questions:

In 15 years, will this beautiful girl will look like her mother(?) ?
Is there any chance that god is just messing with my head and she'll be a fine woman even if her mother(?) is a....
What about statistics? Anyone knows what are the odds for a beautiful girl to become a beautiful woman ?

And of course, a sick question to recap this self-debate:

What does her father think about this situation ?

For some strange reason, I started to think about applications. I know, I'm sick, no doubt, but bare with me: How many small beautiful applications you developed, become a monstrous Enterprise Applications that are eating their programmers for breakfast ? Go back to my questions and replace the word "girl" with "small application" and the word "mother" with "Enterprise Application". I think that this symptom of "growing organism" exists in developing real applications and we encounter it every day when we maintain legacy code or patching-up a system that shouldn't survive the prototype phase.

I guess that just like in life, with good monitoring of our state and good activities, this transformation, this growing, could still be graceful.

I just wonder what are the odds...

Design | Life
Posted by Oren Ellenbogen 
08/08/2006 07:34, Israel time UTC+03:00,     Comments [4]  | 
# Tuesday, July 25, 2006

Our SQLink R&D department was merged with Aman Computers.

At the moment, I'm still not sure if my place is at Aman although I've got a very nice offer from them and it seems like a very nice place to be at.

I'm looking for a place with (my ideal, I'm a realistic guy though):

  1. Many people who love coding, read about it, write about it and lecture about it.
  2. Building Enterprise applications.
  3. Using the newest technology (.Net 2.0+)
  4. A place that loves to teach his employees, to set goals and to push you through crises.
  5. Provide me the stage to show what I am capable of, where managers trying to bring out the best from their people.
  6. Organic teams. I would like to be one of a great team of people. I work better with other people around me and I love sharing my thoughts and teaching others.
  7. Agile methodologies.
If your place is looking for a passionate-for-code guy, someone that can upgrade the surrounding and contribute to the "team's glue", I would be glad if you'll contact me via email (oren dot ellenbogen AT gmail dot com) so we can chat. In addition, I'm *interested* in relocation(especially in the US, I've got a citizenship(+visa\green-card)) as it always been a dream of mine.
Posted by Oren Ellenbogen 
25/07/2006 11:55, Israel time UTC+03:00,     Comments [9]  | 
# Monday, June 19, 2006

Today I sat with Moran after he "paged" me. He reviewed some code of one of our applications and he saw some things he thought he could make better. It was one of those classic "Hey! it should be a single service which every one of our applications will use!". Step after step he made the required refactoring and some elegant API took shape. The improvement was in magnitude but I still thought that the API should be quite different before making it "public" and placing it in our infrastructure. But, and that's a big but, the guys that develop the specific application needed the class and Moran was required to help in another project.

Should Moran take the opportunity to invest some time in this API? Should I help him through? We can talk about services, about providers, about extendability. We can play with code just to see how the API will look like. We can play with ideas, learn from each other, share our experience. We can share with others, we can send some quick "API tests" to get some feedbacks.

The process of developing the basics for our applications should be *long*. It should allow space for errors. The margins should be wide enough to let us experience, to learn from our mistakes, to discuss, to make Design Reviews, To Prototyping and throwing it all to the garbage 2 days later. It's all OK.

But maybe this is not the right time for games. Maybe Moran should make it work somehow and carry on to the next project ? After all, the next project's deadline is near(like always) and we need to join forces just to keep it up. Hey! we get paid to reach deadlines, to make it happen while keeping the quality at high level. The deadline is sacred. I truly believe that a good team will deliver on time even on the expense of features or well-known but low prioritized bugs.

On the one hand, I know that developing small to medium applications (0.5-2 human years) almost never allow you to invest the required amount of time in the basics. On the other hand, I also know that developing applications at work and infrastructures at home is not the answer for long terms. The process is short. No errors are allowed. There is almost no Design Reviews. Does it mean that the results of "home infrastructures" will be poor ? of course not, but the experience, the ability to break our requirements to programmer stories, to exchange ideas, to grow - is lost. The funniest part is that developing small application without a solid infrastructure turns into medium-large application. I guess it's the egg-chicken paradox.

The best I can do is to tell the reality from my perspective. My reality is that there is never time(well, that depends on the urgency and the magnitude of the application), and keeping with my expectations makes me perform the global thinking and implementation at home. This is the only time that I actually "have the time". Investing my time in developing some required infrastructure can save my guys at work a significant amount of work. Still, putting the effort on developing infrastructure during work hours will come on the expense of developing user stories, mentoring, guiding, consulting, talking with our customers. I guess that I still don't know my place. I'm a good developer, I would like to think, and coding some really interesting delegates-based infrastructure or some neat OOP solution are those treats I can't live without. Still, leading projects, make sure everything ticks and the quality is high is a challenge I love to face in my every-day work; Above all - seeing my guys getting to the next step and helping them in this journey is the main reason I'm doing what I'm doing. I want to be the best I can be for my team and yet make an influence in the way we work via developing some solid infrastructures. My gut feeling is that I need to get better. I feel that I can and should be a lot better as a manager and a programmer but It is still very hard for me to decide how and where to invest my time.

This issue keeps me awake at nights "lately"(last 6 months or so).


Where do you put the line ? How do you decide to invest your time in programming on the expense of managing and vice versa ? When do you think it'ss appropriate to invest additional hour\day\month to something you believe in ? Do you have some rules of thumb ?

Posted by Oren Ellenbogen 
19/06/2006 10:53, Israel time UTC+03:00,     Comments [4]  | 
# Sunday, June 04, 2006

It's about time.

Our CTO, Roee Daliyot, is finally taking the time to write about the things he loves - GUI programming.

After writing about delegates & anonymous methods via JavaScript, he just released 2 must-see client-side controls for Drag&Drop and Clone&Drag&Drop.

So go on and pay him a visit.

Tell him I sent you.

Posted by Oren Ellenbogen 
04/06/2006 11:40, Israel time UTC+03:00,     Comments [0]  | 
# Sunday, May 28, 2006

Well, I really don't like writing posts like "Today I drank some Cola and wrote some pieces of code", but this is just funny.

I checked my Referrers list and I saw some interesting searches which lead to my blog:

1. delegate oren (www.google.com) - 1st place

   I like that phrase. delegate oren. yep, you can ring me any time. honestly!
   I guess that my lecture on delegates & anonymous methods gave me some good google PR.

Before you'll read the second one, sit down and don't hold
any glass or anything sharp in your hands.

 

2. why is teched dying (www.google.com) - 6th place

   Don't ask me why, don't ask me how, Just laugh... That's what I did.

   I have nothing but kind words to say about TechEd and you can even read some great posts here and here.

   Who is the psycho that wrote this phrase ?!?! ;-) 

3. teched 2006 party (www.google.com) - 14th place

   That's better. great party !

update:

4. porno oren (http://search.msn.fr/) - 4th place

   Oh-My-God...

5. modal refresh why god why (www.google.com) - 1st place

   Yes god, why ? well, I have a solution for this one.

Posted by Oren Ellenbogen 
28/05/2006 10:23, Israel time UTC+03:00,     Comments [0]  | 
# Saturday, May 13, 2006

We got up at 07:05. It was hard as hell, but we had to put the effort for the team. After all, we came to hear some great lectures. No way in hell I'm gonna miss it... Oh, and there are many pictures to see, come on, I know you want to see this one !
Posted by Oren Ellenbogen 
13/05/2006 07:37, Israel time UTC+03:00,     Comments [3]  | 
# Friday, May 12, 2006

So it all began on Tuesday, Moty (CEO), Roee(CTO), Ken (Team Leader and a major guffy) and myself drove about 5 hours to Eilat...
Posted by Oren Ellenbogen 
12/05/2006 09:30, Israel time UTC+03:00,     Comments [0]  | 

Man, that was a good 3 days of great lectures, great people and one great great party ! I had so much fun, really, and I'll try to share with my enthusiasm during the following 2-3 posts. Prepare for plenty of reviews about the lectures I've went to and a big set of pictures.

I got a lot of inspiration from some of the lecturers at TechEd and I can't tell you how much I'm excited about my lecture this week, I've invested a tremendous amount of time in it so I hope it will turn out the way I'm want it to be. It will be a dream come true to lecture on one of the next TechEd, so I hope I'll have some chances to share with you my motivation and my passion about our world(programming rules!).

All in time, I guess.

OK - on to the next post !

Posted by Oren Ellenbogen 
12/05/2006 08:56, Israel time UTC+03:00,     Comments [0]  | 
# Friday, May 05, 2006

I know, this is kind of a childish post but heck, It's hilarious to hear someone tries to pronounce my name - kudos Chuck, you did it !!

Click here to download the podcast (btw - my "thing" starts at -5:38).

Thanks Chuck, I'll update my progress on this one so keep reading ;)

Posted by Oren Ellenbogen 
05/05/2006 07:19, Israel time UTC+03:00,     Comments [3]  | 
# Friday, April 21, 2006

There are *a lot* of posts out there about interview questions we should all be familiar with before going to an interview for a developer\architect position. I'm not going to add more to that Q&A list but rather to talk about how many interviews you should go to while looking for a job talk and how you should talk, react and respond during those interviews. I want to share with you my experience in the field both from interviewee and interviewer point of views. Maybe this will enable you to get some more $$$ to your paycheck, maybe it will make you simply more confident during those interviews or maybe I would be able to answer some of the questions you've got and still nobody answered before.

I'm looking for a job, when should I say "That's enough interviews, let's sign" ?

I would say between 5-10 *successful* interviews. That means that you have at least 5 proposals from companies you're interested working for, even if 1-2 of them are out of the question due to the low payment. Less than 5 proposals will not give you the right impression about "how much am I worth?" so don't hurry to sign, you don't want to get stuck in a company just because they offered X$ more than the rest and you thought it was a lot. I know, you can always resign, but this is still a waste of time. Doing many interviews, on the other hand, can burn you which means you'll go to your 11th or 12th interview and don't give your best, that's a shame; Don't forget, your reputation is at stake and our industry is a small world.

Know how to walk the walk, but learn how to talk the talk:

Listen, an interview is like a blind date, you must create a great first impression if you want to get to second base (that means passing to the next phase in the screening, in our case). Therefore you must grasp the nature of technical people and press the right buttons and even more important - don't press the wrong ones. I know, learning how to talk and sell yourself is very hard to master, some of us are just born with it, some of us just think we have it, some of us learn how to do it during the years and some don't count on it ("I'll be good and that should be enough!"). If you're one of the latter, meaning that you know you're good and you think that should be enough.... you're damn right! BUT! you won't get the payment you deserve, trust me, so continue reading, maybe you can learn some good tips.

In an interview you must convey me that you have the confidence I seek. See, we all want to hire people we can trust: trust that they can do their job even in stressful times, trust their abilities to learn new things and to teach others. Just be relaxed, have faith in yourself and in your abilities. All of us are nervous during  interviews, we all want to impress, but over-motivation will get you eliminated, you'll simply cause the interviewer to be more anxious and try to make you sweat harder("The interviewer must be better than the interviewee" symptom); This is not the impression you would like to leave.

So, how do you learn to talk the talk? That's an hard question, but I've got a simple answer - search for a person(s) in your life who you feel does a good marketing for himself and start looking, listening and understand the way he talks and behaves around people. Try to stay close to that guy as he will make you move in the direction you want and will help you work on your PR(public relations) skills. After some time will pass you'll feel more confident and that will allow you to be "rude" enough to push yourself and be confident about your abilities. That's it.

Some tips about "talk the talk" during the interview from an interviewer point of view:

  1. Be relaxed. No interviewer wants to make you fail, he just want to make you sweat a little to see if you're up to the job.
  2. Have confidence in your abilities. An interviewer can smell lack of confidence and this will make you harder to excel during the interview. Have a "pep" talk with yourself before - "I'm not the best programmer, yea, I don't know how to write multi-thread applications, but I have the ability to learn, I have the passion for this job, I'm a good at X, Y and Z! yes! I've got a lot to offer". When I was 16 and I got my first job (PHP programmer), I really believed that I can be great if someone would give me a chance. Why? Because I knew that I love programming and I'll do anything to be good at it! you want me to work extra hours? to read at home? NO PROBLEM! Bring it on!
    This is the attitude you need in order to be a GREAT interviewee. Do it with passion!
  3. Think before you answer. This is the most important tip I can give to anyone. Numerous interviewees I've interviewed were eager to let me know how bright they are. They didn't even let me finish the question. Relax (see section 1), let the interviewer complete his question and think before you answer. I would like to hear something "That's a good question, give me a few seconds to think..... OK, so what you can do is ....". This shows that you don't hurry to pull something out of your sleeve just to meet "he asked, I replied" rule a lot of follows.
  4. Don't have the answer? nothing happened! Relax! (I would write see section 1, but I think you got the point right?)
    All you have to do is simply tell me "To be honest, I don't remember\know how to solve this question, BUT, if I had google, MSDN (whatever) - I would likely search "XXXXXX". In addition, let me think out loud about possible solutions to your question... OK so you can (1)XXXXX or maybe (2)XXXXX, I'm not sure but perhaps (3)XXXX will work as well". This will certainly make a good impression. Nobody can memorize MSDN and none of us has enough experience to cover 100% of the questions. Good interviewees just know how to stay cool and think out loud; Explain your way to the solution and I'll show you the way to the job and paycheck you seek.
  5. You're good, I have no doubt, but there are others who are better, I have no doubt. arrogance is a quality you must avoid or at least decrease. Nobody like arrogant people although I truly believe that there is a thin line between self confidence and arrogance. Try to stay humble, let them know that you have more than good programmer skills to contribute; Do it with grace.


Any tips you would like to share with me ?

Posted by Oren Ellenbogen 
21/04/2006 12:09, Israel time UTC+03:00,     Comments [0]  | 
# Thursday, April 13, 2006

I've joined Microsoft Israel community so you can now find some of my post in this address:

http://blogs.microsoft.co.il/blogs/orenellenbogen/

I'll publish a few advanced post in Hebrew in the following month so stay updated.

.NET | Life
Posted by Oren Ellenbogen 
13/04/2006 07:08, Israel time UTC+03:00,     Comments [0]  | 
# Friday, March 24, 2006

" Today, a real experience is much more important than a degree, well, unless you're looking for a government position. The problem in our industry is that students decide to study for the degree on the way, while trying to work in 120% job. In my opinion, if you want to give a student a chance at the real world while he can stay focus on his degree (and event enjoy it) you must assist him by finding him a position as an intern for at least a few months so later on he could apply to any position he'll be suited for. "

Well, that quote was mine(during launch time at my company). I'm one of those folks who tries to get my degree while trying to work my ass of. Sadly, I suffer 80% of the time as I struggle finish my papers for the universty on time and still enjoying my job(100% of joy). 
If internship was a part of the degree, I believe that the a lot of us programmers out there could enjoy the learning process without damaging our career and hack, maybe it will produce better programmers in our industry. 

In the USA (and in France too, as my cousin told me), this dream is a plain reality - you can see the internship project Joel Spolsky started here.

Posted by Oren Ellenbogen 
24/03/2006 10:02, Israel time UTC+02:00,     Comments [0]  | 
# Saturday, December 31, 2005

Wow, it's been a long time since I've published my latest post hasn't it ?
Ok, no time for lame "I was busy" excuses so let me fill the gaps -

  1. New position:
    I got a promotion at work and now I'm a team leader at our R&D department. I've come across, in my 6 years at the business, several great people; Some of them were good because of their technical knowledge, some for their leadership capabilities, some for their good nature and some for combining all the above. I'm working my ass of to affect my teammates and the rest of the people in my company as much as the latter ones affected me in the previous six years.
  2. Interviewing candidates:
    We are hiring; Myself and Roee(our technical manager) were interviewing about 50(some of them didn't pass my "phone exam") people in the previous 2 months. It required me to think about "what developers should know" and even more important "what developers should know how to find". In addition, it gave me a great look at the people in "my world" (not a perfect one, but still...)
  3. New co-workers:
    We hired a team leader named Ken Egozi and a programmer named Tamir Kanhe – GOOD LUCK folks!
  4. New challenges:
    I'm now figuring out the "Smart Client" architecture which we want to use in our application, this includes understanding:
    1. Composite UI Application Block
    2. ClickOnce
    3. Windows Forms 2.0 best practices(data binding, Async work, web services & WSE 3.0 etc).
      The world of windows forms is new to me so I have a lot to catch up.
                  After reading a lot and making some dirty application to test things,
                  I'm now summing it all up to a clean paper –
                  "SQLink R&D methodologies in developing windows forms application".
 
 
I gathered some usefull insights in the latest month so I'll publish them in the following week.
Posted by Oren Ellenbogen 
31/12/2005 08:25, Israel time UTC+02:00,     Comments [1]  | 
# Friday, November 18, 2005

I've sold my laptop(Compaq EVO N800V) today. After almost 3 years with me I had to let him go (tears are dropping on my keyboard). I'm kidding(!), I'm planing to buy a new (monster-one)laptop next week so I had to get rid of my old one somehow. Dror advised me to publish a message at Homeless and his tip was gold (worth 2000 NIS, in this case).

I really recommend this site, I got more than 10 calls today, just an hour after I've published to post there. Let me see, I've published the post around 11:00 and I've sold it at 15:00 (someone came to see it and took it away).

AMAZING!

Posted by Oren Ellenbogen 
18/11/2005 06:42, Israel time UTC+02:00,     Comments [2]  | 
# Saturday, November 12, 2005

Like every good Jew, I like to listen\read what other's has to say about me; So, a few days ago I've got a referrer and I went to see who's mentioning me and why ? After reading the all post there I've seen this paragraph:

"After my PC got fixed, I found this:

http://www.lnbogen.com/ChangingMicrosoftsTabStripDisabledPropertyViaJavascript.aspx

One step closer to salvation. However, it didn't work either:

Oren Ellenbogen (?!!?!? is this a real name!? To my native Dutch ears this sounds like "Ears Elbows".) "
... [the rest is irrelevant]

Man, I laughed about it (with myself) for about an hour ! I know, "Ellenbogen" in Dutch is "Elbow" but "Oren" is "Ear" ?!

Well, I guess there is no such thing as bad publicity... ;-)

Posted by Oren Ellenbogen 
12/11/2005 04:52, Israel time UTC+02:00,     Comments [0]  | 
# Friday, October 07, 2005

I've just landed this morning in our too-big-too-much-to-walk Ben-Gurion airport from my one week vacation at the beautiful Paris. To be honest, I really needed this vacation, I had too much on my mind during the last couple of months - University planning, work (and lots of it) and some universal (we called it "in-romo-shel-olam" in Hebrew) decisions to think about like my near future goals which I love to think about every new year. Meeting my great family, having some 20 folks dinner with amazing food and lots of good wine can do wonders to your mind and body so I come back with some new powers which I'm sure I'll need in order to progress during this new year.

I picked some insights during this week, some of them I would like to share with you -

Controlling the arm rest in the airplane as a life story.
On my way back, I flew with Arkia Boeing 757, meaning 3 seats in each side of the airplane; Guess what, I had to sit in the middle, between my father and another problematic guy. Why problematic ? I knew you'll ask it, well that's because he always tried to take over my arm rest and kept me awake for 4 damn hours and 5 minutes ! You can't blame me that I haven't tried, I tried to push, to take only the bottom side of the arm rest, only the upper side of the arm rest, to stretch while trying to take over, EVERYTHING ! this guy was persistent ! Well, I'm sometimes more stubborn than necessary, but I saw that this battle wasn't for me to win so I took the battle into a field I knew I can win - the arm rest near my dad. Don't give me that poor smile and nodding, if you try to move the man while he's a sleep, you must come with some heavy armor. The problem was that he was sleeping(\reading, he turned the pages in his book every 2-10 minutes) and I didn't want to move his hand. But... every child knows his parents' weak points and in my father's case it's me. Moving a little bit in my chair and showing him I'm a little bit tired (=unhappy) gave us both a great idea. In a sweep move, my father asked the fellow beside me to get up as he needed to go to the toilet. I had to get up too, but it's LIFO(last in, first out) style, so I had the position before him; Man, I love good tactics. So after 4 hours and 5 minutes, we had left only 10 minutes in the air so my trick was a little bit useless and I couldn't sleep at all, but I think I've learned a lot from it, don't you ?

Arm rests should come in couples for the chair in the middle in 3 sits airplanes.
See the section above. I think I should write a patent on this one, this is gold.

Take yourself some time to think about your goals in the near future, new year holiday is good time IMHO.
This year will be an important year for me, like any other year in our short life but maybe just a little bit more. This year I hope to start on the right foot (and hand, for that manner) my academic course and to step up in my work. In addition I'm planing to release a mini "product" out to the world and to see(and learn) how it goes. Well, you're all familiar with those subjects (work, studies) but they are too big to think over without decomposing them into more feasible tasks. I started my thinking during the vacation and I promised myself to finish up (and "refactor") during the next week.  So, I tried to decompose my "I want to improve at my work" task into smaller tasks like (just a small part from my tasks list):

  1. I want to improve my management skills
    1. I want to learn some time-management tools (so I'll be able to complete the next section).
    2. I want to build my teammates schedules.
    3. I want to follow it with them so I would be able to understand better where do they "waste" time so I can avoid it or think about ways to improve it. I want to be able to detect good progress and good work so I could praise them and make sure that this good phases(\methods) will be longer on their next assignments.
    4. I want to be able to teach my teammates - I really believe that good workers(and human beings for that manner) are those that aren't afraid to say that they want to learn new things every day even if that means they'll have to change their work every X years. I want to be able to teach my teammates a thing or two, direct them to other resources so they'll be able to learn, or any other media so they'll be happy to come to work every morning.
  2. I want to be taught - I'm trying to be a good worker, so section 1.4 must apply to me also. In order to do that I must think about ways to learn and set my mind about the subjects that interesting me; Finally, I have to sit with the people in my company(or surroundings) which I think has the capabilities to teach me and think how can I convince them that teaching me will be beneficial for them as well.
  3. I want to improve my software analyzing capabilities - I want to think and participate in the design of 2 huge softwares we're about the develop.
  4. I want to improve my selling skills - I'm thinking about releasing a small software with a friend of mine and in the last couple of days I'm thinking more and more if to release it as open-source or maybe trying to sell it as a product. I want to insert new technologies(.net 2, sql server 2005 and more) to my company, I must figure a good plan in order to do this smoothly and to justify any changes in our development phases so the management could be relaxed and fully understand why this changes will result "win-win" situation.
  5. I want to finish this year university courses with good success (85+ avg.) - The degree is important and I don't want to let it go just because I'm working, and I can plan my time better so I would be able to work and study at the same time without neglected any one of them, it's up to me, like always.
This is just the tip of the iceberg from my original list, but I think you get the idea. I'm planing to build this kind of list in my office so my teammates would be able to tell me their work expectations for this year and I would be able to think about ways which I can help them to achieve it.

Don't be afraid to let the world know - "I want" to do this, this and that !
Almost all the people I know want to be rich for many well known reasons. The problem in my opinion is not the "rich dad, poor dad" issues of "we're been taught to be humble about our desires, to be satisfied with our average paycheck" etc. It's the lack of preparation from our side that keeps us from being successful. One of the biggest sections in my list is how to learn more about the subjects which will able me to add just a little bit to my regular work paycheck and how can I use the industry I understand the "best" (computers) for making me more money. Being "rich" can be comprehend also as being smarter or becoming a better person, It's all depends on the list you're making. Keep this list updated, this is the hard trick you'll have to master; This will able you to monitor your progression and find new dreams. I have an uncle that good planing and a lot of self confidence got him the job of the president of a universal company and a lot of wealth for his good investments. He was never sorry for demanding more, and this is a lesson I will not forget. The bottom line is, be the best you can be, just be smart about it as we're not living alone and I DO think that being a good person is much more important than being successful, I just say you CAN be BOTH.


I would finish with happy new (Hebrew) year to all of you, may you get a little closer to fulfilling your dreams.
SHANA TOVA !

Posted by Oren Ellenbogen 
07/10/2005 10:55, Israel time UTC+02:00,     Comments [2]  | 
# Sunday, September 11, 2005

Searching Oren Ellenbogen in Google placed me on the third(3rd!) place !
It's a huge progress if you keep in mind that just last week I was at the 15th place (second page, at the middle)...

update [14.09.2005]:

I'm at the first place now ! Respect !

Posted by Oren Ellenbogen 
11/09/2005 12:36, Israel time UTC+03:00,     Comments [1]  | 
# Saturday, September 10, 2005

Man, I had a lot on my mind during the previous week.
The week began with installing my application in one of our client's server which was pretty hard task due to couple of unexpected incompatibilities - lack of local IIS(meaning - no debugger!) and AD(Active Directory) complicated tree structure. This two alone are a major headache for any programmer, but I'm glad that it's behind me now (another happy customer, I LOVE IT!). The week continued and I had to fix some nasty bugs in a couple of applications which I'm responsible for, which turns out nice - there is nothing better than a good bug and a good solution (IMHO anyway).

I spent the end of the week to prepare for my presentation on the next week. I'm going to talk about DHTML, XML and XMLHTTP with my co-worker Roee(which is going to talk about Javascript and the server-side .vs. client-side pros & cons) in one of IDF computers' unit. It's a huge time consuming task to organize a decent power-point presentation, a few demos and a set of exercises and most importantly - organize my time properly. But again, I can't complain because I love giving presentation and work a little on my speaking abilities and time organization abilities.

In addition, I'm working now on Localization and Member-Roles Management solutions for our new ASP.NET 1.1 application. I know those requirements have built-in solutions in ASP.NET 2.0, but the client demanded ASP.NET 1.1 so unfortunately I can't use them yet.

btw - I'll upload the presentations, demos and exercises about XML\DHTML\XMLHTTP at the end of next week, maybe it will save one of you some time.

OK, back to work...

Posted by Oren Ellenbogen 
10/09/2005 04:38, Israel time UTC+03:00,     Comments [2]  |