Why Projects Fail ??

October 15, 2009

1.Insufficient resource

The Project Manager was given insufficient resources and budget at the start of the project. If you don’t have the level of resources or budget you need, then tell your Project Sponsor quickly.


2.Impossible deadlines

The deadline for the project was always impossible to achieve. The Project Manager should have told the sponsor at the start of the project and fought to have the deadline extended. You not only need to have sufficient time to deliver your project, but you also need contingency in case things take longer than expected.

3.Poor communication
The Project Manager fails to communicate the status of the project to the team and sponsor. So everyone thinks the project is going smoothly until the deadline is missed. You need to tell people early if its slipping. Don’t hide it. By telling people you’re running late, you give them the opportunity to help get it back on track.

4.Lack of focus
The team don’t really know what is expected of them, so they lack focus. They are given a job to do but not told what is required and by when. Everyone in your team should have regular goals to meet, they should have deadlines and you should be monitoring their progress at every step in the journey.

5.Low morale
The project team lack motivation, so nothing is delivered on time. If you want someone to deliver within a set timeframe, then you need to motivate them to do it through reward and recognition. And you need to be highly motivated yourself. Only by being healthy, relaxed and truly motivated can you inspire others to be.

6.Sponsor support
The Project Manager gets very little support from their sponsor. There is no-one available to help solve problems or provide further resource or money when it’s needed. If you lack sponsor support, then you need to tell your Project Sponsor about it. Be open and frank with them. Tell them what you need and by when.

7.Scope creep
The scope of the project keeps changing, so you never really have a fixed set of deliverables. Every time it changes, you lose time and resource, so Change Control is critical. The scope needs to be clearly defined and then a process put in place to ensure that change requests are formally approved.

8.Lengthy timeframes
The project timescale may simply be too long. Over time your customer’s requirements will change, so you need to break your project into smaller chunks and deliver each as a project on its own.

9.Lack of tools
Not having the right tools to get the job done can also be a problem. Using good quality tools such as templates, processes and a project methodology will lead to project success.

10.Customer involvement
Lack of customer involvement has proved fatal on many projects. You need to involve your customer throughout the project to ensure that what you are building will meet their requirements. Remember, only if your customer is truly satisfied will your project be a success.

source : method123.com

Project Management Documentation

October 9, 2009

Initiation

  • Business Case: To justify the financial investment in your project, you need to write a Business Case. It lists the costs and benefits, so everyone knows what the return on investment will be.
  • Feasibility Study: Before you kick-off your project, you need to determine whether your project is feasible, using a Feasibility Study.
  • Project Charter: You then need to document the objectives, scope, team, timeframes and deliverables in a Project Charter.

Planning

  • Project Plan: You need to create a Project Plan listing all of the tasks required to undertake your project from start to finish. Every task must be scheduled, so you know what needs to be done and when.
  • Resource Plan: Next, you need to plan your resources by documenting the money, equipment and materials needed for your project.
  • Quality Plan: You then need to set quality targets, so that the project deliverables meet the expectations of your customer.
  • Risk Plan: All of the risks need to be documented and their likelihood and impact on the project identified.
  • Communication Plan: You need to plan your communications, so that you send the right messages to the right people, at the right time.

Execution

  • Time Management: You need to use Timesheets to track time spent on your project. Then update your Project Plan with your Timesheet data to see whether your project is still within schedule.
  • Cost Management: Track your costs using Expense Forms. Every expense is formally logged and approved, so that you can confirm at any time that you are currently under budget.
  • Change Management: Document each change to the project scope, using Change Forms. You can then control change to ensure your project is always on track.
  • Risk Management: Use Risk Forms to document each risk to the project. You can then manage project risk carefully to ensure that nothing happens that will affect the project schedule or budget.
  • Issue Management: As each issue occurs on the project, you need to investigate its impact on the project and then write it up on an Issue Form. You can then kick off the tasks needed to resolve it quickly.

Closure

  • Project Closure Report: When your project is complete, document all of the actions needed to close the project properly. This includes releasing teams and suppliers, equipment and materials.
  • Post Project Review: And after your project has been closed, you can review its success and document the results for your sponsor. That way, you can show that all of the objectives were met and that the project was delivered on time and within budget.

source : method123.com

The Business Model

October 2, 2009

Business model converts innovation to economic value for the business. The business model spells-out how a company makes money by specifying where it is positioned in the value chain. It draws on a multitude on business subjects including entrepreneurship, strategy, economics, finance, operations, and marketing.
Simply put, a business model describes how a business positions itself within the value chain of its industry and how it intends to sustain itself, that is to generate revenue.
Chesbrough and Rosenbloom list the following six components of the business model:

  1. Value proposition – a description the customer problem, the product that addresses the problem, and the value of the product from the customer’s perspective.
  2. Market segment – the group of customers to target, recognizing that different market segments have different needs. Sometimes the potential of an innovation is unlocked only when a different market segment is targeted.
  3. Value chain structure – the firm’s position and activities in the value chain and how the firm will capture part of the value that it creates in the chain.
  4. Revenue generation and margins – how revenue is generated (sales, leasing, subscription, support, etc.), the cost structure, and target profit margins.
  5. Position in value network – identification of competitors, complementors, and any network effects that can be utilized to deliver more value to the customer.
  6. Competitive strategy – how the company will attempt to develop a sustainable competitive advantage, for example, by means of a cost, differentiation, or niche strategy.

Business Model for the Xerox Copier

Chesbrough and Rosenbloom illustrate the importance of the business model with a case study of Xerox Corporation’s early days in the copy machine business with its Xerox Model 914 copier. (Before changing its name to Xerox Corporation, the company was known as the Haloid Company and then Haloid Xerox Inc.)

The Model 914 used the relatively new electrophotography process, which is a dry process that avoids the use of wet chemicals. In seeking potential marketing partners, Haloid repeatedly was turned down by the likes of Kodak, GE, and IBM, who had concluded that there was no future in the technology as seen through the lens of the then-prevalent business model. While the technology was superior to earlier copy methods, the cost of the machine was six to seven times more expensive than alternative technologies. The model of selling the equipment below cost and making up the difference by large margins in the sale of supplies was not viable because the cost of the supplies was about the same as that of the alternatives, so there was little room to maneuver.

Xerox then decided to market the new product itself and developed a new business model to do so. The new model leased the equipment to the customer at a relatively low cost and then charged a per copy fee for copies in excess of 2000 copies per month. At that time, the average business copier produced an average of only 15-20 copies per day. For this model to be profitable to Xerox, the use of copies would have to increase substantially.

Fortunately for Xerox, the quality and convenience of the new copy technology proved itself and companies began to make thousands of copies per day. As a result, Xerox sustained a compound annual growth rate of 41% over a 12 year period. Without this business model, Xerox might not have been successful in commercializing the innovation.

Source : http://www.quickmba.com/entre/business-model/

The ‘Seven Laws of Projects’

October 2, 2009

The post comes from Matthew E. May, author of In Pursuit of Elegance: Why the Best Ideas Have Something Missing, who describes what he calls the Seven Laws of Projects:

  1. A major project is never completed on time, within budget, or with the original team, and it never does exactly what it was supposed to.
  2. Projects progress quickly until they become 85% complete. Then they remain 85% complete forever. Think of this as the Home Improvement Law.
  3. When things appear to be going well, you’ve overlooked something. When things can’t get worse, they will. (Murphy’s Law says, “If something can go wrong, it will”—this is a corollary).
  4. Project teams hate weekly progress reports because they so vividly manifest the lack of progress.
  5. A carelessly planned project will take three times longer to complete than expected. A carefully planned project will only take twice as long as expected. Also, ten estimators will estimate the same work in ten different ways. And one estimator will estimate ten different ways at ten different times.
  6. The greater the project’s technical complexity, the less you need a technician to manage it.
  7. If you have too few people on a project, they can’t solve the problems. If you have too many, they create more problems than they can solve.

These laws have nothing to do with technology or IT, which makes sense because failure rarely does. To understand failed projects we need to look into dimensions of collaboration, relationships, and management.

Why do failed projects persist? Because it’s easier to fix bugs than to be ruthlessly honest with the team, the project and, most especially, with oneself. And that’s the truth… think about it.

Source : http://blogs.zdnet.com/projectfailures/?p=6155

Social media an inviting target for cybercriminals

October 1, 2009

Info tanggal lahir, apa yang sedang dikerjakan, posisi saat ini, ikut polling, quiz, dll yang kita tulis/ikuti di Social media mengundang kejahatan cyber ???


Kenapa ?

1. Ada pihak yang ingin kita meng-klik link yagn mereka kirim, yang akan membuatnya dibayar
2. Ada pihak yang ingin mencuri password atau identitas lainnya
3. Ada pihak yang ingin mengakses komputer atau data pribadi kita.

Bagaimana caranya ?
1. Pura pura menjadi orang yang kita kenal dan kemudian meminta kita klik link lalu meminta kita mengisi data pribadi. Kemudian mereka akan mengirim link ke teman teman kita dengan tehnik yang sama.
2. Kita kita update twitter/fb bahwa kita sedang berlibur (tidak dirumah), pencuri membobol rumah kita yang sedang kosong.
3. Data kuis/quesioner yang kita isi di internet, dapat dijual/share oleh pihak yang tidak bertanggung jawab.
4. dll

Pencegahan ?
1. Membatasi hak akses data pribadi kita di internet
2. Batasi jumlah teman dalam network. Hanya teman yang kita percaya / kenal
3. dll

Sumber : www.cnn.com

Google Wave

September 30, 2009

Google Wave is an online tool for real-time communication and collaboration. A wave can be both a conversation
and a document where people can discuss and work together using richly formatted text, photos, videos, maps, and more.

What is a wave?

A wave is equal parts conversation and document. People can communicate and work together with richly formatted text, photos, videos, maps, and more.

A wave is shared. Any participant can reply anywhere in the message, edit the content and add participants at any point in the process. Then playback lets anyone rewind the wave to see who said what and when.

A wave is live. With live transmission as you type, participants on a wave can have faster conversations, see edits and interact with extensions in real-time.

Some key technologies in Google WaveReal-time collaboration

Real-time collaboration

Concurrency control technology lets all people on a wave edit rich media at the same time.

Natural language tools

Server-based models provide contextual suggestions and spelling correction.

Extending Google Wave

Embed waves in other sites or add live social gadgets

Source : http://wave.google.com

Meningkatkan Leadership Skill

February 27, 2009

Beberapa langkah yang dpt digunakan untuk meningkatkan kemampuan memimpin :

1. self-esteem

Orang akan memiliki keinginan bekerja yang tinggi apabila ia merasa dianggap penting. Untuk itu, seorang pemimpin harus mampu membuat pegawainya memiliki self-esteem yang baik. Pemimpin harus mampu membuat karyawannya merasa penting dengan berbagai cara, spt : memberi pujian, tepukan pada bahu untuk kerja mereka yang baik, apresiasi atas ide, dan lain sebagainya.

2. Planning

Perencanaan sangat penting karena akan memberikan arahan untuk mencapai tujuan yang telah ditentukan.

3. Motivasi

Dapat dilakukan dengan beberapa cara : memberikan public recognition , memberikan challenges untuk bertumbuh, maupun pemberian bonus, insentif, dan lain sebagainya.

4. Delegasi

Jangan terlalu focus pada hal yang detail. Percayakan hal detail pada bawahan dan beri waktu pada diri anda sendiri untuk membuat rencana dan supervisi.

5. Empowerment

Hal ini berhubungan dengan delegasi. Buat bawahan anda merasa mendapat respek dan mereka memiliki tanggung jawab terhadap pekerjaan mereka.

Dari beberapa hal diatas, kemampuan anda mengenali kebutuhan perusahaan dan kemampuan anda beradaptasi untuk memenuhi kebutuhan itu sendiri juga tidak kalah pentingnya.

Sumber : http://www.streetdirectory.com/travel_guide/21507/leadership/five_principles_to_improve_your_leadership_skills.html

10 PHP Mistakes

February 27, 2009

1. Single quotes, double quotes
# $howdy = ‘everyone’;
# $foo = ‘hello $howdy’;
# $bar = “hello $howdy”;

$foo outputs to “hello $howdy” and $bar gives us “hello everyone”. That’s one less step that PHP has to process. It’s a small change that can make significant gains in the performance of the code.

2. Semicolon after a While
$i = 0;
while($i < 20); {
//some code here
$i++;
}

Omit the ; after the while statement, and your code is in the clear.

3. NOT Using database caching
If you’re using a database in your PHP application, it is strongly advised that you at least use some sort of database caching. Memcached has emerged as the most poplar caching system, with mammoth sites like Facebook endorsing the software.

Memcached is free and can provide very significant gains to your software. If your PHP is going into production, it’s strongly advised to use the caching system.

4. Missing Semicolon After a Break or a Continue
Like #2, a misused semicolon can create serious problems while silently slipping off into the shadows, making it quite difficult to track the error down.

If you’re using a semicolon after a “break” or “continue” in your code, it will convince the code to output a “0″ and exit. This could cause some serious head scratching. You can avoid this by using braces with PHP control structures (via CodeUtopia).

5. Not Using E_ALL Reporting
Error reporting is a very handy feature in PHP, and if you’re not already using it, you should really turn it on. Error reporting takes much of the guesswork out of debugging code, and speeds up your overall development time.

While many PHP programmers may use error reporting, many aren’t utilizing the full extent of error reporting. E_ALL is a very strict type of error reporting, and using it ensures that even the smallest error is reported. (That’s a good thing if you’re wanting to write great code.)

When you’re done developing your program, be sure to turn off your reporting, as your users probably won’t want to see a bunch of error messages on pages that otherwise appear fine. (Even with the E_ALL error reporting on they hopefully won’t see any errors anyway, but mistakes do happen.)

6. Not Setting Time Limits On PHP Scripts
When PHP scripts run, it’s assumed that they’ll eventually finish in a timely manner. But every good programmer knows that nothing should be assumed in a piece of code. Nothing makes a program crankier than an unresponsive script.

You can get around this issue by simply setting a time limit on the script (set_time_limit). While it may seem like a trivial thing, it’s always clever to prepare for the worst.

7. Not Protecting Session ID’s
A very common PHP security mistake is not protecting session ID’s with at least some sort of encryption. Not protecting these Session ID’s is almost as bad as giving away a user’s passwords. A hacker could swoop in and steal a session ID, potentially giving him sensitive information. MT Soft an example of how to protect Session ID’s with sha1:

if ($_SESSION['sha1password'] == sha1($userpass)) {   // do sensitive things here

}

Adding the shai1 to the ($userpass) gives an added bit of security to the session. Sha1 isn’t a bulletproof method, but it’s a nice barrier of security to keep malicious users at bay.

8. Not Validating Cookie Data
How much trust do you put into cookies? Most people don’t think twice about the seemingly-harmless bit of data that’s passed by a cookie. The name “cookie” itself is associated Milk, nap time and Santa, for crying out loud! How could a cookie possibly harmless?

If you’re not validating cookie data, you’re opening your code to potential harmful data. You should use htmlspecialchars() or mysql_real_escape_string() to validate the cookie before storing it in a database.

9. Not Escaping Entities
Many times PHP programmers are too trusting with data, especially data generated by user. It’s imperative to sanitize data before it goes into any sort of storage, like a database.

Source Rally shows us how to correctly escape entities in things like forms. Instead of using this:

echo $_GET['username'];

You can validate the data by using htmlspecialchars() (or htmlentities()) like so:

echo htmlspecialchars($_GET['username'], ENT_QUOTES);

10. Using Wrong Comparison Operators
While comparison operators are an extremely basic part PHP programming, mixing these up in your code is certain to bork your program. As the German proverb states, the Devil is in the details.

Being familiar with the often-misused operators like =, ==, != , are absolutely critical to PHP programming. Taking the time to really understand the differences will greatly speed up your programming and yield less bugs to debug.

Sumber : http://net.tutsplus.com/articles/are-you-making-these-10-php-mistakes/

PHP Benchmark

February 27, 2009

1. For-loop test

Cth. “for ($i=0; $i<$size; $i++)”  dibandingkan “for ($i=0; $i<sizeOf($x); $i++)”

loop 1000 x,

With pre calc – count()                               Total time: 117 µs
Without pre calc – count()                           Total time: 49465 µs
With pre calc – sizeof()                               Total time: 117 µs
Without pre calc – sizeof()                           Total time: 48491 µs
2. Menggunakan =& -ref-operator

$obj = new SomeClass();                            Total time: 522 µs

$obj =& new SomeClass();                          Total time: 546 µs

3. echo VS print

echo ”                                                                    Total time: 87 µs
print ”                                                                    Total time: 101 µs
echo ‘aaaaaaaaaaaaaaaaaaaaaaaaaaaa’                   Total time: 112 µs
print ‘aaaaaaaaaaaaaaaaaaaaaaaaaaaa’                   Total time: 130 µs
echo ‘aaaaaaa’.'aaaaaaa’.'aaaaaaa’.'aaaaaaa’             Total time: 119 µs
echo ‘aaaaaaa’,'aaaaaaa’,'aaaaaaa’,'aaaaaaa’             Total time: 292 µs
print ‘aaaaaaa’.'aaaaaaa’.'aaaaaaa’.'aaaaaaa’             Total time: 146 µs
$a = ‘aaaaaaa’;
echo ‘aaaaaaa’.$a.’aaaaaaa’.$a                                 Total time: 412 µs
$a = ‘aaaaaaa’;
echo ‘aaaaaaa’,$a,’aaaaaaa’,$a                                 Total time: 382 µs
$a = ‘aaaaaaa’;
print ‘aaaaaaa’.$a.’aaaaaaa’.$a                                 Total time: 422 µs
$a = ‘aaaaaaa’;
echo $a.$a.$a.$a                                                     Total time: 408 µs
$a = ‘aaaaaaa’;
echo $a,$a,$a,$a                                                     Total time: 372 µs
$a = ‘aaaaaaa’;
print $a,$a,$a,$a                                                     Total time: 422 µs

4. foreach vs for vs while (list() = each())

Given is a Hash array with 100 elements, 24byte key and 10k data per entry

foreach($aHash as $val);                                          Total time: 11 µs

while(list(,$val) = each($aHash));                            Total time: 78 µs

foreach($aHash as $key => $val);                            Total time: 15 µs

while(list($key,$val) = each($aHash));                      Total time: 93 µs

foreach($aHash as $key=>$val) $tmp[] = $aHash[$key];      Total time: 33 µs

while(list($key) = each($aHash)) $tmp[] = $aHash[$key];     Total time: 93 µs

Get key-/ value-array: foreach($aHash as $key[]=>$val[]);  Total time: 41 µs

Get key-/ value-array: array_keys() / array_values()             Total time: 30 µs

$key = array_keys($aHash);
$size = sizeOf($key);
for ($i=0; $i<$size; $i++) $tmp[] = $aHash[$key[$i]];        Total time: 42 µs

5. for VS while

for($i = 0; $i < 1000000; ++$i);                                      Total time: 58487 µs

for($i = 0; $i < 1000000; ++$i);                                      Total time: 58487 µs

6. Double Quotas vs Single Quotas

Call 1′000x

single (‘) quotes. Just an empty string: $tmp[] = ”;               Total time: 249 µs

double (“) quotes. Just an empty string: $tmp[] = “”;            Total time: 220 µs

7. switch /Case/default VS if/elseif/else

Call 1′000x

if and elseif (using ==)                                                    Total time: 174 µs

if and elseif (using ==)                                                    Total time: 174 µs

if and elseif (using ===)                                                  Total time: 102 µs

if, elseif and else (using ===)                                           Total time: 102 µs

switch / case                                                                   Total time: 160 µs

switch / case / default                                                      Total time: 173 µs

8. foreach vs for vs while (list() = each())

Given again is a Hash array with 100 elements, 24byte key and 10k data per entry.

foreach($aHash as $key=>$val) $aHash[$key] .= “a”;        Total time: 367 µs

while(list($key) = each($aHash)) $aHash[$key] .= “a”;       Total time: 91 µs

$key = array_keys($aHash);
$size = sizeOf($key);
for ($i=0; $i<$size; $i++) $aHash[$key[$i]] .= “a”;          Total time: 38 µs

10. $obj = $someClass->f() vs. $obj =& $someClass->f()

Call 1′000x

$obj = $someClass->f();                Total time: 362 µs

$obj =& $someClass->f();              Total time: 844 µs

Sumber : http://phpbench.com/

Contoh script membaca file import (txt file)

February 20, 2009

<?
/*
File ini akan mengambil text files dan menampilkannya di layar
*/
if ($_POST[Submit]==”Import”) {
$fd = fopen($_FILES["userfile"]["tmp_name"],”r”);
while (!feof($fd)) {
$buffer     = fgets($fd, 4096);
$tmp_data    = split(“\t”, $buffer);
for ($i=0; $i<count($tmp_data); $i++) {
echo $tmp_data[$i].” – “;
}
echo “<br>”;
}
}
?>
<form enctype=”multipart/form-data” method=”post”>
<table>
<tr>
<td>Nama File </td>
<td><input type=”file” name=”userfile”></td>
</tr>
<tr>
<td colspan=”2″><input type=”submit” name=”Submit” value=”Import”></td>
</tr>
</table>
</form>