Tuesday, 3 September 2013


10 hard-earned lessons of a lifetime in IT



Here are 10 things I wish I knew as an IT newbie.

1. They’re called 'fundamentals' for a reason
Technology is in constant flux, and success in IT means keeping on top of new developments as they evolve. But it's not only unnecessary to learn everything -- it's impossible.
Concentrate on the fundamentals. These will serve you much better than detailed knowledge of the internal workings of transient hardware and software.
In the early 1980s, I knew almost everything about how the Apple IIe worked, to the point of rewriting the low-level disk drivers to make them more efficient. Then the IBM PC came out. I enjoyed it, of course, but the reusable knowledge in this experience would have been more easily obtained from a textbook on operating system principles.
2. Marketing is not evil
Well, it doesn't have to be evil.
When you communicate the value of your work to employers, clients, or coworkers, you are doing the work of marketing. And it's not just for folks looking to open their own business. If you ever pitch a project or feature idea in a meeting, an understanding of marketing will be far more valuable than fluency in any programming language. It also helps when you realize that your résumé is actually a sales brochure and the product is you.
All of my writing skills were improved significantly, and quickly, by studying marketing and copywriting. And I've learned that knowing how to be persuasive upfront when it counts is far more valuable than being right in hindsight.
3. Learn the difference between opportunity and distraction
Opportunities are everywhere, but so are distractions. To an IT pro, technology can be very seductive, especially new technology -- or obscure problems.
Learning about the business you're working with allows you to see past the tech into the heart of what is necessary for your company, enabling you to add unexpected value. Re-inventing object-oriented computing while trying to cram a 2D CAD system into a Commodore 64 may seem like an opportunity to demonstrate your brilliance, but it's better to make sure your hard work is on something meaningful. Believe me, I now know.
Honing your understanding of technology's place in business also helps you see opportunities outside of your job, which is how your career really grows.
4. If you don't have a contract, you don't have a job
Even the best employers or clients have occasional payment hiccups. Trust, but verify -- in writing -- and don't start work without a deposit.
I once agreed to do a rewrite of an application from Basic to Assembly language in three months and asked a friend to help me. After delivery, the client was delighted with the results, but didn't pay us. A contract lawyer might have cost a couple of hundred dollars. More important, knowing in advance that the client was unwilling to sign a contract would have prevented a $25,000 loss.
There are few lessons harder learned than those that touch your livelihood.
5. MBAs know what's best -- for themselves, not for you
You'd like to think that anyone with a higher-education degree wearing a suit knows what's best. They do know what's best -- for them, not for you.
Don't let your success depend on empty suits, empty promises, or snake-oil salesmen. It's far too easy to wait: to be selected, to be noticed, to be promoted, to be appreciated. We’re trained from childhood to trust authority figures, respect elders, and believe that we're all in this together. But when your 90-hour workweek architecting the product, coding the kernel, and managing a staff of 25 developers suddenly evaporates because the fraud of a CEO found out you got wise to his routine sabotaging of your team's work, you learn real quick that business can get dirty.
6. Recognize the patterns before they bite you
Many "executive" decisions are made accidentally, or for bizarre reasons that have nothing to do with the problem, the solution, logic, technology, economics, or you. Don't take it personally, but if you detect a consistent pattern of poor leadership, questionable choices, or shortchanging IT input, then get out of there quickly.
Especially when a company rarely has a fallback plan despite your rumblings, then it's high time to have a Plan B of your own.
Oh, and when the owner of a startup keeps asking for more and assures you "we'll take care of you," this does not mean what you think it means.
7. Relational database normalization will teach you clarity and economy of thought
I'm not kidding. This topic gets short shrift in most college courses, but is a foundational design philosophy for structuring information, recognizing patterns (especially missing elements), and identifying dependencies.
The point is not to know how to normalize poorly structured database tables (which is what most college exercises dwell on); the point is to learn to quickly identify entities and relationships, and to think and design in minimal, nonredundant structures.
Functional dependency is the Tai Chi Chuan of software development. Master it. Stumbling upon and studying the work of Edgar Codd and Chris Date was the single most important turning point in my career as a software designer.
8. Get your head out of tech (to be truly inspired)
Inspiration and insight can come from anywhere. And if there's anything I've learned about technology, it's that you have to turn off the machines sometimes to truly understand them.
For example, writing science fiction helped me realize something hiding in plain sight about writing software: You imagine something that doesn't exist, then work backward from first principles to figure out how it might be possible.
Here, reading is essential. And not just tech news and nerd magazines. Business, finance, fiction, non-fiction, biographies -- your mind always expands when you expand your sphere of knowledge.
Plus, reading (and writing) helps you learn how to organize your work, present ideas, express thoughts clearly and succinctly, and observe and improve yourself in the workplace.
9. Let your eyes wander
Don't let yourself get pigeonholed or buried for more than a few months on a project; otherwise, when you resurface, the tech world will have changed.
The IT field is vast. Look outside your current job every once in a while to stave off boredom and ossification.
Early on, I became extremely bored writing the same kinds of applications over and over. Fortunately, I happened onMarvin Minsky's work and realized there was far more to programming than what I had been doing; I haven't been bored since.
Then, after five years working with one very interesting technology, I came up for air and found all the cool kids were talking about some newfangled thing called the Internet. Good thing I looked up.
10. IT is more about people than you think
Tools come and go, but people stick. In fact, contrary to what you might think, people are the most important aspect of IT work.
The thrill of writing code to solve a problem is addictive, but short-lived. The satisfaction from making life better for the people who use your software is much more powerful and lasts far longer.
Do yourself a favor and get over yourself. Appreciate the work of others out loud. Share credit generously. Listen thoughtfully -- to colleagues, managers, especially clients and customers.
I like gadgets and problem-solving and inventing things, of course. It was the essential kernel that drew me to this field, but I was surprised to find out that I like people even more.
By Steven A. Lowe

Monday, 2 September 2013

The Most Common Communication Mistakes Project Managers Make


The Most Common Communication Mistakes Project Managers Make 
share by shahbaz shaikh
Don’t get me wrong! A lot of project managers are doing a fantastic job of organizing and delivering their projects and keeping their clients happy. But it’s probably still true, that the majority of PMs are stronger with the harder skills of creating plans and reports than with the softer skills of communicating and motivating people. The below mistakes are the ones I the most often see project managers make when it comes to the softer communication skills.

·   Speaking more than you listen
A big part of a project managers’ job is concerned with assigning work, resolving issues, coordinating activities and assessing progress. The pressure is on and they are busy getting everything done. In this process they often give orders and tell people what to do. Very few take the time to really connect with the individual; ask for input, listen, and check how their message has been understood. You shouldn’t just tell people what to do as that doesn’t empower or motivate anyone. Just think about the times when you have been on the receiving end of that. Instead, take the time to ask people how they are, what they make of the message you just gave them, what they worry about and how they feel the team could work smarter. Really listen to what they say. It will provide you lots of valuable information and strengthen the trust between you.

·   Communicating with the client in writing instead of face-to-face
Again and again I see project managers emailing their clients instead of speaking to them in person. Written communication is great for short messages without complexity, but should not be used simply because it’s more convenient or saves you having a difficult conversation. Many misunderstandings and disagreements are born because we don’t take the time to identify common ground with our clients and prepare them for what is coming.

·   Face-to-face communication is a must in situations where:
o You want to build trust and make sure you’re on the same page
o The stakes are high, for instance regarding an issue or a significant risk
o You sense disagreement or conflict
o You want to ask for advice or feedback
o You want to win your client’s support for an important matter
o You want to understand your client’s point of view and how to best communicate with them

·   Saying ‘yes’ when you really mean ‘no’
Many people feel pressurized to saying ‘yes’ when put on the spot and asked directly if they can deliver something– even if they haven’t had the time to properly assess what they’re saying yes to. This relates to anything from small promises of “I will send it to you straight away” to “yes, I’ll see if we can incorporate that extra feature into the next iteration!” Overpromising is a classic and very serious mistake which doesn’t serve anyone. The problem surfaces later when you realize that you can’t keep your promise and that it’s starting to affect your reputation. Instead, take time out by saying “Can I get back to you on that?” You can also offer alternatives by saying: “I can’t do A, but I can do B”.

·   Relying too heavily on the weekly status meeting
For many project managers the weekly status meeting is the primary way of communicating with the team. In this meeting the project manager enquires about progress and receives an update from each team member so that they can gauge how far the project has progressed. This type of status meeting is great for the project manager, but not necessarily for the team member who may feel it’s a waste of time. Make the status meeting short and focused on progress since last meeting and on blockages which you can help resolve. To engage each team member however, it’s essential that you set up one-2-one meetings where it’s all about them and their needs; not about what you need. Ask them what they most enjoy doing, what type of support they need from you and how you can help them work more effectively.

·   Providing too much and too detailed information
It is often assumed that the more detail we provide our bosses and stakeholders the better. But the truth is that we need to give them just the right amount of information and no more. When you send out a weekly status report or conduct a steering committee meeting, don’t overload the recipient with unnecessary detail. Highlight the good progress you have made, summarize risks and issues and how you are addressing them, and provide an update on the budget. Make it very clear if you need their input and decision on anything or if you’re merely providing an update. Detailed information should only be provided where they are in need of making a decision on something. Keep it simple and don’t use jargon. Your aim is to engage your audience and for this you need to communicate at their level of understanding. To download a free copy of a steering committee presentation, request access to the resources page here.

·   Failing to ask for feedback

It is human nature to avoid that which we feel is unpleasant – and that includes asking for feedback. You may fear that people will tell you something negative and therefore refrain from asking in the first place. But by not asking you’re doing yourself a big disfavor. Firstly you’re much better off knowing what people think about you and the project than not knowing; when you know you can do something about it and use the feedback to your advantage. In addition, you are likely to receive feedback about something which you’re doing really well and which you were not aware of. It will lift your spirits and enable you to build on your strengths. Why not try it? Ask people you respect; a) what you should stop doing b) what you should start doing and c) what you should continue to do. Nice and simple!


Alert Dialog Android

Aler Dialog Android 






Hi friends today we will se how to create simple alert dialog in Android.
Its very simple , we can create alert dailog with 1 , 2 or 3 buttons
here is sample code.


package com.example.dailogboxexample;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {
       Context context;

       @Override
       protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);

              context = this;

              Button button = (Button) findViewById(R.id.button1);
              button.setOnClickListener(new OnClickListener() {
                     @Override
                     public void onClick(View v) {

                           new AlertDialog.Builder(context)
                                         .setTitle("Alert Box ")
                                         .setMessage(
                                                       "Please check your Internet conection, and try again?")
                                         .setPositiveButton("Ok",
                                                       new DialogInterface.OnClickListener() {
                                                              public void onClick(DialogInterface dialog,
                                                                           int which) {

                                                                     Toast.makeText(context, "Ok Pressed", 1)
                                                                                  .show();
                                                              }
                                                       }).show();
                     }
              });

              Button button2 = (Button) findViewById(R.id.button2);
              button2.setOnClickListener(new OnClickListener() {
                     @Override
                     public void onClick(View v) {

                           new AlertDialog.Builder(context)
                                         .setTitle("Alert Box ")
                                         .setMessage(
                                                       "Please check your Internet conection, and try again?")
                                         .setPositiveButton("Yes",
                                                       new DialogInterface.OnClickListener() {
                                                              public void onClick(DialogInterface dialog,
                                                                           int which) {
                                                                     Toast.makeText(context, "Yes Pressed",
                                                                                  1).show();
                                                              }
                                                       })
                                         .setNegativeButton("No",
                                                       new DialogInterface.OnClickListener() {
                                                              public void onClick(DialogInterface dialog,
                                                                           int which) {
                                                                     // do nothing
                                                                     Toast.makeText(context, "No Pressed", 1)
                                                                                  .show();
                                                              }
                                                       }).show();
                     }
              });

              Button button3 = (Button) findViewById(R.id.button3);
              button3.setOnClickListener(new OnClickListener() {
                     @Override
                     public void onClick(View v) {

                           new AlertDialog.Builder(context)
                                         .setTitle("Alert Box ")
                                         .setMessage(
                                                       "Please check your Internet conection, and try again?")
                                         .setPositiveButton("Yes",
                                                       new DialogInterface.OnClickListener() {
                                                              public void onClick(DialogInterface dialog,
                                                                           int which) {
                                                                     Toast.makeText(context, "Yes Pressed",
                                                                                  1).show();
                                                              }
                                                       })
                                         .setNegativeButton("No",
                                                       new DialogInterface.OnClickListener() {
                                                              public void onClick(DialogInterface dialog,
                                                                           int which) {
                                                                     // do nothing
                                                                     Toast.makeText(context, "No Pressed", 1)
                                                                                  .show();
                                                              }
                                                       })
                                         .setNeutralButton("Cancel",
                                                       new DialogInterface.OnClickListener() {
                                                              public void onClick(DialogInterface dialog,
                                                                           int which) {
                                                                     // do nothing
                                                                     Toast.makeText(context,
                                                                                  "Cancel Pressed", 1).show();
                                                              }
                                                       }).show();

                     }
              });

       }
}


and here is xml file for buttons layout.


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/button3"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button2"
        android:layout_centerVertical="true"
        android:text="3 Button Alert" />

    <Button
        android:id="@+id/button2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/button3"
        android:layout_alignLeft="@+id/button1"
        android:text="2 Button Alert " />

    <Button
        android:id="@+id/button1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/button2"
        android:layout_alignParentLeft="true"
        android:text="1 Button Alert" />

</RelativeLayout>

simple :)
Happy Codding :)