<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3855749445209325267</id><updated>2012-02-17T02:53:36.172+02:00</updated><title type='text'>The Software Manager</title><subtitle type='html'>The Software Manager day to day work</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://0rencs.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://0rencs.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Oren Cohen Shwartz</name><uri>http://www.blogger.com/profile/01764416806072976347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://bp2.blogger.com/_0cKmG4rtOYs/R2mJNgjpx3I/AAAAAAAAFIM/NImxqNlBgMA/S220/me.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>24</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3855749445209325267.post-3060341547150659416</id><published>2011-02-27T20:48:00.000+02:00</published><updated>2011-02-27T20:49:15.924+02:00</updated><title type='text'>Leadership and Leading-Sheep</title><content type='html'>&lt;h3 class="post-title entry-title"&gt; Leadership and Leading-Sheep &lt;/h3&gt; &lt;div class="post-header"&gt;  &lt;/div&gt;  &lt;a href="http://www.sermons4kids.com/sheep_shepherd_maze.gif"&gt;&lt;img style="float: right; margin: 0px 0px 10px 10px; width: 200px; height: 152px;" alt="" src="http://www.sermons4kids.com/sheep_shepherd_maze.gif" border="0" height="182" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;A lot of words and lines of words was and will continue to be written on the leadership topic.&lt;br /&gt;You  might have read about the "fact" that leadership is not something that  you can learn, either born with or don't. I don't agree with that  statement foremost because it is too deterministic.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;strong&gt;Leadership qualities can be developed, up to a certain Level&lt;br /&gt;&lt;/strong&gt;From  my point of view, leadership qualities can be developed, up to a  certain level, by anyone. It is only depends on a complex formula of  what are the collective aspects that impacts a person through out his  life (parents, school mate, teachers etc.) and the current surrounding  where he operates. Meaning it is related to internal and external  variables. An internal factor example: A low self esteem that was  generated due to parent or teacher(s) behavior, can lower the  probability of the certain person to become a leader. An external factor  example: A person can start new position in a company where other  leader(s) are already in the premises, his coworkers or employees may  not grant him the leadership. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;strong&gt;Leadership is granted by the people themselves&lt;br /&gt;&lt;/strong&gt;The  only deterministic aspect that one can set on the leadership phenomena  is that, by all means, the leadership is granted by the people  themselves. You can't force someone to accept you as his leader. Even if  you have the right internal qualities you will only become a leader if  coworkers or your employees see you as such. This part is very elusive  because every people can define a leader a little bit different. Even if  a group of people may define a common list of leader qualities they may  not agree about the weight or impotency of each quality. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;strong&gt;Why is it important?&lt;br /&gt;&lt;/strong&gt;The  origin of leadership, is claimed to be in the Evolution. The ancestors  of the very best leader exist in plant earth was an ape. Studies show  that leadership also exists within apes groups, as well as in other  primates (Richard Wrangham and Dale Peterson, in Demonic Males: Apes and  the Origins of Human Violence). The leadership among ape group grants  order and stability. In some studies it was claim that a grown up ape is  emotionally equivalent to a human child.&lt;br /&gt;All grown up people was  once children that looks upon their parents and extended family for  directions. Everything is new for a new born baby and there is lot to  learn. Having someone to guide you is extremely important. This very  early unconscious need stays with us forever. The difference between  grown up people is the level of this need.&lt;br /&gt;When someone is hired as a  manager to manage an existing team or group of people he will be seen  by them, almost immediately, as a manager as is title implies. They will  see him as a leader only after a significant period of time, if ever.&lt;br /&gt;In  the Hi-Tec field, as well as in other, the leadership is important. The  harsh competition create, occasionally, crazy deadline and enforce  people to think out of the box in order to achieve differentiation  against the competitors products. The manager can not move the "rock" up  to the tip of the hill without the help of others. In order to achieve  harsh complex work within pressure the manager should also have some  leadership qualities. It may not be important in short term but it is  surely critical in long term perspectives.&lt;br /&gt;Example:&lt;br /&gt;Two shepherd  need to direct their herd back to the pen. The distance to the pen is  very far and a storm is getting close. The sheep must arrive to the pen  as soon as possible.&lt;br /&gt;A shepherd that acts as manager with low  leadership qualities will shepherd his sheeps to follow a certain path  and to accomplish it within. From time to time he will "yell" to get  back to the path or to hurry up. A shepherd that acts as manager with  high leadership qualities will shepherded his sheep quite the same, only  he will gather them before the long walk, explain what it is to  accomplish and why. The shepherd will inspire the herd; "tell them" that  he believes in them and together they will achieve the great task.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Leader qualities &lt;/strong&gt;&lt;br /&gt;There are many leadership qualities. The following is a list of the most important ones, as I see it. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: arial;"&gt;Humility&lt;/span&gt; &lt;/strong&gt;&lt;br /&gt;o A leader does not give orders he asks and share.&lt;br /&gt;o A leader does not take credits but give it to others.&lt;br /&gt;o A leader looks at his coworkers and employees in their eyes not from above. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;strong&gt;Accountability &lt;/strong&gt;&lt;br /&gt;o The leader will take the blame on him and not drop or include the collective in to it. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;strong&gt;Integrity&lt;br /&gt;&lt;/strong&gt;o Say the truth all the time &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;strong&gt;Carrying&lt;br /&gt;&lt;/strong&gt;o A leader really cares about his coworkers and employees. He asked and listens. He really knows his people. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;strong&gt;Role model&lt;br /&gt;&lt;/strong&gt;o A leader shows example.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Initiative and entrepreneurial drive&lt;br /&gt;&lt;/strong&gt;o A leader considers any problem as a challenge.&lt;br /&gt;o Any challenge holds prospects to achieve wonderful progress.&lt;br /&gt;o A leader has a clear vision that he shared with other.&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;Clarity&lt;br /&gt;&lt;/strong&gt;o A leader set clear goals&lt;br /&gt;o Direct focus&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;Confidence&lt;br /&gt;&lt;/strong&gt;o A leader can take harsh decisions with mumbling&lt;br /&gt;o A leader can take accountability and responsibility with no fear. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3855749445209325267-3060341547150659416?l=0rencs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://0rencs.blogspot.com/feeds/3060341547150659416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3855749445209325267&amp;postID=3060341547150659416' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/3060341547150659416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/3060341547150659416'/><link rel='alternate' type='text/html' href='http://0rencs.blogspot.com/2011/02/leadership-and-leading-sheep.html' title='Leadership and Leading-Sheep'/><author><name>Oren Cohen Shwartz</name><uri>http://www.blogger.com/profile/01764416806072976347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://bp2.blogger.com/_0cKmG4rtOYs/R2mJNgjpx3I/AAAAAAAAFIM/NImxqNlBgMA/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3855749445209325267.post-5929143747700260826</id><published>2011-01-03T21:13:00.000+02:00</published><updated>2011-01-03T21:14:39.226+02:00</updated><title type='text'>Why Software Projects Tend to Fail</title><content type='html'>&lt;span class="Apple-style-span" style="font-size: 13px; color: rgb(51, 51, 51); "&gt;&lt;h3 class="post-title entry-title" style="margin-top: 0.25em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 4px; padding-left: 0px; font-size: 18px; font-weight: normal; line-height: 1.4em; color: rgb(204, 102, 0); "&gt;&lt;br /&gt;&lt;/h3&gt;&lt;div class="post-header"&gt;&lt;div class="post-header-line-1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="post-body entry-content" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; line-height: 1.6em; "&gt;&lt;a href="http://www.cartoonstock.com/lowres/shu0109l.jpg" style="color: rgb(85, 136, 170); text-decoration: none; "&gt;&lt;img alt="" src="http://www.cartoonstock.com/lowres/shu0109l.jpg" border="0" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); float: right; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 10px; width: 400px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;Introduction&lt;br /&gt;&lt;/strong&gt;It is a sad statistical fact that software projects are scientifically fragile and tend to fail more than other engineering fields."A Standish Group research report shows a staggering 31.1% of projects will be cancelled before they ever get completed. Further results indicate 52.7% of projects will cost 189% of their original estimates" (1)&lt;br /&gt;The statistics also show results for different software company sizes and types:&lt;br /&gt;"…such failures occur far more often than they should. What's more, the failures are universally unprejudiced: they happen in every country; to large companies and small; in commercial, nonprofit, and governmental organizations; and without regard to status or reputation…" (4)&lt;br /&gt;&lt;strong&gt;Scope&lt;/strong&gt;&lt;br /&gt;This article describes several reasons for software project failures.&lt;br /&gt;When Can a Software Project be Defined as a Failure?&lt;br /&gt;The failure mark of disgrace is quite arbitrary and subjective. Ask the project manager of a failure project and he will tell you that it is not. The intensiveness of the failure also varies from project to project. In a commercial software company, a failure will be related to the software consumer. For example:&lt;br /&gt;The software did not meet with the consumers need.&lt;br /&gt;The software release was later than scheduled (deadline violation).&lt;br /&gt;The software had too many bugs.&lt;br /&gt;&lt;strong&gt;Sad Statistical facts&lt;/strong&gt;&lt;br /&gt;According to research conducted by the Standish Group in 2005:&lt;br /&gt;"… only 28 percent of software projects in 2000 succeeded outright …" (2)&lt;br /&gt;"… Some 23 percent were cancelled, and the remainder were substantially late …"(2)&lt;br /&gt;&lt;strong&gt;Why Do Software Projects Tend to Fail?&lt;/strong&gt;&lt;br /&gt;Note: The following list of software project failure reasons is not prioritized. Some of the reasons are claims that were measured by researchers. I have tried not to add my own judgment; it is left to the reader.&lt;br /&gt;&lt;em&gt;&lt;strong&gt;The maturity of the software engineering field&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;The software engineering field is much younger than the other engineering fields and that, in time, will get more stable&lt;br /&gt;The field is young and therefore most of the field engineers and managers are also young. Young people have less experience and therefore tend to fail more&lt;br /&gt;Young people are more optimistic and tend to estimate badly&lt;br /&gt;&lt;em&gt;&lt;strong&gt;Shortage of knowledge base&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;As a relatively young engineering field, software engineering is short of accumulative knowledge bases. For example, the famous gang of four book "Design Patterns: Elements of Reusable Object-Oriented Software" was first published in late 1994. The book suggests design patterns to common software design problems and it is one of the famous knowledge base materials in the software engineering field. "Software engineering has evolved steadily from its founding days in the 1940s"(5), but it is still short of accumulative knowledge base as opposed to other engineering fields. Another example is OOP (Object Oriented Paradigm). OOP is considered to be more successful than the previous procedural paradigm. OOP was only embraced by the Software industry in the 1990s. "Even though it originated in the 1960s, OOP was not commonly used in mainstream software application development until the 1990s."(Wikipedia)&lt;br /&gt;&lt;em&gt;&lt;strong&gt;Software is not tangible&lt;br /&gt;&lt;/strong&gt;&lt;/em&gt;As opposed to other engineering fields like civil engineering, the software engineering building blocks are much less tangible and therefore hard to measure and estimate. "Software is abstract"(2)&lt;br /&gt;&lt;em&gt;&lt;strong&gt;Competition: harsh deadlines&lt;br /&gt;&lt;/strong&gt;&lt;/em&gt;The competition in the software industry is harsh. The Time-To-Market (TTM) is crucial and the drive to meet harsh deadlines is enormous. This characteristic, along with other methodological anomalies like "Code first; think later" and "Plan to throw one away; you will, anyhow," makes competition harsh. The hard competition in the software industry causes not only the need to deliver ASAP, but also the requirement to catch as many potential customer eyes as possible. Firing in every direction causes disorganization, fast coding and projects that are not well planned.&lt;br /&gt;&lt;em&gt;&lt;strong&gt;Technology changes rapidly&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;"Software development technologies change faster than other construction technologies."(2) Until recently, Microsoft was frequently bombarding the industry with new technologies. Rapid technology changes introduce liability for software manufactures. For example, new Operating Systems obligate a company like Ahead to release a new adaptable version of Nero. A few years ago, Microsoft had decided to change the way it introduced new technologies to the software industry. It introduced the wave methodology. In this methodology, Microsoft agreed to release a bundle of technologies (tools, Framework, programming languages etc.) in waves, every several years and by that, let the software industry adapt and digest the new upcoming technologies. Lots of popular software like Ulead Video Studio and Nero that used to run on Windows XP do not run on Windows Vista.&lt;br /&gt;Change is tempting&lt;br /&gt;A building architect will not decide to add additional floors during the building construction. The result would be dreadful, as the building foundations were not constructed for it. The software architect's hand, however, will be much more loose on the trigger. Irresponsible changes like adding new features and redefining existed ones may cause deadline violations and/or bad planning and coding (patch). Given the harsh competition (see item 6), it looks like changes are inevitable.&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Bad time management&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;Estimating the development time should correlate to the employees ("resources") on hand. In some cases, managers estimate and then enforce a time table as if they were the ones who were going to do the developing. This type of enforcement yields pressure on development and may harm it. Moreover, violating deadlines in this condition is common.&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Bad or no managing skills&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;It is common that software managers are used to being excellent, successful and professional software engineers. Unfortunately, the skills are not the same when it comes to successful managing. Great engineering skills do not guarantee great managing. Newborn software managers do not receive the right, or any, guidance.&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Wrong or no Software Development Life Cycle (SDLC) methodology&lt;br /&gt;&lt;/em&gt;&lt;/strong&gt;Developing life cycle methodology must be part of software project management. Nevertheless, it should not be forced into the R&amp;amp;D environment. The software engineering field is relatively young (see item 4), but still there are already well-known developing life cycle methodologists (Agile, Crystal, Spiral, Waterfall, etc.), successful stories and case studies. Software project managers may adopt one of the existing methodologies, but usually there is also a need to adapt the methodology to the company on hand. The adaptation includes: company culture, employees, marker, managers, etc. This is the Waterfall Model:&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Bad or no documentation&lt;br /&gt;&lt;/em&gt;&lt;/strong&gt;Documentation should be considered as a "must have" and not "nice to have". Documentation is an integral part of developing the life cycle process. It should not be caught as a nagging tedious task, done for the sake of some strict QA manager. There are various types of software project documentation, each related to a certain stage in the development life cycle of the project. For example:&lt;br /&gt;Statement of Work: preliminary requirements and project frame, usually written by the customer&lt;br /&gt;Marketing Requirements Document (MRD)&lt;br /&gt;Software Requirements Specifications (SRS)&lt;br /&gt;High Level Design (HLD), written by R&amp;amp;D&lt;br /&gt;Low Level Design, written by the R&amp;amp;D&lt;br /&gt;Project Schedule&lt;br /&gt;Software Quality Assurance Plan (SQA)&lt;br /&gt;There are lots of templates and different names to the above documentation. Nevertheless, the important thing is that their existence requires the position holder to think before working on the project. The documents need to be stored and updated during the life of the project as it is done in a source code case (out of date document is a bug). Badly written or no MRD or SRS document can cause project failure (See item 11 bad SRS document).&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Bad or no software requirements&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;As much as it sounds bizarre, in some software projects SRSs (Software Requirement Specifications) do not exist or are badly written. There are many types of SRS formats and even if it was only one common template, the content would vary from company to company. It is a question of how well-defined the requirements are. I have never heard about a well-defined SRS that caused projects to fail, but I am familiar with the opposite. A laconic requirements document affects the ability to break the software complexity, generate tasks and estimate time. Moreover, inadequate definitions cause misunderstandings and wrong implementation. Changes to the project during the development become inevitable and, in time, project deadlines will be missed.&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Lack of testing&lt;br /&gt;&lt;/em&gt;&lt;/strong&gt;Those who develop the software should not test it. The developer should run unit testing, but it is not a replacement to an objective QA test.&lt;br /&gt;Testing only at the end of a long milestone raises problems due to the load of testing and inherent problems that should have been caught at earlier stages.Moreover, managers tend to rush the testing period at the end of the milestone in order to release on time&lt;br /&gt;QA that does not bite and has no real power does not have the right effect on the R&amp;amp;D department and is there for the project itself.&lt;br /&gt;QA should be started as soon as the software project starts. Hence, even in the planning stage. QA participation in early stages is important for its preparation for the software. For example, QA should also check the SRS document and make sure that the software was implemented according to it.&lt;br /&gt;The following Professor Brooks rule of thumb might seem radical, but being given no proportional time for planning and testing is indeed problematic: "1/3 of the schedule for design, 1/6 for coding, 1/4 for component testing, and 1/4 for system testing."(3)&lt;br /&gt;Tester to developer ratio: there is no rule of thumb that defines the number of QA engineers per software engineer. The reason for that is that it depends on many variables and more specifically on the characteristics of the software. For example, if "multilingual" is a software requirement, then the number of tests increases. Another example will be the number of supported Operating Systems. The number of testers required to test the software requires estimation. Bad estimation can cause project failure. There are several models that help with Tester to developer ratio (see reference number 7). According to a recent informal survey held at QAI's 20th Annual Software Testing Conference in September of 2000 (8):&lt;br /&gt;&lt;em&gt;&lt;strong&gt;Poor communication among the "Holy Triangle&lt;/strong&gt;"&lt;/em&gt;: customers, R&amp;amp;D and marketing&lt;br /&gt;The "Holy Triangle," as I define it, describes the important relationships between the customers, marketing and R&amp;amp;D. As seen in the picture below, the marketing side combines the Customer and R&amp;amp;D. Marketing interviews the customers and picks at their needs constantly. Then it brings the important knowledge to the R&amp;amp;D department. Strange as it may seem, in some commercial software companies, the customer requirements and needs are not gathered. This anomaly can happen if the company suffers from "Hero base project." In this case, a certain persona, usually the company CTO, enforces the project requirements without taking into consideration the market and the customer's real needs. The result of this behavior might be the creation of software that lacks the market needs and, in time, is a project failure. "… The communication of requirements from customers to developers is a common source of problems, as is the communication from developers to customers of the repercussions of those requirements…"(2)&lt;br /&gt;&lt;em&gt;&lt;strong&gt;Human resources management&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;It is a given fact that lots of software project managers start working without the basic guidance of how to motivate people to succeed. Software managers tend to manage their software engineers only in the professional engineering aspects. However, software engineers are people too. Learning what motivates them requires time and will from the manager side. No two men are alike, both in terms of management and motivation.&lt;br /&gt;&lt;strong&gt;&lt;em&gt;No version / source control&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;Surprising as it may sound, some software projects are not backed up in source control. Sources get lost; versions cannot be regained; products on customer's side can not be reconstructed.&lt;br /&gt;&lt;em&gt;&lt;strong&gt;No or bad risk management&lt;br /&gt;&lt;/strong&gt;&lt;/em&gt;"…A project risk is an uncertain event or condition that has consequences for the project…The purpose of risk management is to identify, analyze, and respond to project risks…"(2). Given the above items and the fact that software projects tend to fail, it would be absurd not to manage risks. The Risk Management Document is the foremost design to enforce the software company to think about what can go wrong. The thinking process itself can solve problems before they even happened. Examples of risk:&lt;br /&gt;Incomplete or badly written requirements&lt;br /&gt;Choosing a technology that is not known by the current developers&lt;br /&gt;Relying on complex third party software&lt;br /&gt;The Risk Management Document needs to be updated during project life cycles. It should not be too general or vague, but address real details of problems that might occur.&lt;br /&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;br /&gt;"…Software development isn't just a process of creating software; it's also a process of learning how to create the software that is best suited for its purpose."(2) The article describes some of the answers to the question, "Why software projects tend to fail?" I encourage the reader to keep reading on that topic for two main reasons:&lt;br /&gt;Knowledge: knowing why software projects fail is a good start to preventing your own software project failure.&lt;br /&gt;Incomplete: the information in this article is incomplete; I consider it as a promo to keep reading.&lt;br /&gt;&lt;strong&gt;Bibliography and References&lt;br /&gt;&lt;/strong&gt;&lt;a href="http://www.standishgroup.com/sample_research/chaos_1994_1.php" style="color: rgb(85, 136, 170); text-decoration: none; "&gt;The CHAOS Report&lt;/a&gt; Standishgroup web site, 1994&lt;br /&gt;Software Project Secrets Why Software Projects Fail George Stepanek, Apress, Sep 2005&lt;br /&gt;&lt;a href="http://spectrum.ieee.org/sep05/1685" style="color: rgb(85, 136, 170); text-decoration: none; "&gt;The Mythical Man-Month Essays on Software Engineering&lt;/a&gt; 20th Anniversary Edition, Frederick P. Brooks, JR, Addison Wesley, Aug 2002 Why Software Fails, spectrum IEEE Online, Robert N. Charette&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/History_of_software_engineering" style="color: rgb(85, 136, 170); text-decoration: none; "&gt;History of software engineering&lt;/a&gt;, Wikipedia&lt;br /&gt;Theory and Problems of Software Engineering David A. Gustafson, McGraw-Hill.&lt;br /&gt;&lt;a href="http://www.kiberle.com/pnsqc1/estimate.doc" style="color: rgb(85, 136, 170); text-decoration: none; "&gt;Estimating Tester to Developer Ratios&lt;/a&gt; Kathy Iberle,Sue Bartlett&lt;br /&gt;&lt;a href="http://www.riceconsulting.com/articles/tester_developer_ratio.htm" style="color: rgb(85, 136, 170); text-decoration: none; "&gt;The Elusive Tester to Developer Ratio&lt;/a&gt; Randall W. Rice&lt;br /&gt;&lt;a href="http://www.jiludwig.com/Template_Guidance.html" style="color: rgb(85, 136, 170); text-decoration: none; "&gt;Templates and Guidance&lt;br /&gt;Project Reference &lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.stsc.hill.af.mil/crosstalk/2002/04/young.html" style="color: rgb(85, 136, 170); text-decoration: none; "&gt;Recommended Requirements Gathering Practices&lt;/a&gt; Dr. Ralph R. Young, Northrop Grumman Information Technology&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3855749445209325267-5929143747700260826?l=0rencs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://0rencs.blogspot.com/feeds/5929143747700260826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3855749445209325267&amp;postID=5929143747700260826' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/5929143747700260826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/5929143747700260826'/><link rel='alternate' type='text/html' href='http://0rencs.blogspot.com/2011/01/why-software-projects-tend-to-fail.html' title='Why Software Projects Tend to Fail'/><author><name>Oren Cohen Shwartz</name><uri>http://www.blogger.com/profile/01764416806072976347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://bp2.blogger.com/_0cKmG4rtOYs/R2mJNgjpx3I/AAAAAAAAFIM/NImxqNlBgMA/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3855749445209325267.post-8520294630555308859</id><published>2010-12-21T08:47:00.001+02:00</published><updated>2010-12-21T08:47:28.878+02:00</updated><title type='text'>Time management - excuse me, do you have the time?</title><content type='html'>&lt;a href="http://www.timerecorders.co.uk/images/time_is_money2.jpg"&gt;&lt;img style="float: right; margin: 0px 0px 10px 10px; width: 200px;" alt="" src="http://www.timerecorders.co.uk/images/time_is_money2.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;You have probable already know that time is limited, right?&lt;br /&gt;By now there are thousands of books and articles about this topic. All saying time is a limited resource use it wisely.&lt;br /&gt;&lt;strong&gt;But can you really manage time?&lt;/strong&gt; Time is not a dog that one can train.&lt;br /&gt;&lt;br /&gt;While it is a physical fact people tend to misinterpreted the philosophy behind it.&lt;br /&gt;As Marshall J. Cook write in his book: Time Management : Proven Techniques for Making the Most of Your Valuable Time&lt;br /&gt;"Contrary  to popular belief, effective time management is not based on doing more  things in less time. That's just not going to happen. Time management  is about doing the right things better."&lt;br /&gt;&lt;br /&gt;Another example is Richard Koch: "Living the 8020 Way - Work Less, Worry Less, Succeed More, Enjoy More":&lt;br /&gt;"We Have All the Time in the World" here is a very philosophic story from his book:&lt;br /&gt;&lt;em&gt;"At  the age of 30, an extremely successful Wall Street trader decided to go  to Tibet, enter a monastery, and undertake rigorous spiritual studies.&lt;br /&gt;On  his first day, while his fellow trainees were hanging back, the  extrader marched up to the top Zen master and asked, “How long does it  normally take to become enlightened?”&lt;br /&gt;“Seven years, ” the Zen master  replied. “But I was top of my class at Harvard Business School, I made  $10 million at Goldman Sachs, and in preparation for entering the  monastery I’ve taken all the best time-management courses. How long will  it take me if I study intensively and try extremely hard to cut the  time?”&lt;br /&gt;The Zen master smiled and said, “Fourteen years. ”&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;I read quite a lot of books on that topic and tend to agree that time do need to be manage.&lt;br /&gt;The R&amp;amp;D manager should allocate time to think about what it is important to do. He should follow the Pareto principle: "8&lt;strong&gt;0 percent of results come from only 20 percent of causes or effort&lt;/strong&gt;" this is the most excellent time management tool - although it is not easy to be mastered.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3855749445209325267-8520294630555308859?l=0rencs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://0rencs.blogspot.com/feeds/8520294630555308859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3855749445209325267&amp;postID=8520294630555308859' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/8520294630555308859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/8520294630555308859'/><link rel='alternate' type='text/html' href='http://0rencs.blogspot.com/2010/12/time-management-excuse-me-do-you-have.html' title='Time management - excuse me, do you have the time?'/><author><name>Oren Cohen Shwartz</name><uri>http://www.blogger.com/profile/01764416806072976347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://bp2.blogger.com/_0cKmG4rtOYs/R2mJNgjpx3I/AAAAAAAAFIM/NImxqNlBgMA/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3855749445209325267.post-2259995107761205332</id><published>2010-12-21T08:46:00.001+02:00</published><updated>2010-12-21T08:46:23.669+02:00</updated><title type='text'>A software architecture toolset for choosing the right type of Client Application</title><content type='html'>&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The article deals with an important question, one that raises a lot of debate in the .NET software architecture world.&lt;br /&gt;What to choose: "Web-Application" or "Desktop-Application"? Rich-Internet-Application or a Smart-Client?&lt;br /&gt;The  reason why this question is asked so frequently recently, is that both  technologies are getting closer and closer and when the distinctions  becomes fuzzy the decision is harder to make. For example, Smart client  introduces smart deployment and diminishes one of the biggest cons of  Desktop-Application. With Ajax, Web-Applications run faster and with  enhanced user experience.&lt;br /&gt;Before we get started it is important to  say right here and now that the define question above must always  depends on the business problem.&lt;br /&gt;It will be an obscene act for a  developer or architect to choose a technology based on a whim.  Technology should not be chosen on stuffy professionalism either. Many  companies choose technology because this is what the current developer  knows and good at. Choosing the right application type is crucial in  many businesses. The end users and the business problem on hand, are the  ones who should take the lead in the decision making.&lt;br /&gt;This article does not deal with a certain business issue. It discusses the common pros and cons of each methodology.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;The Dialog&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I choose to face with this question in a dialog form. The Dialog is conduct between two software architectures.&lt;br /&gt;&lt;strong&gt;Socrates:&lt;/strong&gt; a Web-Application advocate and&lt;br /&gt;&lt;strong&gt;Plato:&lt;/strong&gt; a Desktop-Application advocate.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The  dialog format allows me to not take a stand. In a matter of fact I  don't have a stand. I think both technologies are great and when there  is a need to choose one of them it should be according to the business  problem.&lt;br /&gt;You are most welcome to join to their (imaginary) debate held in modern Greece in one of the Tech-Ed .Net seminars.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;Socrates:&lt;/strong&gt;…  But Plato, your claim about the needs for constant software upgrades  only strengthens my argument that Web-Applications are the best  technology. In a Web-Application the application is actually located on a  remote server which you can upgrade when ever it's needed and it  reflects to your users online. In other words, when all the code is in  one place everyone sees the latest release.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;Plato:&lt;/strong&gt;  Well, with ClickOnce technology a Windows-Form-Application can be  deployed and launch from the Web. With this type of technology software  upgrades have never been easier to maintain. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;Socrates:&lt;/strong&gt;  Oh, I heard about what it is capable of, but isn't it too cumbersome to  accomplish? You do need to make all the assemblies strongly named and  the amount of folders and files it creates on the web server is  quite…well… cumbersome. Moreover, who wants to install a  Desktop-Application on his hard drive if he does not have to?&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;Plato: &lt;/strong&gt;Well,  I guess this technology will be improved by the Redmond fox in the  future. Right now, the user can choose between offline and online  executions. In both modes the application is installed on the machine.  The difference is that in offline mode the application can be jump  started and get updated from the desktop while in online mode it can be  run only from the web link as before. Please also know that ClickOnce is  not the only solution. A "home made" solution like using a Web-Service  that the Desktop-Application communicates with, checks and install  updates are easy to develop.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;Socrates: &lt;/strong&gt;So  you are basically saying that in online mode, which is closest to  running a Web-Application, the application is reinstalled again and  again in each run. What if it is a big application in term of Mega  bytes? Well, my dear Plato I rest my case.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Plato: &lt;/strong&gt;No,  you haven't, because there is some kind of caching mechanism that  improves this behavior. I guess, the .Net Framework only downloads the  required files.&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Socrates: &lt;/strong&gt;Hmmm…, .NET Framework you said. Well do I smell a software perquisite in the air? &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;Plato:&lt;/strong&gt;  You do smell well, but do understand that the user must not have the  .NET framework on his computer or must preinstall it manually. The  deployed ClickOnce application can be easily defined to support the  installation of the .NET Framework (bootstrapper). Dear Socrates, as you  well know Web-Applications commonly require ActiveX installations?  Those requirements often scare users because they are commonly causing  the web browsers to display intimidating security.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;Socrates:&lt;/strong&gt;  Well, you are right; today's web browsers do make us lots of headaches.  But, Windows firewalls often do the same for Desktop-Applications. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;Plato:&lt;/strong&gt;  In Desktop-Applications as opposed to web-browser the application has  rights that are granted from the logon user. It can access system data  like IP Address, Registry, Files, Windows Shell integration etc. In a  script mode the Web-Application is very limited and the ActiveX  technology is one of the last resorts. Web-Applications cannot leverage  local resources like CPU or installed software either. Moreover, isn't  true that ActiveX is also being used in Web-Applications to enhance  graphic capabilities like Charts, Maps etc.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Socrates: &lt;/strong&gt;Well,  it depends on what the Web-Application is obligated to do. But, yes it  is often use for more complex and some kind of fancier UI controls.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;Plato: &lt;/strong&gt;I  guess you will also agree that Web-Application will never be capable to  support GUI and visualization functionalities like Desktop-Application.  For example, the user interface must travel back and forward across the  web in order to be refreshed.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;Socrates: &lt;/strong&gt;I wouldn't say always. AJAX, for example enhances the UI capabilities. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;Plato: &lt;/strong&gt;AJAX  also added tons of client-side script code and that hurts performance  and harms the user experience. With AJAX, Web-Applications stop being a  thin application and start to get fat. Speaking of scripts, isn't true  that debugging capabilities of client and server side scripts languages  like VB and Java script are impossible. Isn't also true that developing  in this kind of script language is klutzy?&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Socrates: &lt;/strong&gt;With  today's ASP.NET technology, server code (code behind) can be written in  a high level language (any .NET aware language) that can be of course  debugged. As for client and server side scripts I am afraid you are  right.&lt;br /&gt;Plato, with you permission I would like to talk about  application availability. As you recall, in Web-Application the  application is available and can be access from anywhere without  installing anything on the client machine. For example, Gmail is a  web-based Email application. You can enter to your Inbox no matter where  you are. In case, you are entering an Internet-Café you surly be  permitted to enter to Gmail but not to install any application on the  machine.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Plato: &lt;/strong&gt;Yes, I see your point. But what  if I am in my home or at the office and I want to see my Emails but the  Gmail server is down or I have temporarily lost my Internet connection. I  will not be able to see my Emails right? Web-Application must be  connected to the server all the time. In other words  Desktop-Applications offer better offline and caching capabilities.  There is no need to waste time waiting for screens to refresh or  networks to become available&lt;br /&gt;&lt;br /&gt;As opposed to:&lt;br /&gt;&lt;br /&gt;Socrates:Well,  if you need smart caching and offline capabilities you are right.  Another thing that I would like to mention is a cross-platform  capability. If your Desktop-Application is targeting to a world wide use  will you be able to install it on Linux and on Windows OS. Even if you  have decided to support only Windows OS family you will still need to  support and test your application on lots of versions like:  98/ME/NT/2000/2003/XP/Vista.&lt;br /&gt;Not including sub versions like Home and  professional editions. You will soon notice that the above OS supports  different APIs and acts differently. In case of a Web-Application you  are running within a well tested application (like IE) that was already  tested on those OS. Web Browsers are also committed to standards like  HTML and Java scripts interpretation. Therefore, as long as you stick to  standards you will have no problems.&lt;br /&gt;Plato:At the beginning, you  have almost convinced me, but then I have figured there are a lot of web  browsers vendors and lots of web browser versions. Also there are a lot  of technologist like ActiveX and Flash that will not work on Mac web  browsers. Nevertheless, you are right if the Web-Application is simply  enough will be easier to support world wide users.&lt;br /&gt;Socrates:Well, working with a markup language like HTML also holds lots of simplicity and flexibility capabilities.&lt;br /&gt;Plato:It  is true! But at the same time it is also very limited. With XAML markup  language, Desktop-Applications also enjoy the flexibility like HTML  plus much more enhanced UI capabilities.&lt;br /&gt;Socrates:OK, Plato we are  not even close to end this debate, but I do need to go. I have a meeting  with Xenophon at the local SPA.&lt;br /&gt;Plato:Adio! Socrates. Send my regards.&lt;br /&gt;What  does the future hold?It is hard to say what to future holds. One should  be a profit to tell. My guess is that we are going to face with the  article question for a long time, at least for the near future.&lt;br /&gt;Looking  at brand new developing styles like SmartClient and AJAX, makes you  think that no new revolutionary progress have been made in the last  years.&lt;br /&gt;"…AJAX is not a new programming language, but a new way to use existing standards." (&lt;a href="http://www.w3schools.com/ajax/default.asp"&gt;http://www.w3schools.com/ajax/default.asp&lt;/a&gt;)&lt;br /&gt;"…Smart  client isn't a technology, and it isn't any specific architecture. It  is a style of application that combines the best of both  Desktop-Applications and Web-Applications." (&lt;a href="http://msdn.microsoft.com/smartclient/community/scfaq/default.aspx"&gt;http://msdn.microsoft.com/smartclient/community/scfaq/default.aspx&lt;/a&gt;)&lt;br /&gt;Some of the common use technologies are really very old:&lt;br /&gt;ActiveX in 1990 (&lt;a href="http://en.wikipedia.org/wiki/ActiveX"&gt;http://en.wikipedia.org/wiki/ActiveX&lt;/a&gt;) VB – 1991 (&lt;a href="http://www.startvbdotnet.com/dotnet/vb.aspx"&gt;http://www.startvbdotnet.com/dotnet/vb.aspx&lt;/a&gt;) MFC -1992 In 1994 the very earlier version of HTML was introduced (&lt;a href="http://www.w3.org/MarkUp/historical"&gt;http://www.w3.org/MarkUp/historical&lt;/a&gt;). JavaScript in 1995 (&lt;a href="http://www.oreillynet.com/pub/a/javascript/2001/04/06/js_history.html"&gt;http://www.oreillynet.com/pub/a/javascript/2001/04/06/js_history.html&lt;/a&gt;)  Flash - In 1996 Smart-Client vs. Rich-Internet-Application (RIA)"Rich  Internet applications (RIA) are web applications that have the features  and functionality of traditional desktop applications. RIAs typically  transfer the processing necessary for the user interface to the web  client but keep the bulk of the data (i.e. maintaining the state of the  program, the data etc) back on the application server. (&lt;a href="http://en.wikipedia.org/wiki/Rich_Internet_application"&gt;http://en.wikipedia.org/wiki/Rich_Internet_application&lt;/a&gt;)&lt;br /&gt;Rich  Internet Applications are already here. Google is one of the world  leaders in Rich-Internet-Application. Here are some of examples: Gmail,  Google Calendar and Google Docs and Spreadsheets.&lt;br /&gt;&lt;br /&gt;Rich Internet applications characteristics:&lt;br /&gt;Run  in a web browser Typically much more responsive than a standard web  applications Richer UI Has a look and feel of a desktop application  Smart-Client characteristics:&lt;br /&gt;Are delivered over the web Do not require installation Automatically update without user action Trends&lt;br /&gt;The  complexity of applications is increasing Connectivity and Network  awareness- Different application types to the same source of data.  Connect to the data from Mobile, Desktop application at the office adn  over the web when out of the office A2A – similar to B2B only with  application that can talk with each other by using standards like  Bluetooth for Mobile devices. Save data online - Google Bookmarks for  example and MS Messenger keep the user information like Favorits in the  web. This allows the user to see the stored data from different PCs.  Application recovery – return to previous state no matter what happened  to the last application run. SummaryChoosing the right technology must  be anchor to the business problem on hand.&lt;br /&gt;You would not develop a  diagram drawing application like MS-Visio as a Web-Application as you  would not choose a Desktop-Application for Amazon book store.&lt;br /&gt;The article describes some of the Cons and Pros of each technology. Knowing them is a good start for a decision making.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3855749445209325267-2259995107761205332?l=0rencs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://0rencs.blogspot.com/feeds/2259995107761205332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3855749445209325267&amp;postID=2259995107761205332' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/2259995107761205332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/2259995107761205332'/><link rel='alternate' type='text/html' href='http://0rencs.blogspot.com/2010/12/software-architecture-toolset-for.html' title='A software architecture toolset for choosing the right type of Client Application'/><author><name>Oren Cohen Shwartz</name><uri>http://www.blogger.com/profile/01764416806072976347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://bp2.blogger.com/_0cKmG4rtOYs/R2mJNgjpx3I/AAAAAAAAFIM/NImxqNlBgMA/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3855749445209325267.post-7788710630486595369</id><published>2008-08-05T07:51:00.003+03:00</published><updated>2008-08-05T07:54:34.716+03:00</updated><title type='text'>Principles (YAGANI, KISS, 80/20)</title><content type='html'>&lt;p&gt;The following are worth to mention principles.&lt;br /&gt;They are useful not only for Software management but also for life in general.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;YAGNI Principle- You Are Not Gonna Need It&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;The YAGNI principle is very simple to grasp. It make you postponed the decision about stuff that you think that you need TODAY to later on.&lt;br /&gt;It does not mean – be lazy!&lt;br /&gt;It does not mean – don’t plan.&lt;br /&gt;What it is mean is that you can take stuff into consideration NOW but you should postpone the implementation to later on.&lt;br /&gt;&lt;br /&gt;The YAGNI principle emphasis TIME and CHANGE&lt;br /&gt;- It helps you understand that things might changes during the time. It helps you avoid doing something that you won’t need eventually or when the time of implementation arrives you understand that you need something else.&lt;/p&gt;&lt;p&gt;- The principle save you time twice. First, you don’t spend it now on something that you might don’t need. Second, when you reach the time when you need it, you don’t spend time in rewriting and refactoring but write once and well.  &lt;br /&gt;&lt;br /&gt;&lt;u&gt;Challenge&lt;br /&gt;&lt;/u&gt;“If you don’t do something now, then it will take much longer to do it later on”. I disagree, first of all the statement is too deterministic, secondly, the YAGNI principle don’t implies not to plan or to think in advance. It is sure important to do it. What it states is that you don’t need to implement stuff now because you will need it later. Do plan/think/design/take into consideration; don’t implement it, yet!&lt;br /&gt;&lt;br /&gt;&lt;u&gt;More reading&lt;/u&gt;&lt;br /&gt;&lt;a title="http://c2.com/xp/YouArentGonnaNeedIt.html" href="http://c2.com/xp/YouArentGonnaNeedIt.html"&gt;http://c2.com/xp/YouArentGonnaNeedIt.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Wink&lt;br /&gt;&lt;/u&gt;If you are not going to start implementing YAGNI today, then you are already violating it by reading this far :-).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;KISS principle – Keep It Simple Stupid&lt;br /&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;The Kiss principle helps you avoid complicating problems. Overcomplicating problems blocks your mind from seeing the simple working solution.&lt;br /&gt;When we grow up, we tend to shed the ability of simplicity. A child looks at the world in a much simpler way. This is why we often dazzle from children questions or remarks about day to day stuff.&lt;br /&gt;&lt;br /&gt;Implement the KISS principle is really easy. Foremost, when you are challenge with a problem start by asking yourself why it is a problem anyway. This allows you to understand the problem, well. Later on you should break the problem into several pieces. This will help you identify where exactly the problem is. Maybe the problem consist several small problems. Smaller problem are easier to solve. When you have a solution always challenge yourself with the question – is it really the simplest way to do it?&lt;br /&gt;&lt;br /&gt;&lt;u&gt;More reading&lt;/u&gt;&lt;br /&gt;&lt;a title="http://people.apache.org/~fhanik/kiss.html" href="http://people.apache.org/~fhanik/kiss.html"&gt;http://people.apache.org/~fhanik/kiss.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Wink&lt;/u&gt;&lt;br /&gt;If you did not understand what KISS is, then I did not follow the principle well :-).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;The Principle of least effort&lt;br /&gt;&lt;/u&gt;&lt;/strong&gt;The least effort principle helps you do stuff simpler. It directs you to find the most effortless paths to solve problems. &lt;br /&gt;&lt;br /&gt;&lt;u&gt;More reading&lt;/u&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Principle_of_least_effort"&gt;http://en.wikipedia.org/wiki/Principle_of_least_effort&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;u&gt;Wink&lt;br /&gt;&lt;/u&gt;I didn’t write a lot about this principle because I have chosen one of the effortless paths to explain the principle :-).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;The Partew law of 80/20&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The principle helps you to focus about what is needed the most. It emphasis efficiency and stress out that time is a very precious commodity.&lt;br /&gt;&lt;br /&gt;The principle implies that 80% of your user will use only 20% of your Software. Therefore you should focus and give 80% of your effort for the specific 20% features. Given that you save time by not implementing something that the majority of users don’t need, you free your time to excel the very specific 20% and to create new other software. In other words, the 20% effort will give you 80% of your result.&lt;br /&gt;&lt;br /&gt;The Partew law of 80/20 is not easy to implement. It requires practice. Foremost, when you need to do something you need to think/imagine what will the less effort way to do it? How to do more with less? The challenge is, of course, to identify those 20% percent.&lt;br /&gt;&lt;br /&gt;The advantage of the Partew principle is that it reminds you to focus on the 20 percent that matters. It means that not only you should not work hard but smart and on the most important things.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;More reading&lt;br /&gt;&lt;/u&gt;&lt;a title="http://management.about.com/cs/generalmanagement/a/Pareto081202.htm" href="http://management.about.com/cs/generalmanagement/a/Pareto081202.htm"&gt;http://management.about.com/cs/generalmanagement/a/Pareto081202.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Wink&lt;/u&gt;&lt;br /&gt;Following the Partew law I could have write this explanation in 20% effort and still make you understand it :-).&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;strong&gt;&lt;u&gt;Principles correlation&lt;br /&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;YAGNI principle allows you to focus about what you currently need and by that blends very well with the Partew law of 80/20.&lt;/li&gt;&lt;li&gt;YAGNI principle is easier to implement if you practice the KISS principle, because if you think in a simple manner you don’t enter yourself to fiascos for stuff you won’t need eventually.&lt;/li&gt;&lt;li&gt;The KISS principle blends very well with Partew law because it let you focus on what is important. It saves you time and energy because you can do things faster and better.&lt;/li&gt;&lt;li&gt;The least effort principle blends well with KISS because it directs you to things simpler not only for your sake but also for the sake of the users. The principle itself is an implementation of the Partew law of 80/20 because it implies of doing only the very necessary stuff in order to achieve the needs.&lt;br /&gt; &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3855749445209325267-7788710630486595369?l=0rencs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://0rencs.blogspot.com/feeds/7788710630486595369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3855749445209325267&amp;postID=7788710630486595369' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/7788710630486595369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/7788710630486595369'/><link rel='alternate' type='text/html' href='http://0rencs.blogspot.com/2008/08/principles-yagani-kiss-8020.html' title='Principles (YAGANI, KISS, 80/20)'/><author><name>Oren Cohen Shwartz</name><uri>http://www.blogger.com/profile/01764416806072976347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://bp2.blogger.com/_0cKmG4rtOYs/R2mJNgjpx3I/AAAAAAAAFIM/NImxqNlBgMA/S220/me.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3855749445209325267.post-3349863367261904976</id><published>2008-06-19T14:12:00.004+03:00</published><updated>2008-07-09T21:53:49.151+03:00</updated><title type='text'>Multi-processes versus Multi-threads</title><content type='html'>Since the most impact is related to CPU and Memory usage the following questions should be ask before deciding Multi-processes or Multithreads:&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;What is the amount of data that it is to be shared between the different executing tasks?&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold"&gt;How frequently the separate tasks needs to converse with each other?&lt;/span&gt;&lt;/span&gt; &lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Notes:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Threads have almost no overhead in sharing data. It is a built in feature. processes however have a considerable overhead in regards to sharing data. &lt;/li&gt;&lt;li&gt;There are less context switches per threads than per processes. When a process accessing a resource (FileMapping) two context switches occurs from user mode to kernel mode . The additional context switch increases the execution time. &lt;/li&gt;&lt;li&gt;Kernel object that is used in Multi-processes constelation is ought to be Named. Named Kernel Object adds additional overhead (the OS use additional global handles tables that correlate between the handle table  of each process). &lt;/li&gt;&lt;li&gt;Sharing memory between processes is more complex to achive in term of development time (RAD).&lt;/li&gt;&lt;li&gt;Shared memory between processes produce less readable code.&lt;/li&gt;&lt;li&gt;Shared memory code between processes is harder to debug.&lt;/li&gt;&lt;li&gt;Since processes are isolated from each other by the OS, an error in one process cannot bring down another process. Multi-processes is more robust than multithreads.&lt;/li&gt;&lt;li&gt;In Multi-processes there is a chance that code will be duplication and additional utilization of the memory (RAM) and pagination (HD) will occurred. &lt;/li&gt;&lt;li&gt;Process may run in different user context and have different permissions.&lt;/li&gt;&lt;/ul&gt;&lt;span style="LINE-HEIGHT: 115%;font-size:11;" &gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3855749445209325267-3349863367261904976?l=0rencs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://0rencs.blogspot.com/feeds/3349863367261904976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3855749445209325267&amp;postID=3349863367261904976' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/3349863367261904976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/3349863367261904976'/><link rel='alternate' type='text/html' href='http://0rencs.blogspot.com/2008/06/multiprocess-versus-multithreaded.html' title='Multi-processes versus Multi-threads'/><author><name>Oren Cohen Shwartz</name><uri>http://www.blogger.com/profile/01764416806072976347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://bp2.blogger.com/_0cKmG4rtOYs/R2mJNgjpx3I/AAAAAAAAFIM/NImxqNlBgMA/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3855749445209325267.post-1569741205100528186</id><published>2008-06-19T01:10:00.003+03:00</published><updated>2008-07-09T21:59:48.431+03:00</updated><title type='text'>Code review: a chance to learn and to progress</title><content type='html'>When done it a professional way code review is a great opportunity to progress not only the code&lt;br /&gt;but the professionalism of the participants.&lt;br /&gt;When I saying in a professional way I mean that the attitude of the participants is in favor of the process.&lt;br /&gt;This opposed to:&lt;br /&gt;- "Here is my chance to show you how much better I am than you"&lt;br /&gt;- "Here he come again like he have something to offer"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;How to create the proper motivate:&lt;/span&gt;&lt;br /&gt;One should explain the purpose:&lt;br /&gt;- QA does not check your code only its functionality.&lt;br /&gt;- It is always a good thing to have additional two eyes.&lt;br /&gt;- It is a chance to learn something and to progress&lt;br /&gt;- It is not a stupid unnecessary step it is really important.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Nominee the right people for the job:&lt;/span&gt;&lt;br /&gt;- Great Software Engineering background.&lt;br /&gt;- People see them as professional.&lt;br /&gt;- A high people skills.&lt;br /&gt;- Holds a positive attitude to code review&lt;br /&gt;- Have patient and know how the guide&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;How to conduct the code review?&lt;/span&gt;&lt;br /&gt;First of all schedule a meeting with all the code reviewer and ask them how they think it&lt;br /&gt;should be done. Sharing the process with them increase the chances that they&lt;br /&gt;will be more cooperatively.&lt;br /&gt;&lt;br /&gt;The reviewer should be very positive about the process:&lt;br /&gt;- Not to criticize the person who wrote the code.&lt;br /&gt;- Focus on the code and not on the coder.&lt;br /&gt;- Do not use criticism intonation.&lt;br /&gt;- Suggest improvements in a question form: what do you think about doing it like this?&lt;br /&gt;- Remember that there are another ways of implementation.&lt;br /&gt;- Say some good stuff about thing that was done right. When you praise someone first, his ears are opened to here constructive advice.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;What to check?&lt;/span&gt;&lt;br /&gt;Here are some examples:&lt;br /&gt;&lt;br /&gt;- Does the code do what is supposed to do?&lt;br /&gt;- Allocations, release of memory.&lt;br /&gt;-Close KO (Kernel Objects) handle.&lt;br /&gt;- Reuse.&lt;br /&gt;- No duplicate code.&lt;br /&gt;- In condition using "==' and not "="&lt;br /&gt;- WaitForMultipile and not WaitForSingleObject&lt;br /&gt;- Input validation.&lt;br /&gt;- Not using INFINITE in wait methods&lt;br /&gt;- Use of code log (debug...Fatal)&lt;br /&gt;- Use of comments.&lt;br /&gt;- Effective code (Performance)&lt;br /&gt;- Too many or too few placeholders: Like string.Format("{0}{1}",m_a); this code will be compiled but crash in run time&lt;br /&gt;- Finally usage when using try catch and allocate resource that have to be released&lt;br /&gt;- Check code notation.&lt;br /&gt;- Readability.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3855749445209325267-1569741205100528186?l=0rencs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://0rencs.blogspot.com/feeds/1569741205100528186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3855749445209325267&amp;postID=1569741205100528186' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/1569741205100528186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/1569741205100528186'/><link rel='alternate' type='text/html' href='http://0rencs.blogspot.com/2008/06/code-review-chance-to-learn-and-to.html' title='Code review: a chance to learn and to progress'/><author><name>Oren Cohen Shwartz</name><uri>http://www.blogger.com/profile/01764416806072976347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://bp2.blogger.com/_0cKmG4rtOYs/R2mJNgjpx3I/AAAAAAAAFIM/NImxqNlBgMA/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3855749445209325267.post-2456460900602514399</id><published>2008-06-19T00:38:00.006+03:00</published><updated>2008-07-09T22:04:02.643+03:00</updated><title type='text'>Performance tests: why? when? where? and what?</title><content type='html'>&lt;div style="TEXT-ALIGN: left"&gt;&lt;br /&gt;&lt;b&gt;When to do the performance tuning?&lt;/b&gt;&lt;br /&gt;In short. Always!&lt;br /&gt;&lt;br /&gt;From the &lt;b&gt;PRD &lt;/b&gt;stage - Benchmark and performance requirements are must. It is the only way to validate the architecture/Module/Functionali&lt;wbr&gt;ty of the system against the users and the system goals.&lt;br /&gt;From&lt;strong&gt; &lt;/strong&gt;the &lt;strong&gt;SDLC&lt;/strong&gt; point (Software development Life Cycle): In the very beginning and in each stage of the iterations. Performance as other requirements should be validate in design time. It is the mean to change the design and choose the right technologies from day 1.&lt;br /&gt;From the &lt;b&gt;QA &lt;/b&gt;(Quality Assurance) point of view: In the very beginning and not only for TDD (Test Driven Design)&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;Methodology / Criterion &lt;/b&gt;&lt;br /&gt;The performance tests should be done in a methodological way. Meaning with the same actions/procedures and on the same machine configuration (SW and HW). This is important for regression detection scenarios. The tests should be done against well defined criterions. Have you ever heard your PM (Product Manager) saying: "It should run As-Fast-As-Possible). It is not a joke it is a-crying-shame situation. Without proper criterions one can not do performance tests. Ask your potential or existing customers. If you can't set performance criterion then start with exaggeration - it is better than nothing (although it is not the best practice).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Performance get bad over time&lt;/b&gt;&lt;br /&gt;Performance issues are rarely related to one function or code snippet.&lt;br /&gt;It is usually an accumulation of issues gathered overtime. This is the reason why the performance should be checked against valid criterions all the time.&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;The phrase that the strength of the chain depends on its weakest link, have much truth in performance issues.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The right Tools&lt;/b&gt;&lt;br /&gt;It is does not matter how and with which tool you  check the performance as long as it done right.For example if a developer check how long it takes to run a certain code flow it is better to use thread Time (::GetThreadTimes) rather than enddatetime - startdatetime. The reason for that is that it is the only way to calculate how long the execution took in CPU time, without IO and context switches. Using date time subtraction can yield different result in each run (methodic).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The right environment&lt;/b&gt;&lt;br /&gt; The performance should be checked with the  Hardware and Software environment (as exist in the field). This is a very important information that should be collected from the field. Machines with the exact environment should be bought and test against. For example:&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;HW (CPU, RAM, HD etc.)&lt;br /&gt;SW (OS type, anti virus, Firewall)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Code Coverage&lt;/b&gt;&lt;br /&gt;In order to make sure that the code performance is good you have to test all the code flows. This can be done only by  code coverage. There are good code coverage tools that you can use or to do it yourself. Be sure that some of the customers will run the most esoteric flow and run into problem. The lab is never a correspondent of the field.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;Load tests&lt;/b&gt;&lt;br /&gt;Benchmarking criterion should be define for Idle, Normal and Load cases.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;Datasheet&lt;/b&gt;&lt;br /&gt;Since your customer will ask for a datasheet is it a good practice to think about one from the very beginning. Customers want to know what is the performance hurt and latency you bring to their system. They do that because they run comparison tests with your competitors and because they are obligate to. You can not avoid from such information. It is not a bad thing ; it is good. For that reason you should be caring for performance. Since you have criterion and you are doing your best to meet with them and beyond you are in good shape.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;Iterations&lt;/b&gt;&lt;br /&gt;The performance should be check in each stage and iteration. The PM should bring all the frequent type of customer system configurations. System architect should validate the performance in the existing architecture and also against the future extension as the system evolves. Prototypes should that simulate the system should be created in the early stages. The developer should do it a part of their unit tests and the QA should do it for the specific part and the whole system.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Which of the system parts to handle?&lt;/b&gt;&lt;br /&gt;In short. All!&lt;br /&gt;Have you heard in the past someone says: "It is the GUI application and not the server so why bother." or&lt;br /&gt;"It is the Audit service - it is not in the critical path of execution"&lt;br /&gt;Those thought are wrong. Each part of the system between tires and within must be pass through a performance glasses.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Performance process&lt;/b&gt;&lt;br /&gt;The performance process includes iterations of testing and tuning. Code coverage, memory, CPU and IO profiling should bu conduct.&lt;br /&gt;&lt;br /&gt;Performance is an important factor. For some systems, customers consider it as one of the high measurements of criteria. Customer, therefore, can choose to buy a system on that basis along.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:+0;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3855749445209325267-2456460900602514399?l=0rencs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://0rencs.blogspot.com/feeds/2456460900602514399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3855749445209325267&amp;postID=2456460900602514399' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/2456460900602514399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/2456460900602514399'/><link rel='alternate' type='text/html' href='http://0rencs.blogspot.com/2008/06/performance-why-when-where-and-what.html' title='Performance tests: why? when? where? and what?'/><author><name>Oren Cohen Shwartz</name><uri>http://www.blogger.com/profile/01764416806072976347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://bp2.blogger.com/_0cKmG4rtOYs/R2mJNgjpx3I/AAAAAAAAFIM/NImxqNlBgMA/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3855749445209325267.post-8384262695589850147</id><published>2008-05-27T11:01:00.001+03:00</published><updated>2008-07-09T22:10:50.664+03:00</updated><title type='text'>Requirements – The RnD Manager Oxygen</title><content type='html'>&lt;p&gt;Good requirements are one the important building blocks of Software Product (probably every product).The question is what makes a requirement worthy for the title: “Good”  and why it is so important in the first place.From my point of view, good requirement comes from the field (e.g. customers), excellent requirement comes from several customers. Running a successful Software product is not an easy task (see my previous post about &lt;a href="http://0rencs.blogspot.com/2007/12/why-software-projects-tend-to-fail.html"&gt;Why Software Project Tends to Fail&lt;/a&gt;?).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The success formula is easy to define but not to implement:&lt;br /&gt;&lt;em&gt;(Gather, as much as possible, requirements from the customers) + (Design proper architecture, implement and test the product) = Happy/buying customers.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://bp3.blogger.com/_0cKmG4rtOYs/R7MH5XvtqKI/AAAAAAAAFtI/27zeLccpZXI/s1600-h/requirements.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5166481879732168866" style="CURSOR: hand" alt="" src="http://bp3.blogger.com/_0cKmG4rtOYs/R7MH5XvtqKI/AAAAAAAAFtI/27zeLccpZXI/s320/requirements.gif" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;There are many reasons why this basic sheer formula is not so easy to implement. In this post I will deal with some of the hurdles and what should be done to tackle them.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Gather requirements&lt;br /&gt;&lt;/strong&gt;The stage of requirement gathering is one of the critical paths in the process. If you have a lot of customers or potential customers then you are lucky. In some extreme cases the company do not, even, have an existence market for the Software. In all cases requirements existence is a must.&lt;br /&gt;What to do?&lt;br /&gt;- Try to deploy the Software to as much as many beta-sites (if it is not risk future sell). In this way you receive real industry feedback.&lt;br /&gt;- Make your customer a partner. Make them feel and think you are there for them.&lt;br /&gt;- Do depth competitors analysis (if exist and relevant). Try to figure out not only what are the advantages of their product and which features your Software is short of, but also what they are planning to do (type of BI: Business Intelligence).&lt;br /&gt;- Order or try to find market(s) analysis papers.&lt;br /&gt;- Do whatever it is requires – you have to have requirements!!!&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Requirements analysis&lt;br /&gt;&lt;/strong&gt;If you can gather the information above then you are partly done. Before you rest, you might face with another challenge to consume and analyze all the information.&lt;br /&gt;What to do?&lt;br /&gt;- In order to digest the requirements you can use Pareto Law of 80/20. Try to figure out what it is the most important stuff to do. How they fit together. Which effort (20%) will yield the 80% selling factors?. Another approach is to use the bucket sort algorithm. Try to identify repetitive-asked-requirements by putting each requirement in a bucket with its definition. If you end up with lots of filled buckets then continue and assign weight for each requested customer. This modus operandi fine tunes the priority of each bucket/requirement. At the end if you still have a lot of buckets with the same weight then you need to analyze the dependencies, resources on hand etc.&lt;br /&gt;- At the very end of the process turn back to some of the requirements feeder (e.g. customers) to make sure you understand everything correctly.&lt;br /&gt;- As seen the figure above the analysis and part of the gathering of the requirements are the job of the Business Architecture. In most companies this job title does not exist. Ignore the title ; the important thing is that one person spread his umbrella over the entire process. This character is a master in business/product management and has lots of knowledge in Marketing and in IT too.&lt;br /&gt;- This is the guy who coordinates between customers (field needs) and the IT department.&lt;br /&gt;- The Business Architecture have a very complex job. He need to analyze the requirements while taking into consideration the past, present and the future. In other words he need to know what exist right now, how it will combine with the features and how it reflects near and far, even imaginary, future. &lt;/p&gt;&lt;p&gt;&lt;a href="http://bp0.blogger.com/_0cKmG4rtOYs/R7MINnvtqLI/AAAAAAAAFtQ/XwlPVpEVaH4/s1600-h/requirements_bucket.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5166482227624519858" style="CURSOR: hand" alt="" src="http://bp0.blogger.com/_0cKmG4rtOYs/R7MINnvtqLI/AAAAAAAAFtQ/XwlPVpEVaH4/s320/requirements_bucket.gif" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Requirements documentation&lt;br /&gt;&lt;/strong&gt;It does not really matter what type of document format your company is used to write and maintain. PRD, MRD, SRS whatever! The only important thing is the existence of the document that cause the writer(s) to think about it all.&lt;br /&gt;What to do?&lt;br /&gt;-Foremost, understands that requirements documents deals with what the Software should do and, by all means, not how it will do it. It means that the requirement is described in UCD (User Centric Design) from the user point of view. For that matter, requirement can describe the functionalities in term of GUI it can also includes definition of user experience in terms of response time. It is the IT department domain to define how it will be implemented;therefore this kind of information should not exist in this type of documents. &lt;/p&gt;&lt;p&gt;The Business Architecture is responsible to steer the product manager stuff to write requirements documentation.&lt;br /&gt;- The format and content is changed between companies in some cases the R&amp;amp;D department receive general requirements characteristics and in others it get all the nitty gritty. The important thing is that after few iteration the all parties understand the requirements in the same way - Follow the KISS (Keep It Simple Stupid) principle. The document worth nothing if it not understandable to all parties.&lt;br /&gt;- Make sure to keep update the document along the way. One common mistake is not to control and treat requirements document as it is done with source control.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;System Requirements&lt;br /&gt;&lt;/strong&gt;This stage includes the implementation/integration of the Business Architecture and the new requirements with the Software architecture.&lt;br /&gt;What to do?&lt;br /&gt;- The IT Architecture receives the documentation by the Business Architecture. In some companies there is no job title like IT Architecture. In some companies the job is done by the CTO or and the R&amp;amp;D Manager. This IT Architecture is a master of Software architecting and designs, he also have a lot of knowledge in the company business and system analysis. This type of characteristics allows him to communicate well with the Business Architecture.&lt;br /&gt;- After the IT Architecture and the Business Architecture understand the current and future needs there is a better chance that not only the requirements on hand will be implemented as planed but also, and not less important, the Software architecture will keep support the future business.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://bp0.blogger.com/_0cKmG4rtOYs/R7MIdnvtqMI/AAAAAAAAFtY/PNRjiWx_zUY/s1600-h/business+and+IT+architectures.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5166482502502426818" style="CURSOR: hand" alt="" src="http://bp0.blogger.com/_0cKmG4rtOYs/R7MIdnvtqMI/AAAAAAAAFtY/PNRjiWx_zUY/s320/business+and+IT+architectures.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3855749445209325267-8384262695589850147?l=0rencs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://0rencs.blogspot.com/feeds/8384262695589850147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3855749445209325267&amp;postID=8384262695589850147' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/8384262695589850147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/8384262695589850147'/><link rel='alternate' type='text/html' href='http://0rencs.blogspot.com/2008/05/requirements-rnd-manager-oxygen.html' title='Requirements – The RnD Manager Oxygen'/><author><name>Oren Cohen Shwartz</name><uri>http://www.blogger.com/profile/01764416806072976347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://bp2.blogger.com/_0cKmG4rtOYs/R2mJNgjpx3I/AAAAAAAAFIM/NImxqNlBgMA/S220/me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_0cKmG4rtOYs/R7MH5XvtqKI/AAAAAAAAFtI/27zeLccpZXI/s72-c/requirements.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3855749445209325267.post-2561294254079465846</id><published>2008-05-13T08:55:00.071+03:00</published><updated>2008-05-13T10:03:50.431+03:00</updated><title type='text'>Keeping a Desktop Application Up-To-Date - design proposal</title><content type='html'>&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Why?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Make all the users around the world to use the latest up-to-date version of the application.&lt;br /&gt;&lt;br /&gt;Easier the support (All bug fixes and new features are deployed to the customer ).&lt;br /&gt;&lt;br /&gt;Phone-home: Learn what the customer does by detecting who download updates how often, who use the application and how.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;How?&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;Installshiled or equivalent package (Macrovision Notification Server:&lt;br /&gt;&lt;a href="http://www.services.installshield.com/"&gt;http://www.services.installshield.com/&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Click Once: for .Net 2.0 Applications (&lt;a href="http://en.wikipedia.org/wiki/ClickOnce"&gt;http://en.wikipedia.org/wiki/ClickOnce&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;In-house solution (homemade).&lt;br /&gt;&lt;br /&gt;In this post I concentrate on the In-House solution because I have found out that the other two are cumbersome and has significant cons. Foremost, I can say that there is no industry solution that it is perfect because only a Homemade solution is tailored to the company/project needs.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Web updater characteristics&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;1. Communicate with remote server to send and receive data like: Update management, Report a bug, Suggest a feature and Phone home (&lt;a href="http://en.wikipedia.org/wiki/Phone_home"&gt;http://en.wikipedia.org/wiki/Phone_home&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Update management includes the following: Check for update, Download updates (Silently / Actively) and Install update.&lt;br /&gt;&lt;br /&gt;2. Checking for update can be done implicitly on application startup and explicitly whenever the user wants. In case update is available a proper message should be displayed. Here are some characteristics of the message:&lt;br /&gt;&lt;br /&gt;*Message can be display as a pop up notification near the toolbar clock)&lt;br /&gt;*It is a good idea to send the entire message from the server side where it can be adjust to user culture.&lt;br /&gt;*The Message should contain information like: Main Application name, Current version, new version, link/button for download the updates etc.&lt;br /&gt;&lt;br /&gt;3. Update operation:&lt;br /&gt;&lt;br /&gt;The Main Application should be of course close before the update. It should be validate as closed too (e.g. name event)&lt;br /&gt;The client side web-updater should not run from the Main Application folder. The reason is that the a certain update procedure might also replace it. A good practice for that matter is that the Main Application copies the web-updater to a temp directory and run it from there.&lt;br /&gt;&lt;br /&gt;4. Some UML diagrams:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_0cKmG4rtOYs/SCk749K77vI/AAAAAAAAHKk/CkHFdCEjV-Q/s1600-h/web+update1.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5199753094455095026" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp1.blogger.com/_0cKmG4rtOYs/SCk749K77vI/AAAAAAAAHKk/CkHFdCEjV-Q/s200/web+update1.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://bp0.blogger.com/_0cKmG4rtOYs/SCk8BtK77wI/AAAAAAAAHKs/-r-D2BmDd9M/s1600-h/web+update2.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5199753244778950402" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp0.blogger.com/_0cKmG4rtOYs/SCk8BtK77wI/AAAAAAAAHKs/-r-D2BmDd9M/s200/web+update2.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_0cKmG4rtOYs/SCk8F9K77xI/AAAAAAAAHK0/p-wuNAOkfZo/s1600-h/web+update3.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5199753317793394450" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp1.blogger.com/_0cKmG4rtOYs/SCk8F9K77xI/AAAAAAAAHK0/p-wuNAOkfZo/s200/web+update3.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_0cKmG4rtOYs/SCk8J9K77yI/AAAAAAAAHK8/nUlGgyt3vw8/s1600-h/sequence.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5199753386512871202" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp1.blogger.com/_0cKmG4rtOYs/SCk8J9K77yI/AAAAAAAAHK8/nUlGgyt3vw8/s200/sequence.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3855749445209325267-2561294254079465846?l=0rencs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://0rencs.blogspot.com/feeds/2561294254079465846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3855749445209325267&amp;postID=2561294254079465846' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/2561294254079465846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/2561294254079465846'/><link rel='alternate' type='text/html' href='http://0rencs.blogspot.com/2008/05/keeping-desktop-application-up-to-date.html' title='Keeping a Desktop Application Up-To-Date - design proposal'/><author><name>Oren Cohen Shwartz</name><uri>http://www.blogger.com/profile/01764416806072976347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://bp2.blogger.com/_0cKmG4rtOYs/R2mJNgjpx3I/AAAAAAAAFIM/NImxqNlBgMA/S220/me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_0cKmG4rtOYs/SCk749K77vI/AAAAAAAAHKk/CkHFdCEjV-Q/s72-c/web+update1.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3855749445209325267.post-707984695972180984</id><published>2008-04-08T19:44:00.004+03:00</published><updated>2008-07-09T22:12:37.472+03:00</updated><title type='text'>CEO domain and expectations from the R&amp;D Manager</title><content type='html'>In this post I mention some of the main CEO position characteristics. I do that while reflecting to the R&amp;amp;D manager and his relationship with the CEO.&lt;br /&gt;Like in other relationships it is a good practice to put yourself in other person shoes. This practice make you understand the counterpart better and gain much better communication with him.&lt;br /&gt;&lt;br /&gt;The CEO and R&amp;amp;D manager relationship and communication is very important for both parties.&lt;br /&gt;&lt;br /&gt;From my point of view the CEO search in his managers, including the R&amp;amp;D manager, similar abilities and characteristics that allow him to better communicate with them and to assure his and the company success. Therefore the R&amp;amp;D manager should meet with this expectation, some of them on subconscious level. A good starting point is to understand what it means to be a CEO and what does his CEO is looking for in his key point managers.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Usually, people tend to expect from others the very same behavior as they expect from themselves.&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;A desire/passion/hunger in the eyes&lt;br /&gt;&lt;/strong&gt;The CEO as the ship captain expects, from his R&amp;amp;D manager, no less than a passion to meet with the company goals. No great captain will ever succeed to accomplish the sail by himself. There is, simply, to many things to operate. The R&amp;amp;D manager is one of the important agents to delegate the CEO vision to each and every R&amp;amp;D member.&lt;br /&gt;Steve Milovich, chief people officer for Walker Digital West: “Passion is putting your mission in your heart not on your wall. It’s moving it off the sheet of paper into your inside.”&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Constant running&lt;br /&gt;&lt;/strong&gt;The CEO position is not a 100 meter running course. It is a marathon.&lt;br /&gt;The CEO never rest on one's laurels. He faces constant hurdles and he needs key holder employees to run with him for long period of time. Among others the R&amp;amp;D manager manages the entire products development and therefore should be committed to long period roadmaps and deliveries.&lt;br /&gt;The Greek tycoon, Aristotle Onassis said about the CEO position: “…You’re just guaranteed the ability to afford good running shoes&lt;br /&gt;for the rest of your life…”&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Trust&lt;br /&gt;&lt;/strong&gt;The CEO have to trust the R&amp;amp;D manager. He is the person who delivers or not. He is the one who is committed to roadmaps and a key partner of the strategic and technical architecture. The CEO takes risks and risks are easier to take when you have copartners.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;A role model – on crisis&lt;/strong&gt;&lt;br /&gt;The CEO has to act as a role model. The standards of which the CEO operates upon needs to be observed by his managers and beyond. The CEO is in the spotlight all time but one of the real tests is in crisis time. As for himself the CEO expect from his R&amp;amp;D manager to make an example. For an instance, If R&amp;amp;D members stay overtime due to a crisis the R&amp;amp;D manager should stay with them.&lt;br /&gt;You should show your concern and compassion. You should boost you people moral, comfort the wives and show your gratitude.&lt;br /&gt;The CEO usually cannot fix the problem directly and most likely doesn’t even have the technical knowledge to know what needs to be done. He trusts his R&amp;amp;D manager to orchestrate the whole thing. That includes taking hard decisions and work through the crisis. The R&amp;amp;D manager has to be in front when things get dirty.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;A role model – day to day&lt;br /&gt;&lt;/strong&gt;As a manager you are being looked at. You must not, by all means, caught as an arrogant. You need to look at your people eyes. You need them to know that their opinion counts. Don’t patronize do not embarrass others. When you say bad thing about others people will suspect, and they are right, that you do the same against them when they are not in the room.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;10,000 feet high perspective&lt;/strong&gt;&lt;br /&gt;The CEO can’t be involved with the details. He, simply, can’t grasp all the information. In some cases the R&amp;amp;D manager can‎‘t have this luxury either. What the R&amp;amp;D manager is expected to do is to constantly improve processes. For that matter the R&amp;amp;D manager have to have high level perspective and the ability to see beyond the day to day issues for the sake of the project(s).&lt;br /&gt;For example when a crisis is over usually everyone continue with their mainstream tasks but it is the R&amp;amp;D manager job to do the follow up, assess the damages and to draw conclusions. In general, to make sure you investigate the problem and learn the lessons for the future.&lt;br /&gt;In term of communication the CEO expect from the R&amp;amp;D manger to converse with him in high level and only when he wants details he will ask for them. The CEO is required to generate clear and not complicated picture to his chairman or and to the board of directors.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3855749445209325267-707984695972180984?l=0rencs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://0rencs.blogspot.com/feeds/707984695972180984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3855749445209325267&amp;postID=707984695972180984' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/707984695972180984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/707984695972180984'/><link rel='alternate' type='text/html' href='http://0rencs.blogspot.com/2008/04/ceo-domain-and-expectations-from-r.html' title='CEO domain and expectations from the R&amp;D Manager'/><author><name>Oren Cohen Shwartz</name><uri>http://www.blogger.com/profile/01764416806072976347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://bp2.blogger.com/_0cKmG4rtOYs/R2mJNgjpx3I/AAAAAAAAFIM/NImxqNlBgMA/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3855749445209325267.post-8932330794692643667</id><published>2008-03-28T00:14:00.003+02:00</published><updated>2008-03-28T09:09:50.539+03:00</updated><title type='text'>QoS and LoS</title><content type='html'>&lt;p&gt;QoS (Quality of Service ) and LoS (Level of Service) refers to provisioning of resource utilization mechanisms.&lt;br /&gt;The terms are used by various type of fields such as Road traffic and Hotel accommodation.&lt;br /&gt;In this post I, naturally, concentrate on the Software Engineering field and in particular to Data Flow across Networks.&lt;br /&gt;&lt;br /&gt;Foremost, QoS and LoS are not related to quality assurance in the pure sense of the term. High QoS is not necessarily correlated to high performance.&lt;br /&gt;The QoS is build on mechanisms that takes, in advance, into consideration that the quality will be varied along the time.&lt;br /&gt;&lt;br /&gt;For Network data flow the LoS is important because usually the Network bandwidth is limited and insufficient.&lt;br /&gt;In QoS the best quality achieved at a given time, must take two main conjunction factors into consideration:&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Human Factor:&lt;/strong&gt; Assure that the supplied services, supplied to the user, are the best at the given time.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Technical Factor:&lt;/strong&gt; Assure that the resources utilization like CPU, Memory and Network are within the configured, low and high, capacity (resource reservation)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The QoS is achieved by provisioning the resources utilization over time. For example: An RPC Server that stream video to cellular device should support QoS mechanism that it is guaranteed by encoding the rendered clip in different level of bitrates and FPS. In this way the clip will be continue to rendered in the device even when the cellular Network is loaded or interrupted.&lt;br /&gt;The well known cons of QoS &amp;amp; LoS mechanisms of Network Data Flow are:&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Data looses&lt;/li&gt;&lt;li&gt;Data quality degradation&lt;/li&gt;&lt;li&gt;Delays and Gaps&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3855749445209325267-8932330794692643667?l=0rencs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://0rencs.blogspot.com/feeds/8932330794692643667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3855749445209325267&amp;postID=8932330794692643667' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/8932330794692643667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/8932330794692643667'/><link rel='alternate' type='text/html' href='http://0rencs.blogspot.com/2008/03/qos-and-los.html' title='QoS and LoS'/><author><name>Oren Cohen Shwartz</name><uri>http://www.blogger.com/profile/01764416806072976347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://bp2.blogger.com/_0cKmG4rtOYs/R2mJNgjpx3I/AAAAAAAAFIM/NImxqNlBgMA/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3855749445209325267.post-8545440931659470945</id><published>2008-03-18T11:49:00.012+02:00</published><updated>2009-01-13T13:24:35.197+02:00</updated><title type='text'>Web 2.0 and 3.0 a new way to do business</title><content type='html'>&lt;a href="http://bp3.blogger.com/_0cKmG4rtOYs/R9-QQmNEBKI/AAAAAAAAFy0/KG4Ef-SHwyg/s1600-h/web20map.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5179016711307003042" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp3.blogger.com/_0cKmG4rtOYs/R9-QQmNEBKI/AAAAAAAAFy0/KG4Ef-SHwyg/s200/web20map.png" border="0" /&gt;&lt;/a&gt; web 2.0 introduce revolution in term of new emerged business that embraces new technologists to support it.&lt;br /&gt;The main change is the users participant in this business. Users are active and not passive.&lt;br /&gt;The network is the platform. On this platform the business rules are different. Users are the engine.&lt;br /&gt;&lt;br /&gt;The business is how to attract users to enter and to contribute. Fascinating example is Facebook and YouTube.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;“…the philosophy of mutually maximizing collective intelligence and added value for each participant by formalized and dynamic information sharing and creation” &lt;/em&gt;(Overview of business models for Web 2.0 communities, Högg, R. Meckel)&lt;br /&gt;&lt;br /&gt;Web 2.0 applications address the following:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Harnessed Desktop application capabilities&lt;br /&gt;&lt;/strong&gt;Brings Desktop applications capabilities to the web, both in usability and graphically.&lt;br /&gt;Rich Internet Application (RIA) is available by technology like Ajax that enables web controls to act as desktop one with more&lt;br /&gt;data refresh capabilities, drag and drop etc.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Connectivity with services&lt;br /&gt;&lt;/strong&gt;Utilize 3rd party services to leverage the web application capabilities and to allow RAD (Rapid Application Development).&lt;br /&gt;By using web services, web2.0 application can expose themselves and connect to other services.&lt;br /&gt;Buzz words and Examples: SOA, Ebay and Amazon use of PayPal&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Attract the user to participates&lt;br /&gt;&lt;/strong&gt;The web as opposed to desktop application is far more reachable by users. This basic fact introduce new business potential that is based on commercials.&lt;br /&gt;The web2.0 introduce the social web or social networks. The user is a participant. The web2.0 application is based on users that are willing to contribute: blogs and wiki are good example. I guess it fulfill the needs to leave something that we have created in the written as type of legacy and influence (is this is the reason why I write this blog??).&lt;br /&gt;Web 2.0 application leverages the users knowledge into global sharing information. The web site is enriched by the users(community) and not mainly by the owner (company that create it) Users communicate with users rather than with the application publishers &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt; Move "page functionality" to client site as much as possible. Implements via Javascript/CSS2.) No-Tables html layout3.) No page refresh for content updates (Ajax actually)4.) Search engenies friendly URLs &amp;amp; entire html code&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;u&gt;Examples:&lt;br /&gt;&lt;/u&gt;YouTube (social video network)&lt;br /&gt;Picasa web and Flickr(social photos network)&lt;br /&gt;del.icio.us( social bookmarking network)&lt;br /&gt;Wikipedia&lt;br /&gt;Blogger&lt;br /&gt;Feedback (Social friends and groups network)&lt;br /&gt;RSS&lt;br /&gt;Mash-up&lt;br /&gt;GMail&lt;br /&gt;NetVibes (services)&lt;br /&gt;Yahoo&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;Web 3.0&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;The main concepts of web 3.0 are:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Platform and device independent (can run on wide range of devices)&lt;/li&gt;&lt;li&gt;Application are pieces together (advance mash-up).&lt;/li&gt;&lt;li&gt;Aplication are relatively small in size&lt;/li&gt;&lt;li&gt;The data in the cloud/network&lt;/li&gt;&lt;li&gt;Very customizable&lt;/li&gt;&lt;li&gt;Distributed by social email, social network. you do not buy in the store. you download it, you send it to a friend etc.&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Semantic_Web"&gt;Semantic web&lt;/a&gt; – adding AI (Artificial Intelligent) to the web. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3855749445209325267-8545440931659470945?l=0rencs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://0rencs.blogspot.com/feeds/8545440931659470945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3855749445209325267&amp;postID=8545440931659470945' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/8545440931659470945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/8545440931659470945'/><link rel='alternate' type='text/html' href='http://0rencs.blogspot.com/2008/03/web-20-and-30-new-way-to-do-business.html' title='Web 2.0 and 3.0 a new way to do business'/><author><name>Oren Cohen Shwartz</name><uri>http://www.blogger.com/profile/01764416806072976347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://bp2.blogger.com/_0cKmG4rtOYs/R2mJNgjpx3I/AAAAAAAAFIM/NImxqNlBgMA/S220/me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_0cKmG4rtOYs/R9-QQmNEBKI/AAAAAAAAFy0/KG4Ef-SHwyg/s72-c/web20map.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3855749445209325267.post-7826326365470419667</id><published>2008-02-27T11:39:00.020+02:00</published><updated>2008-06-13T01:17:26.430+03:00</updated><title type='text'>Good reading material</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Software Engineering &lt;/strong&gt;&lt;/p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;Debugging Applications by John Robbins&lt;/li&gt;&lt;li&gt;Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, ichard Helm , Ralph Johnson and John M. Vlissides&lt;/li&gt;&lt;li&gt;Effective C++ by Scott MeyersThe C++ Programming Language by Bjarne Stroustrup&lt;/li&gt;&lt;li&gt;Introduction to Algorithms by Thomas H. Cormen&lt;/li&gt;&lt;li&gt;Operating System Concepts by Abraham Silberschatz&lt;/li&gt;&lt;li&gt;The Pragmatic Programmer: From Journeyman to Master by Andrew HuntWriting&lt;/li&gt;&lt;li&gt; Secure Code by Michael Howard&lt;/li&gt;&lt;li&gt;Art of Computer Programming by Donald E. Knuth &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Software Architecture&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The Art of Software Architecture: Design Methods and Techniques by Albin, Stephen&lt;/li&gt;&lt;li&gt;Software Architecture in Practice by Bass, L., P. Clements, and R. Kazman&lt;/li&gt;&lt;li&gt;Designing Hard Software: The Essential Tasks by Bennett Douglas&lt;/li&gt;&lt;li&gt;Evaluating Software Architectures: Methods and Case Studies by Clements Paul&lt;/li&gt;&lt;li&gt;Documenting Software Architectures: Views and Beyond by Clements Paul&lt;br /&gt;Patterns of Enterprise Application Architecture by Fowler Martin&lt;/li&gt;&lt;li&gt;Large-Scale Software Architecture : A Practical Guide using UML by Garland Jeff and Richard Anthony&lt;/li&gt;&lt;li&gt;Essential Software Architecture by Gorton Ian&lt;/li&gt;&lt;li&gt;Applied Software Architecture by Hofmeister Christine&lt;/li&gt;&lt;li&gt;Software Systems Architecture : Working With Stakeholders Using Viewpoints and Perspectives by RozanskiNick &lt;/li&gt;&lt;li&gt;Code Complete by Steve McConnell&lt;/li&gt;&lt;li&gt;Computer Architecture: A Quantitative Approach by John L. Hennessy&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Project Management&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The Little Black Book of Project Management by Michael C. Thomsett&lt;/li&gt;&lt;li&gt;Rapid Development, Steve McConnell's &lt;/li&gt;&lt;li&gt;The Art of Project Management - Theory in Practice by Scott Berkun &lt;/li&gt;&lt;li&gt;Project Management ToolBox: Tools and Techniques for the Practicing Project Manager by Dragan Z. Milosevic&lt;/li&gt;&lt;li&gt;Agile and Iterative Development: A Manager's Guide by Craig Larman&lt;/li&gt;&lt;li&gt;Agile Software Development Quality Assurance by Ioannis G. Stamelos and Pagagiotis Sfetsos&lt;/li&gt;&lt;li&gt;Productive Objects: An Applied Software Project Management Framework by Robert J. Muller&lt;/li&gt;&lt;li&gt;Software Project Management: A Unified Framework by Walker Royce &lt;/li&gt;&lt;li&gt;A Guide to the Project Management Body of Knowledge by Project Management Institute&lt;/li&gt;&lt;li&gt;Applied Software Project Management by Andrew Stellman &lt;/li&gt;&lt;li&gt;Managing Software Deliverables: A Software Development Management Methodology by John Rittinghouse&lt;/li&gt;&lt;li&gt;Design for Trustworthy Software: Tools, Techniques, and Methodology of Developing Robust Software by Bijay K. Jayaswal&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;strong&gt;Risk Management&lt;/strong&gt;&lt;/p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;The Essentials of Risk Management by Michel Crouhy , Dan Galai and Robert Mark&lt;/li&gt;&lt;li&gt;The Fundamentals of Risk Measurement by Christopher Marrison &lt;/li&gt;&lt;li&gt;Risk Management in Software Development Projects by John McManus&lt;/li&gt;&lt;li&gt;Quantitative Risk Management: Concepts, Techniques, and Tools by Alexander J. McNeil ,Rudiger Frey and Paul Embrechts&lt;/li&gt;&lt;li&gt;Applied Software Risk Management by C. Ravindranath Pandian&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Cost Management&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Cost Management: Measuring, Monitoring, and Motivating Performance by Leslie G. Eldenburg and Susan K. Wolcott&lt;/li&gt;&lt;li&gt;Software Cost Estimation with Cocomo II by Barry W. Boehm&lt;/li&gt;&lt;li&gt;Estimating Software Costs by Capers Jones &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Product Management&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The Product Manager's Handbook by Linda Gorchels &lt;/li&gt;&lt;li&gt;Expert Product Management: Advanced Techniques, Tips and Strategies for Product Management &amp;amp; Product Marketing by Brian Lawley&lt;/li&gt;&lt;li&gt;Managing Software Development from Idea to Product to Marketing to Sales by Dan Cond&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Building a Successful Software Business&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Secrets of Software Success: Management Insights from 100 Software Firms Around the World by Cyriac R. Roeding&lt;/li&gt;&lt;li&gt;Software Measurement: Establish - Extract - Evaluate - Execute by Christof Ebert and Reiner Dumke &lt;/li&gt;&lt;li&gt;My Start-Up Life: What a (Very) Young CEO Learned on His Journey Through Silicon Valley by Ben Casnocha&lt;/li&gt;&lt;li&gt;The Pharmaceutical Management Team: The Roles, Responsibilities, and Leadership Strategies of CEOs, CTOs, Marketing Executives, and HR Leaders by Aspatore Books Staff&lt;/li&gt;&lt;li&gt;Working with the Board of Directors: Leading CEOs on Developing a Shared Vision, Establishing Expectations, and Leading Board Meetings by Aspatore Books Staff&lt;/li&gt;&lt;li&gt;Software That Sells : A Practical Guide to Developing and Marketing Your Software Project by Edward Hasted&lt;/li&gt;&lt;li&gt;Discovering Real Business Requirements for Software Project Success by Robin F. Goldsmith &lt;/li&gt;&lt;li&gt;Leading Chief Technology Officers: CTOs from GE, Novell... by Aspatore Books Staff&lt;/li&gt;&lt;li&gt;Creating a Strategic Technology Plan for Your Company: Leading CTOs and CIOs on Budgeting, Analyzing Financial Goals, and Developing a Companywide Vision by Aspatore Books Staff&lt;/li&gt;&lt;li&gt;Building a Successful Software Business: Top CEOs on Software Product Management, Growth Strategies, Sales, &amp;amp; More by Aspatore Books Staff&lt;/li&gt;&lt;li&gt;Best Practies for Executive Search Firms: Leading Executives on Developing Benchmarks, Evaluating Potential candidates, and Helping Clients Suceed by Aspatore Books Staff&lt;/li&gt;&lt;li&gt;The Business of Software: What Every Manager, Programmer, and Entrepreneur Must Know to Thrive and Survive in Good Times and Bad by Michael A. Cusumano &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Usability&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Usability Engineering by Jakob Nielsen &lt;/li&gt;&lt;li&gt;The Design of Everyday Things by Donald A. Norman&lt;/li&gt;&lt;li&gt;Don't Make Me Think: A Common Sense Approach to Web Usability by Steve Krug&lt;/li&gt;&lt;li&gt;Built for Use: Driving Profitability Through the User Experience by Karen Donoghue and Michael D Schrage &lt;/li&gt;&lt;li&gt;The Essential Guide to User Interface Design by Wilbert O. Galitz&lt;/li&gt;&lt;li&gt;Usability Engineering by Jakob Nielsen&lt;/li&gt;&lt;li&gt;Human-Centered Software Engineering - Integrating Usability in the Software Development Lifecycle by Ahmed Seffah, Jan Gulliksen and Michel C. Desmarais&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Localization&lt;/strong&gt;&lt;/p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;A Practical Guide to Localization by Bert Esselink &lt;/li&gt;&lt;li&gt;Developing International Software by&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Internationalization and Localization Using Microsoft .NET by Nick Symmonds        &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Human Resources Management&lt;/strong&gt;&lt;/p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;Fundamentals of Human Resource Management by David A. DeCenzo and Stephen P. Robbins &lt;/li&gt;&lt;li&gt;Human Resource Skills for the Project Manager: The Human Aspects of Project Management by Vijay K. Verma &lt;/li&gt;&lt;li&gt;Human Resource Management in Construction Projects: Strategic and Operational Approaches by Marti Loosemore&lt;/li&gt;&lt;li&gt;Next Generation Management Development by Robert D. Cecil and William J. Rothwell &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;System Architecture&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The Engineering Design of Systems: Models and Methods by Buede Dennis&lt;/li&gt;&lt;li&gt;The Art of Systems Architecting by Maier Mark W. and Eberhardt Rechtin&lt;/li&gt;&lt;li&gt;Systems Architecting: Creating and Building Complex Systems by Rechtin E&lt;/li&gt;&lt;li&gt;Systems Architecting of Organizations: Why Eagles Can't Swim by Rechtin Eberhardt&lt;/li&gt;&lt;li&gt;Product Design and Development by Ulrich, Karl and Stephen Eppinger&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Windows Internal&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;CLR Via C# by Jeffery Richter&lt;/li&gt;&lt;li&gt;Advance Windows by Jeffery Richter&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Quality Assurance&lt;/strong&gt;&lt;/p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;Customer Oriented Software Quality Assurance by Frank P. Ginac &lt;/li&gt;&lt;li&gt;Software Quality Assurance: Principles And Practice by Nina S. Godbole&lt;/li&gt;&lt;li&gt;Software Quality Assurance: From Theory to Implementation by Daniel Galin &lt;/li&gt;&lt;li&gt;Testing and Quality Assurance for Component-Based Software by Jerry Zeyu Gao&lt;/li&gt;&lt;li&gt;Software Quality and Software Testing in Internet Times by Dirk Meyerhoff&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3855749445209325267-7826326365470419667?l=0rencs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://0rencs.blogspot.com/feeds/7826326365470419667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3855749445209325267&amp;postID=7826326365470419667' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/7826326365470419667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/7826326365470419667'/><link rel='alternate' type='text/html' href='http://0rencs.blogspot.com/2008/02/good-reading-material.html' title='Good reading material'/><author><name>Oren Cohen Shwartz</name><uri>http://www.blogger.com/profile/01764416806072976347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://bp2.blogger.com/_0cKmG4rtOYs/R2mJNgjpx3I/AAAAAAAAFIM/NImxqNlBgMA/S220/me.jpg'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3855749445209325267.post-3465358978030189506</id><published>2008-02-22T23:30:00.010+02:00</published><updated>2008-05-21T12:02:04.614+03:00</updated><title type='text'>Firing an employee</title><content type='html'>&lt;a href="http://bp3.blogger.com/_0cKmG4rtOYs/R79CEXvtqNI/AAAAAAAAFt4/rqcfp5oQH5E/s1600-h/exit.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5169923540105668818" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp3.blogger.com/_0cKmG4rtOYs/R79CEXvtqNI/AAAAAAAAFt4/rqcfp5oQH5E/s200/exit.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;One of the unpleasant part of holding a managing position is that occasionally it is requires to dismiss an employee.&lt;br /&gt;What makes the decision hard is that people are getting hurt from it. By saying people I mean the fired employee, of course, the surrounding colleges and the manager himself.&lt;br /&gt;Firing an employee is not the same for all cases. Firing an employee that harm the company directly by specific actions like stealing and not showing to the office is easier than firing an employee that try hard but lack of capabilities.&lt;br /&gt;In this post I am sharing from my unpleasant events of firing employees and give tips of how it should done in my point of view.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Firing buildup&lt;/strong&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;Let the employee, as much as possible, know that you are not satisfied from his performance. Everybody should receive the opportunity to improve. Ask him to improve and build a specific improvement tasks over a specific period of time where he will need to display positive changes. As a manager you have to talk with your worker about your expectations from them. In most cases people like to succeed in their job and are willing to improve.&lt;br /&gt;The improvement plan memo should include:&lt;/p&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Problem description.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Corrective actions to eliminate the problem.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The time frame in which this is to be accomplished.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Make sure to address the subject in a positive way. You want the employee to change, meaning you have to make him participate in this process and to be committed to it. Do not criticise and rest. Let him to know why you invite him for this talk, tell him what you want him to improve and embed his positive behaviours within the conversation. In most cases people tend to close their ears when they start to hear criticism. Most of them do not realize that the manager is trying to change their behaviour and that he is even bother because he like the employee to stay in the company and do better. No manager wants to fire people for the sake of firing only.&lt;br /&gt;The improvement plan should be a companion with specific deadline on which the manger will evaluate the progress of the employee. The product of this meeting with the employee must be an Email that define the plan. Personally I prefer to ask the employee to write it. In this way I am sure that he understand what he need to do.&lt;br /&gt;Update you manager about the plan and the conversation.&lt;br /&gt;This procedure will be useful in the future where and if you will decide to fire the employee. The employee know that you are not satisfied with his job and your manager are informed. In this way the firing will not be out of the bloom and it will be more easily for the employee to understand it.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Timing&lt;/strong&gt;&lt;br /&gt;When to notify to the employee? The best time will be at the beginning of the week after lunch and closer to the end of the day. Firing notice is a very unpleasant moment. You should be sensitive. Doing it closer to the end of the day allows the employee to go home right after the notice. Some people take it very personally and cry. Given that fact they might want to finish the day and go home to their families. Some managers prefer not to notice at the end of the week because it will ruin the person weekend with his love ones, other manager think just the opposite, that firing before the weekend give the employee the time to relax and think about the all thing.&lt;br /&gt;The most important thing about timing is not to hesitate to fire once it has been decided. The worst thing is that the employee that is about to get fired heard about it indirectly. You have to give the fired person at least the courtesy of letting him to know first.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Location&lt;/strong&gt;&lt;br /&gt;By all means not in the employee room. A conference or the manager room is a good choice.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;The notice itself (Exit interview)&lt;/strong&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;Before the notice itself you got to make sure you are familiar with the company policy about firring people. Be very practical. Do not start with small talk. Say that you have some unpleasant news to deliver. Do not put the decision on someone else. Take the responsibility on you and only you. Start with telling the employee that sadly the company will stop hiring him. Do not apologize do not make excuses. Make sure the employee understand that the decision is final. Let the employee ask you questions but do not be drawn into an argument. Be very corrective in your answers. Prepare to be asked about salary and compensations money. At the end of the conversation suggest help in finding new job. Let him know that you are still there for him for any other questions. In some companies the employee is contract to stay for one month after the notice. Let the fired employee to know what you expect from him. In my point of view, in most cases you can dismiss the employee right away. I prefer to let the employee to go home but save the right to call him if needed within the notice period.&lt;br /&gt;&lt;br /&gt;Make sure you document the notice meeting itself.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Tell the unfortunate news to others&lt;/strong&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;Some manager (depends on company culture) prefer to avoid the rumors about the firing and tell everyone about it instantly. Some do it in an Email, some call the group and announce it. Personally I think that it is a good practice to share the office about it because everyone will know about it sooner or later. I also think that the manager should consult with the fired employee about how to do it. In my experience some employees like to keep it quietly until the date of the termination arrives. Some ask to tell the others by themselves. either way you need to make sure not to drag it too long or too quietly because you might create a situation where an employee just vanished like in Russian KGB. Let the others know why and give them a chance to express their concerns.&lt;br /&gt;Lastly, make sure not to spread rumors about the fired employee and let everyone to know that you appreciate what he or she done for the team/department and the company. Say kind words but do not praise.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Reference and recommendations&lt;/strong&gt;&lt;br /&gt;In some cases where the employee was fired due to bad performance it is a little bit harder to give recommendations. As a manager you should want to keep taking care of the employee but you should also avoid lying. Tell the employee that you are willing to write a recommendation paper or to talk with an employer but you are not going to make excuses. The best you can promise is not to supply actively negative information but if you come to point where an employer ask about performance you should tell him the truth. I prefer to ask the employee how he think the reasons can be soften. As a manager you should know that en employer can be angry with you if he was misjudge because of you and you probably don't want to make people in the industry angry with you because of an employee that did not meet with you expectations.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Watch out&lt;/strong&gt;&lt;br /&gt;Some manager are so reluctant from firing someone that they arrive unprepared to the event. Firing people is harsh but it is part of the manager job. You should try to foresee the response you get from firing someone. Although it is very hard to difficult to predict and in time you might learn but avoiding from surprises is always the better practice.&lt;br /&gt;Few terminated employees will agree that their performance hasn't met company standards; some will become angry and a few will become belligerent.Be sure you have documented all the alerts you gave to the employee. The documentation should include dates of warnings and description of the degrading performance over a specified time. It should also include the assistance you try to give to the employee to improve his ways. Send those memos to your manager and of course to the employee. Make sure you write a dated paper of termination. Give it to the employee and sign him if necessary.&lt;br /&gt;How you handle a firing might have a tremendous impact on how the employee feels about himself, you, and your company.Moreover a poorly handled firing will have a negative impact on morale throughout your entire organization. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Last but not least&lt;/strong&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;While firing should definitely be a last-resort measure it is sometimes necessary to do it as soon as possible. Keeping bad a performer have a negative impact on the moral of others. Firing the person who harms the group is something the group expect from there manager.&lt;br /&gt;Your best interest is to end the contract smoothly. You don't want an employee that spread false rumors out side. Fired person should receive all of he is entitled of by law and sometimes even more. For that matter on the notice stage suggest that maybe the problem was not with the employee skills but with his match to the position.&lt;br /&gt;Firing someone should be a process unless the company is bankruptcy. Through all the process you should be firm but human. Most of the people I have decided to fire till now stay in contact with me. One of them invite me later to there wedding , other to her recital with one of them I talk almost every week. This mean that even when you come to the point that you are firing someone you can still do it humanely. Value the employee. Place yourself in the employee’s position. Be respectful and tactful. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3855749445209325267-3465358978030189506?l=0rencs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://0rencs.blogspot.com/feeds/3465358978030189506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3855749445209325267&amp;postID=3465358978030189506' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/3465358978030189506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/3465358978030189506'/><link rel='alternate' type='text/html' href='http://0rencs.blogspot.com/2008/02/firing-employee.html' title='Firing an employee'/><author><name>Oren Cohen Shwartz</name><uri>http://www.blogger.com/profile/01764416806072976347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://bp2.blogger.com/_0cKmG4rtOYs/R2mJNgjpx3I/AAAAAAAAFIM/NImxqNlBgMA/S220/me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_0cKmG4rtOYs/R79CEXvtqNI/AAAAAAAAFt4/rqcfp5oQH5E/s72-c/exit.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3855749445209325267.post-5894318997589760123</id><published>2008-02-12T00:00:00.000+02:00</published><updated>2008-02-12T21:32:42.944+02:00</updated><title type='text'>The Art of Time Estimation</title><content type='html'>&lt;a href="http://bp0.blogger.com/_0cKmG4rtOYs/R7H0SHvtqJI/AAAAAAAAFtA/oVz8GmxtEuE/s1600-h/timees.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5166178839724664978" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp0.blogger.com/_0cKmG4rtOYs/R7H0SHvtqJI/AAAAAAAAFtA/oVz8GmxtEuE/s200/timees.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://bp0.blogger.com/_0cKmG4rtOYs/R7DIWXvtqII/AAAAAAAAFs4/hlhVdwApAfc/s1600-h/timees.bmp"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Time estimation is considered as a frustrated task. Personally, I tend to disagree. Time estimation is a very important task, one that the R&amp;amp;D Manager is often address to do. From my point of view, the frustration is based on wrong state of mind. I considered the time estimation as it is. As an estimation. I try my best to analyze the task(s) on hand and give estimations in range.&lt;br /&gt;You have probably asked, at least once in the past, to give your &lt;u&gt;most accurate estimation&lt;/u&gt;. While the combination of the words sounds like a joke the people who ask you this question are often dead serious. The only truth about time estimation is that you know that your estimation was right or wrong only when the task ends or very close to that stage.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;There are many causes: requirements are not firm enough, managers and developer did not understand the requirements well, new technologies adoption, third party components integration etc.&lt;br /&gt;&lt;br /&gt;I use the word ART in the post title to emphasis that time estimation is not a sheer science. Moreover, the word estimation is usually under estimate as well. CEO's understand that the Gantt is full of time estimations but, oddly, overtime, they is tends to forget all about it. Sadly, but it is true, that after the project is approved the R&amp;amp;D Manager actually sigend on a contract (the Gantt) and the clock start to tick.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Estimation in ranges &lt;/strong&gt;&lt;br /&gt;In order to avoid the time estimation to take as a promise the high level estimation should be defined as a range. For example 20-50 weeks is better than 30 weeks estimation. Estimating within a range also reflects the Risk Management and gives the right answer to poorly defined requirements (e.g. 20-180 weeks). The lowest figure represent all-went-well scenario while the highest represent the worst-case scenario. As the project progress this two figures should be converge (usually in the middle of the range). Another example is a Conceptual estimation (very high level), it should be look like this: 60-180. If it looks like this 104-124 then you need to re-estimate because estimation in this level can't looks too accurate.&lt;br /&gt;&lt;br /&gt;Lately, new tools for project management address this requirement for range estimation: LiquidPlanner: http://www.liquidplanner.com/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Buffer Estimation&lt;/strong&gt;&lt;br /&gt;In his book, Rapid Development, Steve McConnell's writes about time estimations. Here is some of his insights:&lt;br /&gt;"...your estimate could easily be out by a factor of 4. After you have firm requirements this reduces to a factor of 1.5. So even with totally fixed requirements (an unusual scenario) what you think will need 100 days of effort could require as much as 150 days but may only need 67."&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The whole picture&lt;/strong&gt;&lt;br /&gt;One of the crucial error is to estimate without considering an overall factors. For example:&lt;br /&gt;&gt; Vacations, illnesses&lt;br /&gt;&gt; Integration&lt;br /&gt;&gt; Testing&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Match the effort with the people in charged&lt;br /&gt;&lt;/strong&gt;An estimation of 3-5 weeks is right for developer A but wrong for developer B (2-4 or alternatively 4-7). You should refine the estimation in a way that considered the quality of the developers on hand.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Dependencies&lt;/strong&gt;&lt;br /&gt;Make sure you understand the relationships between tasks. Un-notice decency can disrupt plans.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1-2 days sub tasks&lt;br /&gt;&lt;/strong&gt;As opposed to high level estimation, detailed estimation requires well defined requirements. The project manager in this case should split each requirement to task and sub tasks. Some project managers define sub task in granularity of one to two days top. This tedious task is usually done by the team managers.&lt;br /&gt;&lt;br /&gt;advantages:&lt;br /&gt;&gt; The time estimation is more accurate&lt;br /&gt;&gt; You get to know the status of the project on a daily basis&lt;br /&gt;&gt; You can raise red flags quickly and take measures sooner&lt;br /&gt;&gt; you build the self confidence of the team members&lt;br /&gt;disadvantages:&lt;br /&gt;&gt; Can be considered as annoying Micro-Management&lt;br /&gt;&gt; Can be yield to a broken Gantt on daily basis. When one day sub-task in not completed it start to drags the entire task, at this point the developer may start to be frustrated&lt;br /&gt;&gt; Strong developer will be offended. They work great when they have flexibility. Beside some strong developers are quite bad in time estimation and usually finish their work before their own estimation.&lt;br /&gt;&lt;br /&gt;From my experience their is no rule of thumb. People are different and should be manage accordingly. In cases where the 1-2 days sub task works both for the manager and the developer then OK. &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3855749445209325267-5894318997589760123?l=0rencs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://0rencs.blogspot.com/feeds/5894318997589760123/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3855749445209325267&amp;postID=5894318997589760123' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/5894318997589760123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/5894318997589760123'/><link rel='alternate' type='text/html' href='http://0rencs.blogspot.com/2008/02/art-of-time-estimation.html' title='The Art of Time Estimation'/><author><name>Oren Cohen Shwartz</name><uri>http://www.blogger.com/profile/01764416806072976347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://bp2.blogger.com/_0cKmG4rtOYs/R2mJNgjpx3I/AAAAAAAAFIM/NImxqNlBgMA/S220/me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_0cKmG4rtOYs/R7H0SHvtqJI/AAAAAAAAFtA/oVz8GmxtEuE/s72-c/timees.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3855749445209325267.post-8634699408225981576</id><published>2008-02-08T22:37:00.000+02:00</published><updated>2008-02-08T23:01:30.342+02:00</updated><title type='text'>What to choose: "Web-Application" or "Desktop-Application"? Rich-Internet-Application or a Smart-Client?</title><content type='html'>&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br /&gt;The post deals with an important question, one that raises a lot of debate in the Software architecture world (I will consentrate in the .Net Framework).&lt;br /&gt;&lt;br /&gt;What to choose: &lt;strong&gt;"Web-Application" or "Desktop-Application"? Rich-Internet-Application or a Smart-Client?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The reason why this question is asked so frequently recently, is that both technologies are getting closer and closer and when the distinctions becomes fuzzy the decision is harder to make. For example, Smart client introduces smart deployment and diminishes one of the biggest cons of Desktop-Application. With Ajax, Web-Applications run faster and with enhanced user experience.&lt;br /&gt;&lt;br /&gt;Before we get started it is important to say right here and now that the define question above must always depends on the business problem.&lt;br /&gt;&lt;br /&gt;It will be an obscene act for a developer or architect to choose a technology based on a whim. Technology should not be chosen on stuffy professionalism either. Many companies choose technology because this is what the current developer knows and good at. Choosing the right application type is crucial in many businesses. The end users and the business problem on hand, are the ones who should take the lead in the decision making.&lt;br /&gt;&lt;br /&gt;This post does not deal with a certain business issue. It discusses the common pros and cons of each methodology.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The Dialog&lt;/strong&gt;&lt;br /&gt;I choose to face with this question in a dialog form. The Dialog is conduct between two software architectures.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Socrates:&lt;/strong&gt; a Web-Application advocate and&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Plato:&lt;/strong&gt; a Desktop-Application advocate.&lt;br /&gt;&lt;br /&gt;The dialog format allows me to not take a stand. In a matter of fact I don't have a stand. I think both technologies are great and when there is a need to choose one of them it should be according to the business problem.&lt;br /&gt;&lt;br /&gt;You are most welcome to join to their (imaginary) debate held in modern Greece in one of the Tech-Ed .Net seminars.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Socrates:&lt;/strong&gt;&lt;br /&gt;… But Plato, your claim about the needs for constant software upgrades only strengthens my argument that Web-Applications are the best technology. In a Web-Application the application is actually located on a remote server which you can upgrade when ever it's needed and it reflects to your users online. In other words, when all the code is in one place everyone sees the latest release.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Plato: &lt;/strong&gt;&lt;br /&gt;Well, with ClickOnce technology a Windows-Form-Application can be deployed and launch from the Web. With this type of technology software upgrades have never been easier to maintain.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Socrates:&lt;/strong&gt;&lt;br /&gt;Oh, I heard about what it is capable of, but isn't it too cumbersome to accomplish? You do need to make all the assemblies strongly named and the amount of folders and files it creates on the web server is quite…well… cumbersome. Moreover, who wants to install a Desktop-Application on his hard drive if he does not have to?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Plato:&lt;/strong&gt;&lt;br /&gt;Well, I guess this technology will be improved by the Redmond fox in the future. Right now, the user can choose between offline and online executions. In both modes the application is installed on the machine. The difference is that in offline mode the application can be jump started and get updated from the desktop while in online mode it can be run only from the web link as before. Please also know that ClickOnce is not the only solution. A "home made" solution like using a Web-Service that the Desktop-Application communicates with, checks and install updates are easy to develop.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Socrates:&lt;/strong&gt;&lt;br /&gt;So you are basically saying that in online mode, which is closest to running a Web-Application, the application is reinstalled again and again in each run. What if it is a big application in term of Mega bytes? Well, my dear Plato I rest my case.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Plato:&lt;/strong&gt;&lt;br /&gt;No, you haven't, because there is some kind of caching mechanism that improves this behavior. I guess, the .Net Framework only downloads the required files.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Socrates:&lt;/strong&gt;&lt;br /&gt;Hmmm…, .NET Framework you said. Well do I smell a software perquisite in the air?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Plato:&lt;/strong&gt;&lt;br /&gt;You do smell well, but do understand that the user must not have the .NET framework on his computer or must preinstall it manually. The deployed ClickOnce application can be easily defined to support the installation of the .NET Framework (bootstrapper). Dear Socrates, as you well know Web-Applications commonly require ActiveX installations? Those requirements often scare users because they are commonly causing the web browsers to display intimidating security.&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_0cKmG4rtOYs/R6zC1lzT7BI/AAAAAAAAFnw/3VNNbea0oBE/s1600-h/certwarning.gif"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_0cKmG4rtOYs/R6zC1lzT7BI/AAAAAAAAFnw/3VNNbea0oBE/s320/certwarning.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5164717098623298578" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Socrates:&lt;/strong&gt;&lt;br /&gt;Well, you are right; today's web browsers do make us lots of headaches. But, Windows firewalls often do the same for Desktop-Applications.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Plato:&lt;/strong&gt;&lt;br /&gt;In Desktop-Applications as opposed to web-browser the application has rights that are granted from the logon user. It can access system data like IP Address, Registry, Files, Windows Shell integration etc. In a script mode the Web-Application is very limited and the ActiveX technology is one of the last resorts. Web-Applications cannot leverage local resources like CPU or installed software either. Moreover, isn't true that ActiveX is also being used in Web-Applications to enhance graphic capabilities like Charts, Maps etc. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Socrates:&lt;/strong&gt;&lt;br /&gt;Well, it depends on what the Web-Application is obligated to do. But, yes it is often use for more complex and some kind of fancier UI controls.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Plato:&lt;/strong&gt;&lt;br /&gt;I guess you will also agree that Web-Application will never be capable to support GUI and visualization functionalities like Desktop-Application. For example, the user interface must travel back and forward across the web in order to be refreshed.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Socrates:&lt;/strong&gt;&lt;br /&gt;I wouldn't say always. AJAX, for example enhances the UI capabilities. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Plato:&lt;/strong&gt;&lt;br /&gt;AJAX also added tons of client-side script code and that hurts performance and harms the user experience. With AJAX, Web-Applications stop being a thin application and start to get fat. Speaking of scripts, isn't true that debugging capabilities of client and server side scripts languages like VB and Java script are impossible. Isn't also true that developing in this kind of script language is klutzy?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Socrates:&lt;/strong&gt;&lt;br /&gt;With today's ASP.NET technology, server code (code behind) can be written in a high level language (any .NET aware language) that can be of course debugged. As for client and server side scripts I am afraid you are right. &lt;br /&gt;&lt;br /&gt;Plato, with you permission I would like to talk about application availability. As you recall, in Web-Application the application is available and can be access from anywhere without installing anything on the client machine. For example, Gmail is a web-based Email application. You can enter to your Inbox no matter where you are. In case, you are entering an Internet-Café you surly be permitted to enter to Gmail but not to install any application on the machine.&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_0cKmG4rtOYs/R6y_r1zT69I/AAAAAAAAFnQ/J9quBe9XbEk/s1600-h/gmail.png"&gt;&lt;img margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_0cKmG4rtOYs/R6y_r1zT69I/AAAAAAAAFnQ/J9quBe9XbEk/s320/gmail.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5164713632584690642" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;strong&gt;Plato:&lt;/strong&gt;&lt;br /&gt;Yes, I see your point. But what if I am in my home or at the office and I want to see my Emails but the Gmail server is down or I have temporarily lost my Internet connection. I will not be able to see my Emails right? Web-Application must be connected to the server all the time. In other words Desktop-Applications offer better offline and caching capabilities. There is no need to waste time waiting for screens to refresh or networks to become available&lt;br /&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_0cKmG4rtOYs/R6zAFVzT6-I/AAAAAAAAFnY/MAU8tZezOck/s1600-h/outlook.gif"&gt;&lt;img margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_0cKmG4rtOYs/R6zAFVzT6-I/AAAAAAAAFnY/MAU8tZezOck/s320/outlook.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5164714070671354850" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As opposed to:&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_0cKmG4rtOYs/R6zAWFzT6_I/AAAAAAAAFng/l87XkiCG5bQ/s1600-h/404.gif"&gt;&lt;img  margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_0cKmG4rtOYs/R6zAWFzT6_I/AAAAAAAAFng/l87XkiCG5bQ/s320/404.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5164714358434163698" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Socrates:&lt;/strong&gt;&lt;br /&gt;Well, if you need smart caching and offline capabilities you are right. Another thing that I would like to mention is a cross-platform capability. If your Desktop-Application is targeting to a world wide use will you be able to install it on Linux and on Windows OS. Even if you have decided to support only Windows OS family you will still need to support and test your application on lots of versions like: 98/ME/NT/2000/2003/XP/Vista.&lt;br /&gt;&lt;br /&gt;Not including sub versions like Home and professional editions. You will soon notice that the above OS supports different APIs and acts differently. In case of a Web-Application you are running within a well tested application (like IE) that was already tested on those OS. Web Browsers are also committed to standards like HTML and Java scripts interpretation. Therefore, as long as you stick to standards you will have no problems.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Plato:&lt;/strong&gt;&lt;br /&gt;At the beginning, you have almost convinced me, but then I have figured there are a lot of web browsers vendors and lots of web browser versions. Also there are a lot of technologist like ActiveX and Flash that will not work on Mac web browsers. Nevertheless, you are right if the Web-Application is simply enough will be easier to support world wide users.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Socrates:&lt;/strong&gt;&lt;br /&gt;Well, working with a markup language like HTML also holds lots of simplicity and flexibility capabilities. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Plato:&lt;/strong&gt;&lt;br /&gt;It is true! But at the same time it is also very limited. With XAML markup language, Desktop-Applications also enjoy the flexibility like HTML plus much more enhanced UI capabilities.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Socrates:&lt;/strong&gt;&lt;br /&gt;OK, Plato we are not even close to end this debate, but I do need to go. I have a meeting with Xenophon at the local SPA.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Plato:&lt;/strong&gt;&lt;br /&gt;Adio! Socrates. Send my regards.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font size=4&gt; What does the future hold?&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;It is hard to say what to future holds. One should be a profit to tell. My guess is that we are going to face with the article question for a long time, at least for the near future. &lt;br /&gt;&lt;br /&gt;Looking at brand new developing styles like SmartClient and AJAX, makes you think that no new revolutionary progress have been made in the last years.&lt;br /&gt;&lt;br /&gt;"…AJAX is not a new programming language, but a new way to use existing standards." (http://www.w3schools.com/ajax/default.asp)&lt;br /&gt;&lt;br /&gt;"…Smart client isn't a technology, and it isn't any specific architecture. It is a style of application that combines the best of both Desktop-Applications and Web-Applications." (http://msdn.microsoft.com/smartclient/community/scfaq/default.aspx)&lt;br /&gt;&lt;br /&gt;Some of the common use technologies are really very old:&lt;br /&gt;&lt;br /&gt;&gt;ActiveX in 1990 (http://en.wikipedia.org/wiki/ActiveX) &lt;br /&gt;&gt;VB – 1991 (http://www.startvbdotnet.com/dotnet/vb.aspx) &lt;br /&gt;&gt;MFC -1992 &lt;br /&gt;&gt;In 1994 the very earlier version of HTML was introduced (http://www.w3.org/MarkUp/historical). &lt;br /&gt;&gt;JavaScript in 1995 (http://www.oreillynet.com/pub/a/javascript/2001/04/06/js_history.html) &lt;br /&gt;&gt;Flash - In 1996 &lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;strong&gt;Smart-Client vs. Rich-Internet-Application (RIA)&lt;/strong&gt;"Rich Internet applications (RIA) are web applications that have the features and functionality of traditional desktop applications. RIAs typically transfer the processing necessary for the user interface to the web client but keep the bulk of the data (i.e. maintaining the state of the program, the data etc) back on the application server. (http://en.wikipedia.org/wiki/Rich_Internet_application) &lt;br /&gt;&lt;br /&gt;Rich Internet Applications are already here. Google is one of the world leaders in Rich-Internet-Application. Here are some of examples: Gmail, Google Calendar and Google Docs and Spreadsheets.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_0cKmG4rtOYs/R6zCQVzT7AI/AAAAAAAAFno/oi5J1UtbhSM/s1600-h/gmaildoc.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_0cKmG4rtOYs/R6zCQVzT7AI/AAAAAAAAFno/oi5J1UtbhSM/s320/gmaildoc.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5164716458673171458" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3855749445209325267-8634699408225981576?l=0rencs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://0rencs.blogspot.com/feeds/8634699408225981576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3855749445209325267&amp;postID=8634699408225981576' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/8634699408225981576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/8634699408225981576'/><link rel='alternate' type='text/html' href='http://0rencs.blogspot.com/2008/02/what-to-choose-web-application-or.html' title='What to choose: &quot;Web-Application&quot; or &quot;Desktop-Application&quot;? Rich-Internet-Application or a Smart-Client?'/><author><name>Oren Cohen Shwartz</name><uri>http://www.blogger.com/profile/01764416806072976347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://bp2.blogger.com/_0cKmG4rtOYs/R2mJNgjpx3I/AAAAAAAAFIM/NImxqNlBgMA/S220/me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_0cKmG4rtOYs/R6zC1lzT7BI/AAAAAAAAFnw/3VNNbea0oBE/s72-c/certwarning.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3855749445209325267.post-5664315206239865512</id><published>2008-02-06T11:29:00.000+02:00</published><updated>2008-02-06T11:50:41.612+02:00</updated><title type='text'>Hiring employees: The interview</title><content type='html'>&lt;a href="http://www.spc.edu/Images/Career%20Services/Interview.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 280px;" src="http://www.spc.edu/Images/Career%20Services/Interview.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Hiring good people is a supreme task and no one is free from making mistakes. &lt;br /&gt;One of my CEO told me once that approximately 20% of the recruits turn out as a mistake.  1 out of 5 people, it is quite a lot.&lt;br /&gt;Making the right choices is extremely hard because there is no magic formula and maybe it will never be because the "problem" is multi dimensional.&lt;br /&gt;Nevertheless, there are some insights that can help you hire better. In this post I am concentrating in the face to face interviewing process (personally, I think phone pre-interviewing is a waste of time). Some of the "Interviewing-Tips" are from my own experience while others are success stories I have heard from colleagues and manager during the years.It is important to note that the interviewing "Interviewing-Tips" may not be applied as is because it  &lt;u&gt;depends on context. &lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size=4&gt;&lt;strong&gt;Matching and Competency&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;Prior to the interview make sure you know what kind of qualities you are looking for in the interviewee.  You cannot have one standard. You do not want a brilliant, fast learning and fast employee to do a tedious job. You may recruit him but he will soon ask replace the job in or out of the company. &lt;br /&gt;A CTO that I have worked with told me a story about his first employer a very eccentric manager that was looking to hire people that have strong self confidence, have the ability to separate the important thing from the insipid and to get the job done. &lt;br /&gt;His MO was as followed:&lt;br /&gt;&lt;em&gt;&lt;font size=2&gt;When an interviewee came to the office he was turn by the secretary to the manager office.&lt;br /&gt;When he entered, the manager was looking busy reading stuff, then with his head looking on the desk he just pick up his hand, holding few papers, and ask the interviewee to photo copy the papers twice. The manager added that the Xerox in the fifth floor is broken and that the one in the sixth floor can be use. Eventually, he signed, the interviewee with his hand to leave the room.&lt;br /&gt;Not knowing that they are actually being tested, most of the interviewees where quite in shock. Another surprise was waiting for the candidates that were regaining their composure – there were no photocopier machine in the sixth floor because the building was only five stories.&lt;/font&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;There was only one way to progress in the job quest and that is to get to job done and &lt;strong&gt;bring the papers photo copied twice&lt;/strong&gt;. &lt;br /&gt;All the successful interviewees copied the papers in the shop outside the office building. Some of them ask the secretary or one of the employees but all came back with the copied paper. &lt;br /&gt;The talk about manager was indeed eccentric but the employees he recruits were a success story. The moral of the story is that even if the technique might be odd, if it serves the needs of recruiting a component employees then it ok.                                       &lt;br /&gt;&lt;br /&gt;&lt;font size=4&gt;&lt;strong&gt;Confirmation, confutation and confrontation&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;Starting an interview in a calm and inviting atmosphere is very important, but this does not mean that the rest of the interview needs to be the same. Asking only pleasant questions is not a good practice. Sometimes shaking the interviewee may lead to situation where his true personality is discovered.  No matter how badly you want to recruit you should consider each candidate as not the right one. You should dig to find out why he is right. With this kind of negative approach you learn much more about the candidate and get a strong impression how he deals with difficulties and how badly he or she wants the job. &lt;br /&gt;&lt;strong&gt;Ask questions like:&lt;/strong&gt;&lt;br /&gt; &gt;Why do you think you are the appropriate person for the job? Give examples from  what you did in the past.&lt;br /&gt; &gt;Do you even know what the job is? If yes, tell me; If not then why do you think you are qualified for a job that you don’t really know about.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size=4&gt;&lt;strong&gt;Compatibility through Practicability, ability and capability &lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;In my career I have encountered interviewer that was so egger in some point to hire me that the interview was just too easy. It was great for me but it seems back then like it was very superficial. In some cases interviewer ask a question (mumbling) in give them self answers to at the end of each question.  &lt;br /&gt;The only way to increase the probability of hiring good employee is to make sure that you are getting the most reliable information from the candidate. &lt;br /&gt;Make sure you search for the employee compatibility to the job not by asking do you know to do X? Or do you have experience with Y? Those are close questions that answer for them is Yes or No. You don’t learn from this type of answers anything. &lt;br /&gt;&lt;strong&gt;Ask questions like:&lt;/strong&gt;&lt;br /&gt;&gt; Can you please describe a case where you were practicing X? Add difficulties you have encountered with? How did you face with them?&lt;br /&gt;&lt;br /&gt;You must make sure that the interviewee has the capability to do the job. Even if he does not have practical experience you can learn how he deals with problem, if he resourceful or not etc.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size=4&gt;&lt;strong&gt;Recommenders&lt;/strong&gt;&lt;/font&gt; &lt;br /&gt;In some countries the recommenders is the most valuable tool to decide if to hire someone. A rule of thumb is that you should use this tool but not in the normal way. That is not to call, only to the recommender in the list but also to someone else in the company. For example, if the candidate list his team leader, ask him the permission to call also the manager of his team manager or alternatively to the R&amp;D Manager or CTO. &lt;br /&gt;In this mode of operation you eliminate the chance that the listed recommender is biased.&lt;br /&gt;When talking with a recommender always makes sure he or she has the time to talk with you. Try to check with the recommender information that the interviewee told you. Do not search for positives qualities but for the negative ones. Prepare to get disappointment. &lt;br /&gt;In some cases the interviewer likes the interviewee and therefore not asking hard questions. This is a mistake. &lt;br /&gt;&lt;strong&gt;Ask questions like:&lt;/strong&gt;&lt;br /&gt;&gt; Would you recruit the person again in the future? If yes why? If not why?&lt;br /&gt;&gt; Can you tell about mishaps that the employee was involved with?&lt;br /&gt;&gt; Does, from your point of view, the employee can fit into the position on hand? If yes why? If not why?&lt;br /&gt;&gt; What are the employee most significant weaknesses?&lt;br /&gt;&lt;br /&gt;Good luck!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3855749445209325267-5664315206239865512?l=0rencs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://0rencs.blogspot.com/feeds/5664315206239865512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3855749445209325267&amp;postID=5664315206239865512' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/5664315206239865512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/5664315206239865512'/><link rel='alternate' type='text/html' href='http://0rencs.blogspot.com/2008/02/hiring-employees-interview.html' title='Hiring employees: The interview'/><author><name>Oren Cohen Shwartz</name><uri>http://www.blogger.com/profile/01764416806072976347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://bp2.blogger.com/_0cKmG4rtOYs/R2mJNgjpx3I/AAAAAAAAFIM/NImxqNlBgMA/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3855749445209325267.post-3400823418499753417</id><published>2008-02-04T22:45:00.000+02:00</published><updated>2008-02-04T22:53:06.043+02:00</updated><title type='text'>FAQ, Knowledge-Base and Troubleshoot</title><content type='html'>This post deals with a comparision of FAQ, Knowledge-Base and Troubleshoot (Content, Format and Audiance)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_0cKmG4rtOYs/R6d6xFzT67I/AAAAAAAAFnA/hgyG9NaSFGw/s1600-h/faq.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5163230481593134002" style="CURSOR: hand" alt="" src="http://bp0.blogger.com/_0cKmG4rtOYs/R6d6xFzT67I/AAAAAAAAFnA/hgyG9NaSFGw/s400/faq.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt; &lt;/div&gt;&lt;a href="http://bp0.blogger.com/_0cKmG4rtOYs/R6d5uFzT66I/AAAAAAAAFm4/b1n0fVn5Wjo/s1600-h/faq.jpg"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3855749445209325267-3400823418499753417?l=0rencs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://0rencs.blogspot.com/feeds/3400823418499753417/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3855749445209325267&amp;postID=3400823418499753417' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/3400823418499753417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/3400823418499753417'/><link rel='alternate' type='text/html' href='http://0rencs.blogspot.com/2008/02/faq-knowledge-base-and-troubleshoot.html' title='FAQ, Knowledge-Base and Troubleshoot'/><author><name>Oren Cohen Shwartz</name><uri>http://www.blogger.com/profile/01764416806072976347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://bp2.blogger.com/_0cKmG4rtOYs/R2mJNgjpx3I/AAAAAAAAFIM/NImxqNlBgMA/S220/me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_0cKmG4rtOYs/R6d6xFzT67I/AAAAAAAAFnA/hgyG9NaSFGw/s72-c/faq.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3855749445209325267.post-4041412931571216114</id><published>2008-01-26T15:08:00.001+02:00</published><updated>2008-05-21T12:01:01.883+03:00</updated><title type='text'>Leadership and Leading-Sheep</title><content type='html'>&lt;a href="http://www.sermons4kids.com/sheep_shepherd_maze.gif"&gt;&lt;img style="FLOAT: right; MARGIN: 0px 0px 10px 10px; WIDTH: 200px; CURSOR: hand; HEIGHT: 152px" height="182" alt="" src="http://www.sermons4kids.com/sheep_shepherd_maze.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;A lot of words and lines of words was and will continue to be written on the leadership topic.&lt;br /&gt;You might have read about the "fact" that leadership is not something that you can learn, either born with or don't. I don't agree with that statement foremost because it is too deterministic.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;strong&gt;Leadership qualities can be developed, up to a certain Level&lt;br /&gt;&lt;/strong&gt;From my point of view, leadership qualities can be developed, up to a certain level, by anyone. It is only depends on a complex formula of what are the collective aspects that impacts a person through out his life (parents, school mate, teachers etc.) and the current surrounding where he operates. Meaning it is related to internal and external variables. An internal factor example: A low self esteem that was generated due to parent or teacher(s) behavior, can lower the probability of the certain person to become a leader. An external factor example: A person can start new position in a company where other leader(s) are already in the premises, his coworkers or employees may not grant him the leadership. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;strong&gt;Leadership is granted by the people themselves&lt;br /&gt;&lt;/strong&gt;The only deterministic aspect that one can set on the leadership phenomena is that, by all means, the leadership is granted by the people themselves. You can't force someone to accept you as his leader. Even if you have the right internal qualities you will only become a leader if coworkers or your employees see you as such. This part is very elusive because every people can define a leader a little bit different. Even if a group of people may define a common list of leader qualities they may not agree about the weight or impotency of each quality. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;strong&gt;Why is it important?&lt;br /&gt;&lt;/strong&gt;The origin of leadership, is claimed to be in the Evolution. The ancestors of the very best leader exist in plant earth was an ape. Studies show that leadership also exists within apes groups, as well as in other primates (Richard Wrangham and Dale Peterson, in Demonic Males: Apes and the Origins of Human Violence). The leadership among ape group grants order and stability. In some studies it was claim that a grown up ape is emotionally equivalent to a human child.&lt;br /&gt;All grown up people was once children that looks upon their parents and extended family for directions. Everything is new for a new born baby and there is lot to learn. Having someone to guide you is extremely important. This very early unconscious need stays with us forever. The difference between grown up people is the level of this need.&lt;br /&gt;When someone is hired as a manager to manage an existing team or group of people he will be seen by them, almost immediately, as a manager as is title implies. They will see him as a leader only after a significant period of time, if ever.&lt;br /&gt;In the Hi-Tec field, as well as in other, the leadership is important. The harsh competition create, occasionally, crazy deadline and enforce people to think out of the box in order to achieve differentiation against the competitors products. The manager can not move the "rock" up to the tip of the hill without the help of others. In order to achieve harsh complex work within pressure the manager should also have some leadership qualities. It may not be important in short term but it is surely critical in long term perspectives.&lt;br /&gt;Example:&lt;br /&gt;Two shepherd need to direct their herd back to the pen. The distance to the pen is very far and a storm is getting close. The sheep must arrive to the pen as soon as possible.&lt;br /&gt;A shepherd that acts as manager with low leadership qualities will shepherd his sheeps to follow a certain path and to accomplish it within. From time to time he will "yell" to get back to the path or to hurry up. A shepherd that acts as manager with high leadership qualities will shepherded his sheep quite the same, only he will gather them before the long walk, explain what it is to accomplish and why. The shepherd will inspire the herd; "tell them" that he believes in them and together they will achieve the great task.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Leader qualities &lt;/strong&gt;&lt;br /&gt;There are many leadership qualities. The following is a list of the most important ones, as I see it. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Humility&lt;/span&gt; &lt;/strong&gt;&lt;br /&gt;o A leader does not give orders he asks and share.&lt;br /&gt;o A leader does not take credits but give it to others.&lt;br /&gt;o A leader looks at his coworkers and employees in their eyes not from above. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;strong&gt;Accountability &lt;/strong&gt;&lt;br /&gt;o The leader will take the blame on him and not drop or include the collective in to it. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;strong&gt;Integrity&lt;br /&gt;&lt;/strong&gt;o Say the truth all the time &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;strong&gt;Carrying&lt;br /&gt;&lt;/strong&gt;o A leader really cares about his coworkers and employees. He asked and listens. He really knows his people. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;strong&gt;Role model&lt;br /&gt;&lt;/strong&gt;o A leader shows example.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;strong&gt;Initiative and entrepreneurial drive&lt;br /&gt;&lt;/strong&gt;o A leader considers any problem as a challenge.&lt;br /&gt;o Any challenge holds prospects to achieve wonderful progress.&lt;br /&gt;o A leader has a clear vision that he shared with other.&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;Clarity&lt;br /&gt;&lt;/strong&gt;o A leader set clear goals&lt;br /&gt;o Direct focus&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;Confidence&lt;br /&gt;&lt;/strong&gt;o A leader can take harsh decisions with mumbling&lt;br /&gt;o A leader can take accountability and responsibility with no fear. &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3855749445209325267-4041412931571216114?l=0rencs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://0rencs.blogspot.com/feeds/4041412931571216114/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3855749445209325267&amp;postID=4041412931571216114' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/4041412931571216114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/4041412931571216114'/><link rel='alternate' type='text/html' href='http://0rencs.blogspot.com/2008/01/leadership-and-leading-sheep.html' title='Leadership and Leading-Sheep'/><author><name>Oren Cohen Shwartz</name><uri>http://www.blogger.com/profile/01764416806072976347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://bp2.blogger.com/_0cKmG4rtOYs/R2mJNgjpx3I/AAAAAAAAFIM/NImxqNlBgMA/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3855749445209325267.post-5080907318968898885</id><published>2008-01-04T00:22:00.000+02:00</published><updated>2008-01-18T12:15:08.375+02:00</updated><title type='text'>Meeting Management</title><content type='html'>Meeting can be very productive. They can also be a waste of time. Here are some tips for conducting a successful meeting.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mentalclinic.googlepages.com/meeting.gif/meeting-full.gif"&gt;&lt;img style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 200px; CURSOR: hand" alt="" src="http://mentalclinic.googlepages.com/meeting.gif/meeting-full.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;Purpose&lt;/strong&gt;:&lt;br /&gt;If you can not define a decent a purpose your meeting is hanging by a thread. The purpose should be one to two clear sentences. For example:&lt;br /&gt;"This meeting is to decide which bug tracking software to choose."&lt;br /&gt;The purpose serves as a measurement tool that helps you and the rest of the participants to declare whether the meeting was successful or not. Start the meeting with a statement of the overall outcome that you want from the meeting.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Agenda:&lt;/strong&gt;The agenda is a list the items you are going to discuss. The agenda should have strong correlation with the purpose on hand. Define duration of time on which you plan to discuss each item or else you will be out of time. For example:&lt;br /&gt;&lt;em&gt;"1. What are our Bug Tracking software requirements?"&lt;br /&gt;"2. What are the workflows (Bug life cycle)?"&lt;br /&gt;"3.Demo of X and Y" &lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Timeframe:&lt;/strong&gt;&lt;br /&gt;The meeting duration should strongly correlates with the agenda. The timeframe and the agenda helps you stay focused. Start the meeting on time (see more below) and end it on time, even if you haven't finished it all. This is two sides of the same coin. Do not let late arrivals to spend your and others time, but also do not steal people time at the end of the meeting.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Assign organizer: &lt;/strong&gt;&lt;br /&gt;The meeting has at least one purpose and two persons at the least. Someone has to write notes and minutes, otherwise it will be in vain. The minutes should record who attended, what was discussed, any agreements that were reached, and any action items that were assigned. Soon after the meeting, usually within 24 hours, the minutes of the meeting should be distributed to all who attended, any invitees who did not attend, and anyone else effected by the discussion. Email is a great vehicle for distributing them. Distributing the minutes informs those not at the meeting of the progress that was made and reminds everyone of their action items.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Selecting Participants:&lt;/strong&gt;&lt;br /&gt;Make sure you invite only the relevant persons. Ask for preparation if required. The decision about who is to attend depends on what you want to accomplish in the meeting. Do not depend on your on judgment only, ask the participants you choose if there are other persons who might contribute.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Notice:&lt;/strong&gt;&lt;br /&gt;At least one day (unless it's an emergency meeting). If you ask people to get prepare to the meeting you should give them time to do so. If you had to cancel the meeting, do it as early as possible and apologize to the participants. Make them know if this is a cancellation or rescheduling.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Location:&lt;/strong&gt;&lt;br /&gt;Make sure you booked the conference room. Make sure that you write where the meeting is held. Try not to schedule the meeting right after another meeting in the same conference room, from time to time meeting cross the timeframe and you do not want your participants and you to wait outside the door.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Material:&lt;/strong&gt;&lt;br /&gt;Send all the required material. Ask participates to read it. Ask them to think about issues before the meetings (although people hardly do so.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Start meeting on time:&lt;/strong&gt;&lt;br /&gt;Don't wait for slow arrivals. Keep everyone know that your time is not spendable. Do not review what you have already covered. It will be unfair on behalf of those who come on time and bad example too. You should respect them. Do not try to educate the late arrivals but if one of them asks question or remark during the meeting, one that you have answered at the beginning of the meeting, tell him politely that he was late to the meeting and you already covered the issue. In case of dispute, keep the blame on you, say that you have more meetings and had to start on time. Hopefully, people will stop coming late after few episodes like this.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Opening Meetings&lt;/strong&gt;&lt;br /&gt;Welcome attendees and thank them for their time. Review the agenda at the beginning – make it short and laconic. Give participants a chance to understand all proposed major topics. Small talk can be allowed at this point only. It create nice atmosphere.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Disturbances:&lt;/strong&gt;&lt;br /&gt;Do not allow participants to be occupied with other stuff other the meeting. In case someone play with his laptop or cellular phone, politely, tell him to stay focused if he does not comply, tell him that you are appreciate his participants and most wanted him to listen. In case the behavior continues ask him to leave the meeting.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Show an example:&lt;/strong&gt;&lt;br /&gt;The most important thing is to show an example. If you come late to meetings, if you do not come to your on time, if you deals with other stuff during the meeting do not expect for others to behave differently.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3855749445209325267-5080907318968898885?l=0rencs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://0rencs.blogspot.com/feeds/5080907318968898885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3855749445209325267&amp;postID=5080907318968898885' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/5080907318968898885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/5080907318968898885'/><link rel='alternate' type='text/html' href='http://0rencs.blogspot.com/2008/01/meeting-management.html' title='Meeting Management'/><author><name>Oren Cohen Shwartz</name><uri>http://www.blogger.com/profile/01764416806072976347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://bp2.blogger.com/_0cKmG4rtOYs/R2mJNgjpx3I/AAAAAAAAFIM/NImxqNlBgMA/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3855749445209325267.post-2589798510824374761</id><published>2008-01-03T23:15:00.000+02:00</published><updated>2008-01-18T12:17:01.698+02:00</updated><title type='text'>Cup of coffee meetings</title><content type='html'>&lt;a href="http://www.joebellacoffee.com/images/sugarcube.jpg"&gt;&lt;img style="FLOAT: right; MARGIN: 0px 0px 10px 10px; WIDTH: 200px; CURSOR: hand" alt="" src="http://www.joebellacoffee.com/images/sugarcube.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Taking your employee to drink coffee gives you an opportunity to sit with him in a pleasant environment outside the office walls. Foremost, your employee is flatter from the fact that you have bother taking a break with him with your busy schedule. It generates a sense of impotency and significant.&lt;br /&gt;&lt;br /&gt;The very reason the meeting is taking place in a coffee house does not mean that it is not a management tool. It is a great opportunity to learn important information about your employees both in personal and work level.&lt;br /&gt;&lt;br /&gt;The meeting should hardly ever be interrupted; you are not in the office so close your cellular phone too. The whole point is to get away from the distractions for a little while.&lt;br /&gt;&lt;br /&gt;Usually you sit with your employees in your room. It is your home base, your natural place where your employees does not necessarily feel open. The coffee shop is a place of good atmosphere a neutral place that can create an open conversation mainly on your employee part.&lt;br /&gt;&lt;br /&gt;Do your best to listen instead of talking. However, be all means, do not interview the employee. Ask open questions; let him talk about him self, get to know him better. From time to time ask some questions about the work but mostly be there to listen. In specific, you should be an active listener. Get interesting about what they are saying and do not let your mind wander.&lt;br /&gt;&lt;br /&gt;The cup of coffee meeting should be with your key employees (your champions) and it should take place now and then. Caution, at the first time the employee might get nervous about the fact you schedule to meet him all together. Do not create agenda but do tell him that your intentions.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3855749445209325267-2589798510824374761?l=0rencs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://0rencs.blogspot.com/feeds/2589798510824374761/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3855749445209325267&amp;postID=2589798510824374761' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/2589798510824374761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/2589798510824374761'/><link rel='alternate' type='text/html' href='http://0rencs.blogspot.com/2008/01/cup-of-coffee-meetings.html' title='Cup of coffee meetings'/><author><name>Oren Cohen Shwartz</name><uri>http://www.blogger.com/profile/01764416806072976347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://bp2.blogger.com/_0cKmG4rtOYs/R2mJNgjpx3I/AAAAAAAAFIM/NImxqNlBgMA/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3855749445209325267.post-4593237907413870701</id><published>2007-12-24T22:07:00.019+02:00</published><updated>2008-03-31T11:31:11.820+03:00</updated><title type='text'>What are the expectations from R&amp;D Manager?</title><content type='html'>&lt;a href="http://www.greencampus.harvard.edu/greenteams/images/expectations.jpg"&gt;&lt;img style="FLOAT: right; MARGIN: 0px 0px 10px 10px; WIDTH: 200px; CURSOR: hand" alt="" src="http://www.greencampus.harvard.edu/greenteams/images/expectations.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;&lt;br /&gt;1. To have a knowledge of and commitment to the business/company strategy. &lt;/strong&gt;&lt;/div&gt;&lt;div&gt;  -To combine and adjust the business&lt;strong&gt; &lt;/strong&gt;architecture/strategy  with   &lt;/div&gt;&lt;div&gt;    the technological one.&lt;/div&gt;&lt;div&gt;  - To be able to speak in business jargon.&lt;/div&gt;&lt;div&gt; &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;br /&gt;&lt;br /&gt;2. &lt;/strong&gt;&lt;strong&gt;To focus on the customers/users.&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;br /&gt;&lt;br /&gt;3. Clear understanding of business and technological processes.&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;  - Great knowledge in new technologic and the ability to harness &lt;/div&gt;&lt;div&gt;     them for the sake of efficiency and selling factors.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;br /&gt;&lt;br /&gt;4. To be a Leader of People. &lt;/strong&gt;&lt;/div&gt;&lt;div&gt;  - The ability to motivate and aspire.&lt;/div&gt;&lt;div&gt;  - Creating a task force atmosphere and group commitment to success. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;br /&gt;5.  To practice the 80/20 law, almost, on a daily basis.&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;br /&gt;&lt;br /&gt;6. To be a Leader of Technology&lt;/strong&gt;.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;br /&gt;&lt;br /&gt;7. To innovate and to lead innovation processes (an agent of changes).&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;br /&gt;&lt;br /&gt;8. To constantly improve processes effciency.&lt;/strong&gt;&lt;/div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;div&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;br /&gt;9. To Release a Quality product on time and within budget .&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;br /&gt;&lt;br /&gt;10. To grasp the all picture (from 10,000 feet).&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;br /&gt;&lt;br /&gt;11. To have a strong professional and ethical integrity.&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Yes, it is a lot to ask from one person, and this is the very reason why the R&amp;amp;D Manager need to build a team of people that work as a group together to accomplish the task of moving the giant mountain called R&amp;amp;D.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The characteristics of a good R&amp;amp;D Manager:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Decision making:&lt;/strong&gt; The R&amp;amp;D Manager takes tens of decision on a daily basis. Significant amount of decisions are made in the present of R&amp;amp;D members. The people you manager wants to know that you are capable to decide within timely fashion. As an R&amp;amp;D manager you won't have the luxury of sitting on the fence for very long. Your staff looks to you for yes, no, left, and right decisions, otherwise you are giving the signal that you are not really in control. In this situation your staff will feel out of control too. Think in a practical way. Ask your self questions like: do we really need this? What will be the benefit?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Time, Task and Risk management:&lt;/strong&gt; Think in a practical way; think about the result; about the outcome. Ask your self questions like: do we really need this? What will be the benefit? Plan: Any plan is better than no plan, since no plan doesn't lead anywhere. Constantly monitors progress for the duration of the project. Delegating: sharing tasks and authority with your team. Allocate the right task to the right people. Think about the risks and threats. Try to identifying the problems before they flack in your face. Investigate mishaps and mistake and correct them constructively, do not look for someone to blame. The R&amp;amp;D Manager is not a one man show he is the conductor of the orchestra. Concentrate on your champions they are the one who will help you to move the mountain. Embrace a developing life cycle that helps to manufacture products/releases in short intervals. In this way the project stay relevant and adjustable for market needs. Interact with the customers as much as you can.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Leader of technology:&lt;/strong&gt; Good knowledge of the product context. Become an authority so employees can feel free to ask you questions. Be a professional, understand where does the company is going and practice and implement the vision into day to day work. Understand the business the competitors and customers. Without lowering the importance of the rest of the characteristics the only way to create real differentiation from the competitors and to be relevant to the market is through deep knowledge of the technology on hand.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Honesty and self integrity: Be humble. Think about your worker. Not a long time ago you where a simple worker too. Remember what your expectations from your managers were. Think about giving before you request for yourself. Be an example – work hard. Shows that you are really care. Seek for the opportunities to give compliment for a hard and good work done by others; even if you are the one who was deeply involved. Give credit is the best way to receive one in the future. Flexibility: The ability to bend but not break. The R&amp;amp;D Manager interacts with significant amount of employees within and outside the R&amp;amp;D department. He had to have the ability to observe criticism, bad behavior and unpleasant decisions that he doesn't agree with. The ability to see the big picture and to move on when needed is very important. When mishap happen do not look for someone to blame take responsibility and move on. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;strong&gt;A people person – Leader of people:&lt;/strong&gt; Listen, Listen and Listen. Direct and guide. Learn to see thing in your staff eyes. Think about their career development. No one can move the mountain by himself it can only be done with the help of group of people that do so in coordination. Make sure that every single one of your staff know the roadmap and understand where the company is going. Avoid pressure and maintain a routine where people don't work to easy and not to hard either. Encourage your staff to criticize and to put everything on the table.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Constant innovator:&lt;/strong&gt; Think out of the box. Think about new features that creates real differentiation from competitor products. Improve workflows. Create a brainstorms team force.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3855749445209325267-4593237907413870701?l=0rencs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://0rencs.blogspot.com/feeds/4593237907413870701/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3855749445209325267&amp;postID=4593237907413870701' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/4593237907413870701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/4593237907413870701'/><link rel='alternate' type='text/html' href='http://0rencs.blogspot.com/2007/12/what-are-expectations-from-r-manager.html' title='What are the expectations from R&amp;D Manager?'/><author><name>Oren Cohen Shwartz</name><uri>http://www.blogger.com/profile/01764416806072976347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://bp2.blogger.com/_0cKmG4rtOYs/R2mJNgjpx3I/AAAAAAAAFIM/NImxqNlBgMA/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3855749445209325267.post-953713701691234383</id><published>2007-12-19T22:48:00.001+02:00</published><updated>2010-12-21T08:45:16.776+02:00</updated><title type='text'>Customers Always Wants Stuff Tomorrow</title><content type='html'>&lt;p&gt;&lt;span style="font-family:times new roman;"&gt;Customers want the stuff tomorrow because they need it ASAP for their business.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:times new roman;"&gt;One can’t blame the customer urgency.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:times new roman;"&gt;Accept for the work they cause a real customer is fantastic for the R&amp;amp;D Manager.&lt;br /&gt;The entire R&amp;amp;D department work better for features that a certain customer requested.&lt;br /&gt;R&amp;amp;D people tends to work better if they have a context. For example: "We need to design and develop a  feature for important customer named ccc...". The R&amp;amp;D manager then need to give information about the talk about customer, why it is important for the company and then to talk about the crucial feature that it is required ASAP.&lt;br /&gt;At that point all the involved R&amp;amp;D members knows the big picture. They are involved and more committed for the task.&lt;br /&gt;Moreover, Software Engineer love to work on a feature that they are sure that someone wants and going to use. Finish the task on time grant a sense of accomplishments. In this kind of atmosphere it is much more easy to make employees agreed with harsh deadlines and keep customers happy.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:times new roman;"&gt;Note: Saying the above, does not mean that the R&amp;amp;D department must handle any customer request and in any deadline. It is a management decision what to do, when to do it and which tasks is getting out in order to let the new one get in.&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:times new roman;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3855749445209325267-953713701691234383?l=0rencs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://0rencs.blogspot.com/feeds/953713701691234383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3855749445209325267&amp;postID=953713701691234383' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/953713701691234383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3855749445209325267/posts/default/953713701691234383'/><link rel='alternate' type='text/html' href='http://0rencs.blogspot.com/2007/12/customers-always-wants-stuff-tomorrow.html' title='Customers Always Wants Stuff Tomorrow'/><author><name>Oren Cohen Shwartz</name><uri>http://www.blogger.com/profile/01764416806072976347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://bp2.blogger.com/_0cKmG4rtOYs/R2mJNgjpx3I/AAAAAAAAFIM/NImxqNlBgMA/S220/me.jpg'/></author><thr:total>0</thr:total></entry></feed>
