Saturday, November 28, 2009

Project Management Control Systems

Project management control systems are the modern tools for managing project scope, cost and schedule. They are based on carefully defined process and document controls, metrics, performance indicators and forecasting with capability to reveal trends toward cost overrun and/or schedule slippage. Identifying those trends early makes them more amenable to successful management.

Traditionally, management systems have utilized data about planned and actual costs. Modern systems further incorporate, in their analysis of projects and tasks, the monetary value earned for actual work accomplished.
  1. They analyze the Planned Value of work scheduled (PV),
  2. Actual Cost of work performed (AC),
  3. and Earned Value of work performed (EV).

Forecasting includes cumulative and incremental trends in key indicators such as the

  • Estimate at Completion (AC + Estimate to Complete),
  • Cost Variance (EV – AC),
  • Schedule Variance (EV – PV),
  • Cost Performance Index (EV/AC),
  • and Schedule Performance Index (EV/PV).

Earned Value Management (EVM) is a systematic approach to the integration and measurement of cost, schedule and scope accomplishments on a project or task, providing managers the ability to examine cost data in the context of detailed schedule information and critical program and technical milestones.

EVM systems are in use by IT service providers, leading project delivery contractors in commercial industry and government service. ( works in any sphere )

***

Nothing is perfect in this world of chaos.

So to bring orderliness, something has to be scratched from bottom up.

Every step of the way in any development or project completion gets monitored and reported.

It gives a sense of feeling while work gets done.

The guy who monitors - Program Manager ( multiple projects ) or Project Manager ( single project ) with tons of resources should be using various learned tools, gained experience, of the scope of the project.

Friday, November 6, 2009

Startups - what they really are

This is credited from here... http://www.paulgraham.com/really.html

1. Be Careful with Cofounders

This was the surprise mentioned by the most founders. There were two types of responses: that you have to be careful who you pick as a cofounder, and that you have to work hard to maintain your relationship.

What people wished they'd paid more attention to when choosing cofounders was character and commitment, not ability. This was particularly true with startups that failed. The lesson: don't pick cofounders who will flake.

Here's a typical reponse:
You haven't seen someone's true colors unless you've worked with them on a startup.
The reason character is so important is that it's tested more severely than in most other situations. One founder said explicitly that the relationship between founders was more important than ability:
I would rather cofound a startup with a friend than a stranger with higher output. Startups are so hard and emotional that the bonds and emotional and social support that come with friendship outweigh the extra output lost.
We learned this lesson a long time ago. If you look at the YC application, there are more questions about the commitment and relationship of the founders than their ability.

Founders of successful startups talked less about choosing cofounders and more about how hard they worked to maintain their relationship.
One thing that surprised me is how the relationship of startup founders goes from a friendship to a marriage. My relationship with my cofounder went from just being friends to seeing each other all the time, fretting over the finances and cleaning up shit. And the startup was our baby. I summed it up once like this: "It's like we're married, but we're not fucking."
Several people used that word "married." It's a far more intense relationship than you usually see between coworkers—partly because the stresses are so much greater, and partly because at first the founders are the whole company. So this relationship has to be built of top quality materials and carefully maintained. It's the basis of everything.

2. Startups Take Over Your Life

Just as the relationship between cofounders is more intense than it usually is between coworkers, so is the relationship between the founders and the company. Running a startup is not like having a job or being a student, because it never stops. This is so foreign to most people's experience that they don't get it till it happens. [1]
I didn't realize I would spend almost every waking moment either working or thinking about our startup. You enter a whole different way of life when it's your company vs. working for someone else's company.
It's exacerbated by the fast pace of startups, which makes it seem like time slows down:
I think the thing that's been most surprising to me is how one's perspective on time shifts. Working on our startup, I remember time seeming to stretch out, so that a month was a huge interval.
In the best case, total immersion can be exciting:
It's surprising how much you become consumed by your startup, in that you think about it day and night, but never once does it feel like "work."
Though I have to say, that quote is from someone we funded this summer. In a couple years he may not sound so chipper.

3. It's an Emotional Roller-coaster

This was another one lots of people were surprised about. The ups and downs were more extreme than they were prepared for.

In a startup, things seem great one moment and hopeless the next. And by next, I mean a couple hours later.
The emotional ups and downs were the biggest surprise for me. One day, we'd think of ourselves as the next Google and dream of buying islands; the next, we'd be pondering how to let our loved ones know of our utter failure; and on and on.
The hard part, obviously, is the lows. For a lot of founders that was the big surprise:
How hard it is to keep everyone motivated during rough days or weeks, i.e. how low the lows can be.
After a while, if you don't have significant success to cheer you up, it wears you out:
Your most basic advice to founders is "just don't die," but the energy to keep a company going in lieu of unburdening success isn't free; it is siphoned from the founders themselves.
There's a limit to how much you can take. If you get to the point where you can't keep working anymore, it's not the end of the world. Plenty of famous founders have had some failures along the way.

4. It Can Be Fun

The good news is, the highs are also very high. Several founders said what surprised them most about doing a startup was how fun it was:
I think you've left out just how fun it is to do a startup. I am more fulfilled in my work than pretty much any of my friends who did not start companies.
What they like most is the freedom:
I'm surprised by how much better it feels to be working on something that is challenging and creative, something I believe in, as opposed to the hired-gun stuff I was doing before. I knew it would feel better; what's surprising is how much better.
Frankly, though, if I've misled people here, I'm not eager to fix that. I'd rather have everyone think starting a startup is grim and hard than have founders go into it expecting it to be fun, and a few months later saying "This is supposed to be fun? Are you kidding?"

The truth is, it wouldn't be fun for most people. A lot of what we try to do in the application process is to weed out the people who wouldn't like it, both for our sake and theirs.

The best way to put it might be that starting a startup is fun the way a survivalist training course would be fun, if you're into that sort of thing. Which is to say, not at all, if you're not.

5. Persistence Is the Key

A lot of founders were surprised how important persistence was in startups. It was both a negative and a positive surprise: they were surprised both by the degree of persistence required
Everyone said how determined and resilient you must be, but going through it made me realize that the determination required was still understated.
and also by the degree to which persistence alone was able to dissolve obstacles:
If you are persistent, even problems that seem out of your control (i.e. immigration) seem to work themselves out.
Several founders mentioned specifically how much more important persistence was than intelligence.
I've been surprised again and again by just how much more important persistence is than raw intelligence.
This applies not just to intelligence but to ability in general, and that's why so many people said character was more important in choosing cofounders.

6. Think Long-Term

You need persistence because everything takes longer than you expect. A lot of people were surprised by that.
I'm continually surprised by how long everything can take. Assuming your product doesn't experience the explosive growth that very few products do, everything from development to dealmaking (especially dealmaking) seems to take 2-3x longer than I always imagine.
One reason founders are surprised is that because they work fast, they expect everyone else to. There's a shocking amount of shear stress at every point where a startup touches a more bureaucratic organization, like a big company or a VC fund. That's why fundraising and the enterprise market kill and maim so many startups. [2]

But I think the reason most founders are surprised by how long it takes is that they're overconfident. They think they're going to be an instant success, like YouTube or Facebook. You tell them only 1 out of 100 successful startups has a trajectory like that, and they all think "we're going to be that 1."

Maybe they'll listen to one of the more successful founders:
The top thing I didn't understand before going into it is that persistence is the name of the game. For the vast majority of startups that become successful, it's going to be a really long journey, at least 3 years and probably 5+.
There is a positive side to thinking longer-term. It's not just that you have to resign yourself to everything taking longer than it should. If you work patiently it's less stressful, and you can do better work:
Because we're relaxed, it's so much easier to have fun doing what we do. Gone is the awkward nervous energy fueled by the desperate need to not fail guiding our actions. We can concentrate on doing what's best for our company, product, employees and customers.
That's why things get so much better when you hit ramen profitability. You can shift into a different mode of working.

7. Lots of Little Things

We often emphasize how rarely startups win simply because they hit on some magic idea. I think founders have now gotten that into their heads. But a lot were surprised to find this also applies within startups. You have to do lots of different things:
It's much more of a grind than glamorous. A timeslice selected at random would more likely find me tracking down a weird DLL loading bug on Swedish Windows, or tracking down a bug in the financial model Excel spreadsheet the night before a board meeting, rather than having brilliant flashes of strategic insight.
Most hacker-founders would like to spend all their time programming. You won't get to, unless you fail. Which can be transformed into: If you spend all your time programming, you will fail.

The principle extends even into programming. There is rarely a single brilliant hack that ensures success:
I learnt never to bet on any one feature or deal or anything to bring you success. It is never a single thing. Everything is just incremental and you just have to keep doing lots of those things until you strike something.
Even in the rare cases where a clever hack makes your fortune, you probably won't know till later:
There is no such thing as a killer feature. Or at least you won't know what it is.
So the best strategy is to try lots of different things. The reason not to put all your eggs in one basket is not the usual one, which applies even when you know which basket is best. In a startup you don't even know that.

8. Start with Something Minimal

Lots of founders mentioned how important it was to launch with the simplest possible thing. By this point everyone knows you should release fast and iterate. It's practically a mantra at YC. But even so a lot of people seem to have been burned by not doing it:
Build the absolute smallest thing that can be considered a complete application and ship it.
Why do people take too long on the first version? Pride, mostly. They hate to release something that could be better. They worry what people will say about them. But you have to overcome this:
Doing something "simple" at first glance does not mean you aren't doing something meaningful, defensible, or valuable.
Don't worry what people will say. If your first version is so impressive that trolls don't make fun of it, you waited too long to launch. [3]

One founder said this should be your approach to all programming, not just startups, and I tend to agree.
Now, when coding, I try to think "How can I write this such that if people saw my code, they'd be amazed at how little there is and how little it does?"
Over-engineering is poison. It's not like doing extra work for extra credit. It's more like telling a lie that you then have to remember so you don't contradict it.

9. Engage Users

Product development is a conversation with the user that doesn't really start till you launch. Before you launch, you're like a police artist before he's shown the first version of his sketch to the witness.

It's so important to launch fast that it may be better to think of your initial version not as a product, but as a trick for getting users to start talking to you.
I learned to think about the initial stages of a startup as a giant experiment. All products should be considered experiments, and those that have a market show promising results extremely quickly.
Once you start talking to users, I guarantee you'll be surprised by what they tell you.
When you let customers tell you what they're after, they will often reveal amazing details about what they find valuable as well what they're willing to pay for.
The surprise is generally positive as well as negative. They won't like what you've built, but there will be other things they would like that would be trivially easy to implement. It's not till you start the conversation by launching the wrong thing that they can express (or perhaps even realize) what they're looking for.

10. Change Your Idea

To benefit from engaging with users you have to be willing to change your idea. We've always encouraged founders to see a startup idea as a hypothesis rather than a blueprint. And yet they're still surprised how well it works to change the idea.
Normally if you complain about something being hard, the general advice is to work harder. With a startup, I think you should find a problem that's easy for you to solve. Optimizing in solution-space is familiar and straightforward, but you can make enormous gains playing around in problem-space.
Whereas mere determination, without flexibility, is a greedy algorithm that may get you nothing more than a mediocre local maximum:
When someone is determined, there's still a danger that they'll follow a long, hard path that ultimately leads nowhere.
You want to push forward, but at the same time twist and turn to find the most promising path. One founder put it very succinctly:
Fast iteration is the key to success.
One reason this advice is so hard to follow is that people don't realize how hard it is to judge startup ideas, particularly their own. Experienced founders learn to keep an open mind:
Now I don't laugh at ideas anymore, because I realized how terrible I was at knowing if they were good or not.
You can never tell what will work. You just have to do whatever seems best at each point. We do this with YC itself. We still don't know if it will work, but it seems like a decent hypothesis.

11. Don't Worry about Competitors

When you think you've got a great idea, it's sort of like having a guilty conscience about something. All someone has to do is look at you funny, and you think "Oh my God, they know."

These alarms are almost always false:
Companies that seemed like competitors and threats at first glance usually never were when you really looked at it. Even if they were operating in the same area, they had a different goal.
One reason people overreact to competitors is that they overvalue ideas. If ideas really were the key, a competitor with the same idea would be a real threat. But it's usually execution that matters:
All the scares induced by seeing a new competitor pop up are forgotten weeks later. It always comes down to your own product and approach to the market.
This is generally true even if competitors get lots of attention.
Competitors riding on lots of good blogger perception aren't really the winners and can disappear from the map quickly. You need consumers after all.
Hype doesn't make satisfied users, at least not for something as complicated as technology.

12. It's Hard to Get Users

A lot of founders complained about how hard it was to get users, though.
I had no idea how much time and effort needed to go into attaining users.
This is a complicated topic. When you can't get users, it's hard to say whether the problem is lack of exposure, or whether the product's simply bad. Even good products can be blocked by switching or integration costs:
Getting people to use a new service is incredibly difficult. This is especially true for a service that other companies can use, because it requires their developers to do work. If you're small, they don't think it is urgent. [4]
The sharpest criticism of YC came from a founder who said we didn't focus enough on customer acquisition:
YC preaches "make something people want" as an engineering task, a never ending stream of feature after feature until enough people are happy and the application takes off. There's very little focus on the cost of customer acquisition.
This may be true; this may be something we need to fix, especially for applications like games. If you make something where the challenges are mostly technical, you can rely on word of mouth, like Google did. One founder was surprised by how well that worked for him:
There is an irrational fear that no one will buy your product. But if you work hard and incrementally make it better, there is no need to worry.
But with other types of startups you may win less by features and more by deals and marketing.

13. Expect the Worst with Deals

Deals fall through. That's a constant of the startup world. Startups are powerless, and good startup ideas generally seem wrong. So everyone is nervous about closing deals with you, and you have no way to make them.

This is particularly true with investors:
In retrospect, it would have been much better if we had operated under the assumption that we would never get any additional outside investment. That would have focused us on finding revenue streams early.
My advice is generally pessimistic. Assume you won't get money, and if someone does offer you any, assume you'll never get any more.
If someone offers you money, take it. You say it a lot, but I think it needs even more emphasizing. We had the opportunity to raise a lot more money than we did last year and I wish we had.
Why do founders ignore me? Mostly because they're optimistic by nature. The mistake is to be optimistic about things you can't control. By all means be optimistic about your ability to make something great. But you're asking for trouble if you're optimistic about big companies or investors.

14. Investors Are Clueless

A lot of founders mentioned how surprised they were by the cluelessness of investors:
They don't even know about the stuff they've invested in. I met some investors that had invested in a hardware device and when I asked them to demo the device they had difficulty switching it on.
Angels are a bit better than VCs, because they usually have startup experience themselves:
VC investors don't know half the time what they are talking about and are years behind in their thinking. A few were great, but 95% of the investors we dealt with were unprofessional, didn't seem to be very good at business or have any kind of creative vision. Angels were generally much better to talk to.
Why are founders surprised that VCs are clueless? I think it's because they seem so formidable.

The reason VCs seem formidable is that it's their profession to. You get to be a VC by convincing asset managers to trust you with hundreds of millions of dollars. How do you do that? You have to seem confident, and you have to seem like you understand technology. [5]

15. You May Have to Play Games

Because investors are so bad at judging you, you have to work harder than you should at selling yourself. One founder said the thing that surprised him most was
The degree to which feigning certitude impressed investors.
This is the thing that has surprised me most about YC founders' experiences. This summer we invited some of the alumni to talk to the new startups about fundraising, and pretty much 100% of their advice was about investor psychology. I thought I was cynical about VCs, but the founders were much more cynical.
A lot of what startup founders do is just posturing. It works.
VCs themselves have no idea of the extent to which the startups they like are the ones that are best at selling themselves to VCs. [6] It's exactly the same phenomenon we saw a step earlier. VCs get money by seeming confident to LPs, and founders get money by seeming confident to VCs.

16. Luck Is a Big Factor

With two such random linkages in the path between startups and money, it shouldn't be surprising that luck is a big factor in deals. And yet a lot of founders are surprised by it.
I didn't realize how much of a role luck plays and how much is outside of our control.
If you think about famous startups, it's pretty clear how big a role luck plays. Where would Microsoft be if IBM insisted on an exclusive license for DOS?

Why are founders fooled by this? Business guys probably aren't, but hackers are used to a world where skill is paramount, and you get what you deserve.
When we started our startup, I had bought the hype of the startup founder dream: that this is a game of skill. It is, in some ways. Having skill is valuable. So is being determined as all hell. But being lucky is the critical ingredient.
Actually the best model would be to say that the outcome is the product of skill, determination, and luck. No matter how much skill and determination you have, if you roll a zero for luck, the outcome is zero.

These quotes about luck are not from founders whose startups failed. Founders who fail quickly tend to blame themselves. Founders who succeed quickly don't usually realize how lucky they were. It's the ones in the middle who see how important luck is.

17. The Value of Community

A surprising number of founders said what surprised them most about starting a startup was the value of community. Some meant the micro-community of YC founders:
The immense value of the peer group of YC companies, and facing similar obstacles at similar times.
which shouldn't be that surprising, because that's why it's structured that way. Others were surprised at the value of the startup community in the larger sense:
How advantageous it is to live in Silicon Valley, where you can't help but hear all the cutting-edge tech and startup news, and run into useful people constantly.
The specific thing that surprised them most was the general spirit of benevolence:
One of the most surprising things I saw was the willingness of people to help us. Even people who had nothing to gain went out of their way to help our startup succeed.
and particularly how it extended all the way to the top:
The surprise for me was how accessible important and interesting people are. It's amazing how easily you can reach out to people and get immediate feedback.
This is one of the reasons I like being part of this world. Creating wealth is not a zero-sum game, so you don't have to stab people in the back to win.

18. You Get No Respect

There was one surprise founders mentioned that I'd forgotten about: that outside the startup world, startup founders get no respect.
In social settings, I found that I got a lot more respect when I said, "I worked on Microsoft Office" instead of "I work at a small startup you've never heard of called x."
Partly this is because the rest of the world just doesn't get startups, and partly it's yet another consequence of the fact that most good startup ideas seem bad:
If you pitch your idea to a random person, 95% of the time you'll find the person instinctively thinks the idea will be a flop and you're wasting your time (although they probably won't say this directly).
Unfortunately this extends even to dating:
It surprised me that being a startup founder does not get you more admiration from women.
I did know about that, but I'd forgotten.

19. Things Change as You Grow

The last big surprise founders mentioned is how much things changed as they grew. The biggest change was that you got to program even less:
Your job description as technical founder/CEO is completely rewritten every 6-12 months. Less coding, more managing/planning/company building, hiring, cleaning up messes, and generally getting things in place for what needs to happen a few months from now.
In particular, you now have to deal with employees, who often have different motivations:
I knew the founder equation and had been focused on it since I knew I wanted to start a startup as a 19 year old. The employee equation is quite different so it took me a while to get it down.
Fortunately, it can become a lot less stressful once you reach cruising altitude:
I'd say 75% of the stress is gone now from when we first started. Running a business is so much more enjoyable now. We're more confident. We're more patient. We fight less. We sleep more.
I wish I could say it was this way for every startup that succeeded, but 75% is probably on the high side.

The Super-Pattern

There were a few other patterns, but these were the biggest. One's first thought when looking at them all is to ask if there's a super-pattern, a pattern to the patterns.

I saw it immediately, and so did a YC founder I read the list to. These are supposed to be the surprises, the things I didn't tell people. What do they all have in common? They're all things I tell people. If I wrote a new essay with the same outline as this that wasn't summarizing the founders' responses, everyone would say I'd run out of ideas and was just repeating myself.

What is going on here?

When I look at the responses, the common theme is that starting a startup was like I said, but way more so. People just don't seem to get how different it is till they do it. Why? The key to that mystery is to ask, how different from what? Once you phrase it that way, the answer is obvious: from a job. Everyone's model of work is a job. It's completely pervasive. Even if you've never had a job, your parents probably did, along with practically every other adult you've met.

Unconsciously, everyone expects a startup to be like a job, and that explains most of the surprises. It explains why people are surprised how carefully you have to choose cofounders and how hard you have to work to maintain your relationship. You don't have to do that with coworkers. It explains why the ups and downs are surprisingly extreme. In a job there is much more damping. But it also explains why the good times are surprisingly good: most people can't imagine such freedom. As you go down the list, almost all the surprises are surprising in how much a startup differs from a job.

You probably can't overcome anything so pervasive as the model of work you grew up with. So the best solution is to be consciously aware of that. As you go into a startup, you'll be thinking "everyone says it's really extreme." Your next thought will probably be "but I can't believe it will be that bad." If you want to avoid being surprised, the next thought after that should be: "and the reason I can't believe it will be that bad is that my model of work is a job."

(hardly I could snip it... Thanks Paul )

Monday, September 28, 2009

Prioritization


Everybody deals with it. The name of the devil is "Demand" and if its nature is unexpected then it becomes more poisonous. Prioritization is a weapon which serves as a great source of power in dealing with that.

Here is a seven-step approach for creating and maintaining a priority list and deal with the demand in a way it becomes meaningful to you. (The term "business" is used at a high-level and goes beyond the traditional definition of trade or commerce. It is used here as a context which has the most significant impact on you.)

  1. Make an inventory list of everything you need to accomplish. Then classify it into the following three perspectives:
    1. Everything Routine: It should include all the tasks that you do on a routine basis. Checking emails, submitting status reports, attending review meetings… everything routine.
    2. Everything Exclusive: It should include all the specific requests from superiors, colleagues, clients, vendors or anyone who you need to be specific upon.
    3. Everything Extra-mile: It should include everything that you have initiated or you are taking an active part in helping that thing done. It might include new processes and procedures that you intend to create new product lines, new hiring policy, new reward policy etc.
  2. Categorize each inventory item list according to:
    1. Business Criticality: Business criticality should be #1 driver. It would be wise to get engaged in doing the most important items related to the business. These are the items if not given attention to, would adversely impact the business.
    2. Personal Importance: Next is personal importance. Once business criticality and importance are dealt with, move focus to personal important items. These are the items if not given attention to, would adversely impact you.
    3. Urgency and consequences: Now deal with urgencies. In today's cut-throat competitive world, anybody might come to you with urgent requests to fulfill. You need to understand the distinction between urgency and importance and then deal with others' urgent items. These are the items if done, would impact others positively and not covered in the above two list categories.
  3. Estimate how much time you have to accomplish the tasks. Also ask yourself few questions like:
    1. Should I do it myself or delegate to others?
    2. What can be delegated to others?
    3. What would be the impact of the delegation?
    4. What are the alternative ways of accomplishing the task?
  4. Make a stand-by priority list and order it as per point # 2 (Business Criticality, Personal Importance and Urgency) – This list is the list you can act upon when you don't have any other priority set. The list you create in point # 2 gets precedence nonetheless.
  5. Work out how you can fit the prioritized list into a time-box. Put priorities with high business importance first and hold-back the self-initiated priorities if you find it hard to time-box.
  6. Finalize the priority-list and organize the work you need to do or get that done from others and act upon.
  7. Revise the priority list as per your needs and re-enter into the priority list preparation exercise again.  Sharpen the saw.

Given the way it is described, it might look like a dreadful task however almost all the successful managers pass through this exercise almost mechanically. I have observed that Prioritization provides "structure" to the information chunks and leads to clarity and clarity is #1 success driver in accomplishment of anything you intend to accomplish.

Happy Prioritization!

Tuesday, September 1, 2009

Why is a phone interview required and how do I get to the in person interview?

Today this question is far more relevant than in years past. In the past phone interviews were only used if extensive travel was required for an interview. If somebody in New York applied for a job in Los Angeles he was going to have to get through a phone interview. With a few exceptions that was about the only time it was used. Now hiring authorities phone interview everybody even those just across town. This is not a good trend. Phone interviews are never as productive as meeting a candidate in person and during my career I have seen many of the highest caliber candidates be rejected because they did not interview as well by phone and the interviewer was not able to evaluate as well by phone as in person.
One of the biggest problems with a phone interview is that unlike the face to face interview the employer is looking for reasons NOT to bring in the candidate. Think about that. In an in person interview they are looking for reasons to hire. In a phone interview they are looking for reasons to not even bring a candidate in for a real interview, let alone hire him.

As a recruiter I was insulted when a company wanted to phone interview a candidate because there was only one reason for it. The employer did not trust me as an extension of their hiring team. They did not believe that I could evaluate a candidate as well as they could. They did not believe that I understood their needs as well as they did. This usually indicated a trust issue that went well beyond the phone interview. For this reason I did not accept assignments from employers who insisted on a phone interview before scheduling a candidate. If a client was not going to trust my judgment as to who they would interview I would win the trust or walk away from the assignment.

If phone interviews are so flawed why are they being used more than ever before? There are lots of reasons.
Employers do not believe resumes. Many candidates desperate to find work are "exaggerating" the facts and details of their resumes in order to appear a stronger candidate. It has been estimated that in good times 50%of resumes contained misleading content (lies) so imagine what it is in the worst of times. Employers cannot decide to interview a candidate based on the resume if they do not believe what they are reading. To these people the phone interview is a fact checking session.

Human resource departments are under intense pressure to reduce expenses. They are a non revenue generating function so in hard times they are always one of the first to feel the pressure. Interview travel cost are a big expense item so phone interviews are a tool to make sure they are spending wisely. In many cases multiple phone interviews are conducted.

***

In the past quarter century of self employed consulting, I have been placed by various headhunters into about 1/4 of my projects. Working with them, I had one interview in person and maybe a couple what I would consider to be telephone interviews.

All other phone calls with them consisted solely of them dispensing additional job related details, followed by my own evaluation of both the positives and the negatives, in terms of the overall fit. However, none of them felt like [telephone] interviews.

Therefore, do not be too harsh on your corporate prospects just because too many headhunters have created an impression that most recruiting outfits are nothing more than resume re-faxing services.

***

You make some great points, but I guess it comes down to what you use a phone interview for. I have three years exp as a recruiter and was taught that a phone interview was not to eliminate candidates. You confirm that they meet minimum requirements - Then give them a better understanding of the company, position and culture. Finally you prepare them for the in person interview coming by telling them about the hiring manager, the selection process, salary range and benefits. I was always told I am the candidates advocate and acting as such I will create win win scenarios. We get candidates that fit our needs and culture and candidates perform better in interviews. Resumes are used to screen candidates and eliminate non qualified applicants not phone screens. As for working with thrid party recruiter I think it is a question of culture, my job was to present the hiring manager with the best possible candidates period. who cares where they came from I always worked well with thrid party recruiters and I would say that 1/2 the time I encourage them to participate in the pre interview phone screen. which they did and the results where a stronger more prepared candidate.

***

One of the key reasons for phone interviews is that the team members are scattered to the four winds.

I generally agree that in person is much better, but lacking it, which I suspect will become more and more common, shouldn't be a hindrance if you have done your homework on the company and the division you are interview for.

I actually have a funny story about phone interviews. In this case the subject matter is highly technical and very few recruiters would have the knowledge to know what depth the candidates have or whether they were being led up the garden path or not. So I don't fault the recruiter for doing not much more than a quick review of the resume and letting the hiring manager handle the details.

Usually I don't expect much; however, I was interviewed for a contract a short while ago and was told they would get back to me in a week to ten days as they were interviewing a number of candidates. Okay, I thought, thanked them and put it out of my mind except to tickle file it for follow up. The interview ended at 4:30 pm and covered general knowledge with a bit about how the team worked. The team manager was not on the call. Plus they are all scattered across five offices in three time zones. Was I surprised when the next morning, sixteen hours and fifteen minutes later, I was offered the contract!


Wednesday, August 19, 2009

Ethical behaviour in the Job and business

Found this on Linkedin, a must read for folks with experience.

How do good people get caught in seemingly no-win ethical dilemmas?

In my early years in management I reported to someone in a large, publicly-held corporation, who directed all of us on his staff to use our expense report process to contribute $1000 each for a computer system that was going to reside in his office. He convinced all of us that this was not only OK, but was expected. He after all was a regional manager. We later learned that this was not true and he was subsequently fired for misappropriation of corporate funds. We the members of his staff were essentially told that we should look to further our careers elsewhere. I regret being part of this even if I can assign it to naivety and lack of experience.

In another large, publicly held company, I was approached by a member of the Board of Directors to consider a remote learning solution that he had created as the means for us to reach our customers more effectively. Upon evaluation, we determined the technology was not a good match for us and I politely communicated that to the board member. I was later refused a promotion told only that certain members of the board were uncomfortable with my style. I do not regret my how I handled that one.

With over 30 years of management experience today, I am quite confident that I can navigate the waters of safe ethical behavior. I wonder, however, is there a better answer for the younger and less experienced? Or must they too accumulate a regret or two before they find their way?

How about you? Did you have a solid ethical framework in your work environment that allowed you to make the right choices all the time, or do you too have something that you regret?

+++++++++++

I have been in a situation that seemed at the time to be "a no-win ethical dilemma." Now that I am out of it, the answer was clear. The easiest thing for me to do is always to tell the truth and to do what is right. If I do these two things, I can emerge from any ethical dilemma able to hold my head high.

This will sometimes mean a financial squeeze, a strained relationship or other hardship, but in my experience these were short term.

The key is to have a strong moral compass. Without this you will be blown like a ship without a rudder.

++++++++++++++

Ethics is always a personal dilema faced especially when you are starting out in any profession, whether public or private industry. As an accountant, I have learned on the job first hand, what types of ethical dilemas businesses and individuals can face. It is up to each individual to make that moral choice on how to proceed. The more exposure you have to ethical dilemas, the more confident you will become making and in standing by your decisions.

As a junior accountant, I was more apt to "go with the flow" to not ask questions, although in the back of my mind, I knew something wasn't right. I felt that I needed my job and did not want to jeopardize my career by raising concerns that I was not comfortable with. Today in senior management, I can comfortably maintain that ethical posture and confidence in sound business decisions and relay onto others in senior management the proper rules of business.

I consider myself to set a great example of ethics and confidence in my position and to uphold the accounting profession.

+++++++++++++++++

Every time I've resisted unethical behavior, I paid much less for my resistance than the unethical party did, but I always suffered, and I suffered first. C'est la vie. Courteous, well-documented refusals that cite corporate mission and values make trouble, but it's the best kind of trouble and the only kind that a responsible employee who cares about the company will make. Think of the alternative: culture flows from the top. Power corrupts. If you didn't take a risk in disagreement based on the common good and the long view, could you call yourself ethical? And if you "went along," how long would you want to stay with that company or that boss?

+++++++++++++++++

A few situations like this slap the naivity right out of us, don't they?

There will always be ethical dilemmas. I have 16 virtual advisors. Benjamin Franklin, Thomas Jefferson, Einstein.... Great people.

Except BF had a child out of wedlock, TJ had slaves, and AE married then divorced his pregnant first/second cousin.

A similar list of anyone's heros would reveal the same.

We usually don't plan on doing something wrong. Like your example, you think you are doing something good....then more and more you get sucked in. Later on you have to protect your action you thought was right but is now wrong. Best thing: Admit you thought it was right at first but then change it and get past it.

THE PROBLEM is having one set of standards for us and one for others.
Having one set of standards for us and one for others is never right.

One need go no further than LinkedIn to see people rail on one politician for what they praised the other for. Double standards. Non-objectivity. That is the problem. What you do is good because you are you, and you are a good person. What they do is bad, because they are bad people. Does not follow.

Like Martha Stewart. She should have gone to prison as she did. However, I could be her best friend. She just made a bad choice amongst 35 that day.

Here is my fail-safe ethical guideline: I can do whatever I wish to do, but it must be consistent with the greater good.

My cells must work for my organs, or they are a cancer.
My organs must work for my body, or they have failed.
I must work for my community (business, etc.), or I am dysfunctional.
My community must work for the greater good, or it is a cancer on humanity.

We do have to be careful though, for we rationalize our best interest: "Well, it is best if I pollute the waters so I can get wealthy and give to charity and create jobs."

But there are no no-win ethical dilemmas, and here is why: You can always attempt to do the greatest good, in every single situation. As long as you honestly can say you were trying to do the greatest good, with due diligence, you are never "guilty" in an ethical sense, though perhaps in a legal or practical sense you could be.

The system has the right to judge the performance of its parts, so even an appearance of unethical behavior is not good. Generally go with the perception of good by society, unless it is clearly wrong.

We are all just different parts of the same universe, thus our every action must be consistent with the greater good.

Or we can choose to be cancers upon creation. The choice is ours.

The simple answer is to ask if, from a larger perspective, your actions are consistent with the greatest good. To test objectivity you may consider asking if you would still believe it if your opposing religion or political party or economic class were doing the same.

In our every action we create the rules we wish society to have.

But what I have learned from LI and elsewhere, is that people are perfectly happy to have double standards and believe other people are dastardly evil and their heroes saints, both for the very same actions.

You are either working for the system, or against it, and the system goes on from our cells on to infinity. You are either working for the system or against it, and if the system finds you working against it it has every right to take corrective action.

Ironically the highly subjective field of ethics is actually nothing more than systems theory.

Links:

++++++++++++++++

The golden rule has always worked pretty well for me. When confronted with an ethical dilemma, I like to try and determine what the impacts are on various people (i.e., customers, vendors, fellow employees, shareholders, managers, etc.) of a course of action. If I find a course of action has an adverse impact on a particular person or class of persons, I then ask whether or not I would be okay if something like that were to happen to me. If the answer is no, then it is unethical.

+++++++++++++++

These are difficult situations and even more difficult times. My bottom line is, and has been for a long time, "is this something I can tell my wife and children."

I presented this and my other "laws" during the lunch speech at a business marketing conference in 2005 and several people asked for a copy of the speech and two people suggested it become my 2nd book - which it did - Why Epiphanies Never Occur to Couch Potatoes.

At the end of the day, each of us has our reputation to consider, and a mirror to look in.

And I want to know that my decisions are all in the category of "can I tell my wife and children.

Links:

++++++++++++++++

Well, there is the doubt that there are "good" people but there are hundreds of ways to get "caught". Sometimes, there may be doubts about if the catch is a devils trap, a cultural taboo or some kind of political game.

As several others examples point out, there are the traps of lies, following the wrong examples, going along.

Through out the world, more so in poverty but even in professional circles there are the traps of desperation, "I need to do this to make business", "I need to do this for promotion", "I need this to eat next week"

Fundamentally human, are the "following gonads not brains" traps

Not exactly types, but one can also analyze many of these situations as
"slippery slopes", "tar babies" and "best of bad choices"

++++++++++++++++++

Situations like this can be difficult.

I had one experience where a manager forced employees to produce reports about our work that were misleading and, sometimes, outright lies to mask bad leadership decisions. Some on the staff balked, some just went along, others took a route of more passive resistance.

It was interesting and instructive to see the two extremes of the reactions. One staff member, with a background in assessment, saw it not as an ethical debate, but one of "giving the client what they want" (in this case, the "client" being her manager). Another questioned the practice privately, but went along with much enthusiasm. Both got a nice promotion eventually. Those that questioned what we were doing were ostracized and "blackballed" by the manager.

In the end, these things backfire. The manager wound up getting a reputation as being untrustworthy - the hype she was dishing out just didn't match the reality of what people were seeing. She found it more difficult to find quality people to work for her and, as a result, more and more problems kept piling up in the organization that she just couldn't solve.

The sad part about it is that she damaged the reputations and careers of many of her employees in her quest to get promoted.

I just don't want people in my life like that. Lies and dishonesty just keep piling up like unpaid bills. Eventually, someone wants to see results. Someone who's a fake can never really regain respect once it's lost.

+++++++++++++++++

All are expressed opinions, but still, "if your heart or wife (!) doesn't have a problem, why give a damn?".

Money is all honey, if you want to be ethical.

Thursday, August 13, 2009

Startup and Microsoft

Read this article on comparing startup with Microsoft...

some decent points to learn.

Successful Startups: Microsoft Wasn't Born Great



--
Regards
Vijayashankar

Thursday, July 30, 2009

VCs and Startups

Here are top 7 things you should remember while pitching to potential VCs:

Be ready with your Product

This by far seems to be the most important aspect that VCs see while making a decision – At what stage of development is the product or service. However good your idea may be, very few VCs will be interested in it. Unless and until you have a working product (even if it is prototype), your chances of getting funding diminish drastically.

Your opinion’s don’t matter, hard facts and figures do !

Your opinions don’t matter to VC’s unless you are credible and have been there, done that. To add to it, if VCs have slightest difference of opinion than what you have, your chances of getting funding can come down to zero. It is always safe to stick to facts and figures when making a point.

Know your competition very well

In general, most of us do this quite well, however we need to know our competition from VC’s perspective. The positives / negatives of competitors and how they affect your business. You have to be very clear about the key differentiators between you and your competition.

VCs are skeptics

You need to understand this well. VCs will always look at your idea and product like a die-hard pessimist. They will only put their money in your venture once they get satisfactory answers for every aspect of your startup.

VCs hate outrageous projections

Never, I mean never try to balloon your figures on projections. VCs see right through it. As mentioned earlier, your projections should be based on solid facts and figures (not your opinions). The moment VC feels that figures are too good to be true, they will turn negative.

Be prepared to be grilled

VCs will grill you on anything and everything. Be prepared to answer questions that you may have never even thought. Make attempt at answering if you are confident that you can take it through. If you don’t, say “no”. VC’s will forgive you for not knowing certain things, but never if they feel you are lying.

Never show your desperation

Always be calm and composed while presenting your idea. You should be enthusiastic, but over enthusiasm could come across as desperation. And if VCs smell desperation in your talk, they will think twice before putting even a dime !

Thursday, July 23, 2009

How to Resolve Project Conflict


Here's how to face and deal with conflict within your project team...

You need to face conflict and not ignore it, as ignoring it only makes the problem worse. The earlier you face it, the easier it will be to resolve. Here are some examples of conflict you might experience on projects:

  • Your boss is frustrated with progress and takes it out on you openly, in front of others in your team.
  • Your colleague wants something from you that you can't give them, or can't do for them within the time frame required so they get angry.
  • Your staff think you're being unrealistic about time frames, so they handle it badly by raising their voice and being obstructive.

When conflict occurs, take these steps:

  • Time out: If the other person is getting heated, tell them you need to take five minutes to collect your thoughts. Then make a coffee or go for a walk. This will help you both to calm down and reflect on what has happened.
  • A pacifier: When you restart your conversation, start with "I know that you're under pressure because of... " This will pacify them a little and will make the atmosphere more positive.
  • Problem solving: Then agree that a problem exists and that you both need to work together to resolve it constructively. Discuss the various solutions to the problem and try to agree on the pros and cons of each before deciding on the best course of action.
  • Body language: While all this is happening, you need to focus on your body language. Use open stances. Take your hands out of your pockets and never fold your arms. Try and use slow hand movements. Use a passive voice and don't show emotion. Maintain good eye contact. Listen carefully and watch their body language as well.
  • A mediator: If the above steps are going poorly, then you need to get someone else involved who can help mediate informally. Tell them you'd like to add a colleague to the conversation as they will have ideas for a solution. Then invite someone who is a good problem solver, whom you trust.
  • Giving feedback: When the conversation becomes a little more relaxed, it's time to give the person some constructive feedback. Let them know how you would like them to deal with you next time a similar issue comes up. Only by giving positive constructive feedback, can you change their behaviour.


--
Regards
Vijayashankar

Wednesday, July 15, 2009

Typical breakeven poInt for a Captive Offshore Software Development Group

We comes across many customers with various ideas, who also have their own IT team.

Software Outsourcing is an art. You basically need to ramp up and down, based on project needs. No harm in sending work to India. At times big MNC's resort to having their own Captive Offshore Development Group.

What would be the Typical breakeven point for a Captive Offshore Software Development Group?

Will it all depends. If you have an order book and a project list that gives you sufficient comfort that you will be able to offer employees a good job with career development potential, then you can take on permanent hires rather than contractors straightaway.

On the other hand, if the nature of the software projects being worked on is such that the skill sets required vary greatly from project to project, then it may be better to develop a business around a network of consultants that you know and trust, where you pull in the right people for the right job on an ad hoc basis.

I'd imagine one that a lot of Small/Medium operators would be wrestling with....

Unfortunately, I don't believe there's a fixed formula. There are too many factors (current profitability/ costs of staffing a centre/ staff profile of offshore talent/tolerance for risk etc) to provide a definitive answer.

I would strongly reccomend them to have them plan out the two ( or three) business scenarios over the next 3 years and compare the forecasted outcomes. I think the answer would become apparent.

- Assess their real motivation for change (increased profitability/ scalability etc)

Assuming a motivator of profitability,

- Create a revenue forecast based on current & ongoing growth (with respect to the offshore sourcing)
- risk profile of sustained growth (diversification of clients, repeat business etc)

offset these with:

- TCO of each employee (full time) vs contractor rates (which I assume attract a premium)
- What other costs are required to staff a centre (e.g company/training/management overheads). There will be fixed component + incremental $ for each employee
- What value do you get from a full time employee vs a contractor in an offshore situation?
- What must you offer as a full time employee to the offshore talent? There could be some hidden premiums...

Scenario 1: All contract

Scenario 2: All full time

Scenario 3: Hybrid (reduce risk of people on bench/answer resource demand spikes

- run the numbers across the FTE scenarios you outlined and see where it lands. This ideally would put them in a more informed position to assess their situation and ideally make a call.

Generally, profitability will temporarily suffer while taking up the cost of the center overhead. This should be factored. Dont be afraid to drop a project, midway, if it is going no where. Money saved is money earn't!

Tuesday, July 14, 2009

Fashionably Mysterious

Dear friends I found this article on http://www.personalmba.com an interesting site for learning Biz Management, by Josh Kaufman!

The Dangers of Mystique

Fashionably Mysterious

There's a big difference between liking the idea of being/doing something and liking the actual being/doing.

It's easy to like the idea of being the CEO of a Fortune 50. It's harder to like the hours, the responsibility, and the pressure that comes with the top job.

It's easy to like the idea of being a manager. It's harder to like the demands from C-level execs, surprises from your direct reports, and the necessity of defending your turf in a political environment.

It's easy to like the idea of getting an Ivy-League MBA or law degree. It's harder to like the six-figure debt and the corresponding necessity of getting a 120-hour-a-week job to make the investment "worth it."

It's easy to like the idea of being self-employed. It's harder to like the fact that 100% of your income comes from your own effort, and if you screw up, you're the one that will face the consequences.

It's easy to like the idea of raising millions of dollars of venture capital. It's harder to like the fact that you've given up control over the project you're investing your life in.

It's easy to like the idea of being an author or professional blogger. It's harder to like the solitude, uncertainty, and the long hours of "butt in chair, hands on keyboard" that consistent writing requires.

It's easy to like the idea of being a celebrity. It's harder to like the scrutiny, loss of privacy, and constant fear that people will direct their attention away from you in favor of the "next big thing."

It's easy to like the idea of being a supermodel. It's harder to like strictly controlling your diet, constant workouts, and hour-upon-hour of sitting still for the camera.

It's easy to like the idea of being a Broadway star. It's harder to like the endless auditions, evenings of waiting tables, and recognition that – even after landing a high-profile show – you'll probably be out of work again in a few months.

It's easy to like the idea of being a secret agent or special forces commando. It's harder to like people shooting at you.

Mystique is a powerful force – a little mystery makes most things appear a lot more attractive than they actually are. Fortunately, there's an easy way to counteract the rose-colored glasses of mystique: have a real human conversation with someone who's actually done what you're attracted to. Here's what to ask:

"I really respect what you're doing, but I imagine it has high points and low points. Could you share them with me? Knowing what you know now, is doing this worth it?"

It only takes a few minutes, and you'll be amazed by what you learn, both on the positive or negative side.

No job, project, or position is flawless – every course of action has benefits and drawbacks. Learning what they are in advance gives you a major advantage: it allows you to examine an option without idealizing it, then choose if it's really what you want to do with your time before you start. That kind of knowledge is priceless.

Like this post? Be sure to share it with a friend or colleague!

:-)

Sunday, July 12, 2009

Some Architectural snippets on JAVA, J2EE and Web


When migrating a web-based solution to a J2EE solution, you need to consider the requirements of the original solution as opposed to taking the route of replacing like with like, e.g. replacing ASP with JSP.

It may be the case that a solution using PHP and PERL technologies to handle presentation and business logic (and in some cases transaction management), could be better separated in J2EE with presentation logic being handled by JSP and Servlets and business logic by EJBs. (If transactions are involved in almost all cases, this is enough justification for using a separate application server and Enterprise JavaBeans.)

***

Use AJAX for repeated refreshes in web pages. Gmail uses this! ( note - 5 years Beta, solidly tested ).

Ajax neither reduces browser-compatibility issues nor improves security in anyway. Ajax will not work if Javascript is disabled because Ajax is basically a combination of Java Script and XML.

***

You are architecting a new web based labor claim management application. Currently the users have a Java Swing-based application running on their local PCs, and you want to implement the new web-based solution with a GUI that is similar to their desktop application. Once the users have filled in their hours then you must send the details to central labour system through a Web service.

What of the following technologies would be required for building this application?

UI can be built using JSF and the web service may be invoked through a JAX-WS client.


The Java Message Service (JMS) API is an API for accessing enterprise messaging systems. The Java Message Service makes it easy to write business applications that asynchronously send and receive critical business data and events. It defines a common enterprise messaging API that is designed to be easily and efficiently supported by a wide range of enterprise messaging products. It supports both message queueing and publish-subscribe styles of messaging.

The Java Secure Socket Extension (JSSE) enables secure Internet communications. It provides a framework and an implementation for a Java version of the SSL and TLS protocols and includes functionality for data encryption, server authentication, message integrity, and optional client authentication. Using JSSE, developers can provide for the secure passage of data between a client and a server running any application protocol, such as Hypertext Transfer Protocol (HTTP), Telnet, or FTP, over TCP/IP.

The Java Cryptography Extension (JCE) provides a framework and implementations for encryption, key generation and key agreement, and Message Authentication Code (MAC) algorithms. Support for encryption includes symmetric, asymmetric, block and stream ciphers.

***

You are currently designing your own Desktop Publishing application, as you have not found any existing application that does exactly what you want. As part of the design, you are using a Controller to which you send all GUI requests. Not all objects can process the same commands.

For example, you cannot select the spell check tool when an image has the focus. To stop any possible errors, you would like to filter out some of the messages as they are passed from these objects to the Controller object. What pattern could you use?

Firewall and Filter are not design patterns. In this scenario, what you are essentially trying to do is filter all packets that do not meet a certain set of requirements. This behavior is just like a Proxy server dropping packets from certain IP address etc.

Proxy - (GOF 207): "Provide a surrogate or placeholder for another object to control access to it."

The other patterns:

Adapter - (GOF 139):"Convert the interface of a class into another interface clients expect. Adapter lets classes work together that couldn't otherwise because of incompatible interfaces."

Observer - (GOF 293):"Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically."

Chain of Responsibility - (GOF 223):"Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request. Chain the receiving objects and pass the request along the chain until an object handles it."

***

Both the Abstract Factory and Factory Method are Creational patterns.

Abstract Factory - (GOF 87): "Provide an interface for creating families of related or dependent objects without specifying their concrete classes."

Factory Method - (GOF 107): "Define an interface for creating an object, but let subclasses decide, which class to instantiate. Factory Method lets a class defer instantiation to subclasses."

***

The current application has been built using JSF & a custom persistence framework. You have been approached to expose some of the data as a EJB to another J2EE application. You may need to access multiple business objects to provide the data.

Use Session Facade.

See description of patterns.
Application Service - Application Service centralizes and aggregates behavior to provide a uniform service layer to the business tier services. An Application Service might interact with other services or Business Objects. An Application Service can invoke other Application Services and thus create a layer of services in your application.

Session Facade - Session Facade provides coarse-grained services to the clients by hiding the complexities of the business service interactions. A Session Facade might invoke several Application Service implementations or Business Objects. A Session Facade can also encapsulate a Value List Handler.

The Service to Worker pattern, like the Dispatcher View pattern, describes a common combination of other patterns from the catalog. Both of these macro patterns describe the combination of a controller and dispatcher with views and helpers. While describing this common structure, they emphasize related but different usage of patterns. Both of these patterns differ in division of labour among components(Controller, Dispatcher and View).

In Dispatcher View content retrieval is done by View and in case of Service To worker content retrieval is done by controller.

Business Delegate - Business Delegate reduces coupling between remote tiers and provides an entry point for accessing remote services in the business tier. A Business Delegate might also cache data as necessary to improve performance. A Business Delegate encapsulates a Session Facade and maintains a one-to-one relationship with that Session Facade. An Application Service uses a Business Delegate to invoke a Session Facade.

***


Polymorphism is a characteristic of being able to assign a different behavior or value in a subclass, to something that was declared in a parent class.

For example, a method can be declared in a parent class, but each subclass can have a different implementation of that method.

Inheritance is the ability of objects in Java to inherit properties and methods of other objects.

An abstraction denotes the essential characteristics of an object that distinguish it from all other kinds of object and thus provide crisply defined conceptual boundaries, relative to the perspective of the viewer."

Encapsulation (also information hiding) consists of separating the external aspects of an object which are accessible to other objects, from the internal implementation details of the object, which are hidden from other objects.

***

Every Java object implicitly extends java.lang.Object class. What is this design concept?

It describes Inheritance. All Java objects extend Object class implicitly and also inherit methods such as toString().

Polymorphism is a characteristic of being able to assign a different behavior or value in a subclass, to something that was declared in a parent class. For example, a method can be declared in a parent class, but each subclass can have a different implementation of that method. Inheritance is the ability of objects in Java to inherit properties and methods of other objects.

An abstraction denotes the essential characteristics of an object that distinguish it from all other kinds of object and thus provide crisply defined conceptual boundaries, relative to the perspective of the viewer."

Encapsulation (also information hiding) consists of separating the external aspects of an object which are accessible to other objects, from the internal implementation details of the object, which are hidden from other objects.

***

What is the difference between Maintainability and Manageability in Software Engineering?

Maintainability (Cade 8) "is the ability to correct flaws in the existing system without impacting other components of the system" and Manageability (Cade 9) "is the ability to manage the system to ensure the continued health of a system with respect to scalability, reliability, availability, performance and security."

***

It provides a convenient way to bind an XML schema to a representation in Java code. This makes it easy for you to incorporate XML data and processing functions in applications based on Java technology without having to know much about XML itself. Which of the following is the API described above?


JAXB - Java Architecture for XML Binding (JAXB) provides a convenient way to bind an XML schema to a representation in Java code. This makes it easy for you to incorporate XML data and processing functions in applications based on Java technology without having to know much about XML itself.

SAAJ - The SOAP with Attachments API for Java (SAAJ) provides a standard way to send XML documents over the Internet from the Java platform. SAAJ 1.3 EA (with support for SOAP 1.2) is shipped in Java WSDP 2.0.

JAXR - The Java API for XML Registries (JAXR) provides a uniform and standard Java API for accessing different kinds of XML Registries. An XML registry is an enabling infrastructure for building, deploying, and discovering Web services.

JAXP - The Java API for XML Processing (JAXP) enables applications to parse, transform, validate and query XML documents using an API that is independent of a particular XML processor implementation. JAXP provides a pluggability layer to enable vendors to provide their own implementations without introducing dependencies in application code.

***

You have developed an application consisting of Java EE Stateless session beans. Methods of these beans use simple Java types. You would like to convert them to web services. How can you achieve it?

You can use annotations like @WebService and @WebMethod. They are automatically deployed as web services.

. web.xml does not have any such entries.

. resource injection is a mechanism that removes the burden of creating and initializing common resources in a Java runtime environment.

. ejb-jar.xml does not have any such entries.

***

EJB 3.0 offers simplified entity programming model.

Java Entity is a POJO class but not an EJB, so it does not require any Local/Home interfaces. Entities may either use persistent fields or persistent properties.

If the mapping annotations are applied to the entity's instance variables, the entity uses persistent fields.

If the mapping annotations are applied to the entity's getter methods for JavaBeans-style properties, the entity uses persistent properties. You cannot apply mapping annotations to both fields and properties in a single entity.

Simple primary keys use the javax.persistence.Id annotation to denote the primary key property or field. Composite primary keys are denoted using the javax.persistence.EmbeddedId and javax.persistence.Id Class annotations.

In the Java Persistence API, you no longer need to provide a deployment descriptor. JPA supports complex relationships between Entities.

***

A typical JSF application contains
  • A set of JSP pages (although you are not limited to using JSP pages as your presentation technology)
  • A set of backing beans, which are JavaBeans components that define properties and functions for UI components on a page
  • An application configuration resource file, which defines page navigation rules and configures beans and other custom objects, such as custom components. Usually named faces-config.xml
  • A deployment descriptor (a web.xml file)
  • Possibly a set of custom objects created by the application developer. These objects might include custom components, validators, converters, or listeners.
  • A set of custom tags for representing custom objects on the page
  • validations.xml is not part of JSF.
***

Real Time Web based Application can be built using JSP for UI, stateless session beans for business services and EJB3 entities for persistence.

***

The JavaServer Pages Standard Tag Library (JSTL) encapsulates, as simple tags, core functionality common to many JSP applications.

***

You have a requirement that the PIN of the customer used for ATM transactions must be encrypted using a one-way encryption algorithm to prevent data theft.

You should use SHA encryption. http://en.wikipedia.org/wiki/SHA_hash_functions

3DES is a symmetrical encryption algorithm.

Blowfish is a symmetrical encryption algorithm.

RSA is a asymmetrical encryption algorithm.

--
Regards
Vijayashankar

Securing Company systems over Web


The company web server needs to serve pages to remote users and office machines need access to the internet.

Given the above architectural system specification you should secure it by creating a DMZ that contains the company web server.

You should put machines that provide services to Internet clients in the DMZ and the office machines and development servers behind an inner firewall.

You would then configure a proxy server in the DMZ to forward the requests from the office machines to the Internet.

***

What are the solutions available, if planning for interfacing with existing CORBA systems. You can use Java IDL to integrate with these other systems.

The following is taken from: http://java.sun.com/j2se/1.3/docs/guide/idl/index.html

Java IDL adds CORBA (Common Object Request Broker Architecture) capability to the Java platform, providing standards-based interoperability and connectivity.

Java IDL enables distributed Web-enabled Java applications to transparently invoke operations on remote network services using the industry standard IDL (Object Management Group Interface Definition Language) and IIOP (Internet Inter-ORB Protocol) defined by the Object Management Group. Runtime components include Java ORB for distributed computing using IIOP communication.

Java IDL should not be used when servicing requests from CORBA clients and the reference to messaging is a red herring.

How does a predominantly EJB based J2EE application that has to be accessed by CORBA clients? Which connectivity option would you recommend?

RMI-IIOP stands for Remote Method Invocation (using IIOP as the transport.) This is the protocol supported by EJB1.1

**

What if you are Streaming information of the network?


StAX provides a standard, bidirectional pull parser interface for streaming XML processing, offering a simpler programming model than SAX and more efficient memory management than DOM.

StAX enables developers to parse and modify XML streams as events, and to extend XML information models to allow application-specific additions.

Below is an excerpt from Java EE tutorial.

Streaming refers to a programming model in which XML infosets are transmitted and parsed serially at application runtime.Stream-based parsers can start generating output immediately, and infoset elements can be discarded and garbage collected immediately after they are used.Streaming models for XML processing are particularly useful when your application has strict memory limitations, as with a cell phone running J2ME, or when your application needs to simultaneously process several requests, as with an application server. Streaming pull parsing refers to a programming model in which a client application calls methods on an XML parsing library when it needs to interact with an XML infoset; that is, the client only gets (pulls) XML data when it explicitly asks for it. Streaming push parsing refers to a programming model in which an XML parser sends (pushes) XML data to the client as the parser encounters elements in an XML infoset; that is, the parser sends the data whether or not the client is ready to use it at that time.

***

Use a VPN (Virtual Private Network) to connect to company networks. Mostly applications exclusive and sharing of data, should use this. This is better than using Firewalls, over internet.

--
Regards
Vijayashankar

Various Methods of Web Attacks

A Denial-of-Service attack (also DoS attack) is an attack on a computer system or network that causes a loss of service to users. Usually it is realized through consuming all of the bandwidth available to the victim network or by overloading the computational resources of the victim system. It can be prevented by using Service Request Queue technique - limiting the number of concurrent requests one application can get while queuing all excess requests.

A Man-in-the-Middle (MitM) attack is a technique where an attack intercepts another user's session, inspects its contents and tries to modify its data or otherwise use it for malicious purposes. Measures to prevent these attachs are to use encryption of sensitive data and prevent the data being read. Some examples are using SSL, avoiding Frames/IFrames, avoid URL rewriting (SessionId is exposed).

Cross Site Scripting (XSS) is a type of computer security exploit where information from one context, where it is not trusted, can be inserted into another context, where it actually is trusted. From the trusted context, attacks can be launched.

Cross site scripting (also known as XSS) occurs when a web application gathers malicious data from a user. The data is usually gathered in the form of a hyperlink which contains malicious content within it. The user will most likely click on this link from another website, instant message, or simply just reading a web board or email message.

Usually the attacker will encode the malicious portion of the link to the site in HEX (or other encoding methods) so the request is less suspicious looking to the user when clicked on. After the data is collected by the web application, it creates an output page for the user containing the malicious data that was originally sent to it, but in a manner to make it appear as valid content from the website.

Some of the measures to prevent it : encode the data on the generated pages, escape user input (special characters,tags), validate user input(maximum length) using Frameworks like Struts Validator, users disable javascript, avoid using Frames/IFrames.

Phishing is an attempt to criminally and fraudulently acquire sensitive information, such as usernames, passwords and credit card details, by masquerading as a trustworthy entity in an electronic communication. Phishing is a social engineering technique to fool users.

--
Regards
Vijayashankar

Saturday, July 11, 2009

How to hire the right person for Top management?

Fill a room with 100 bricks in some particular order and close it (with an open window)
Then send 2 or 3 candidates in the room and close the door.
Leave them alone and come back after 6 hours and then analyze the situation.
If they are counting the bricks.
Put them in the accounts department.
If they are recounting them.
Put them in auditing.
If they have messed up the whole place with the bricks.
Put them in engineering.
If they are arranging the bricks in some strange order.
Put them in planning.
If they are throwing the bricks at each other.
Put them in operations.
If they are sleeping.
Put them in security.
If they have broken the bricks into pieces.
Put them in information technology.
If they are sitting idle.
Put them in human resources.
If they say they have tried different combination's, yet not a brick has been moved.
Put them in sales.
If they have already left for the day.
Put them in marketing.
If they are staring out of the window.
Put them on strategic planning or owner's office.

And at last........................
If they are talking to each other and not a single brick has been moved.

Congratulate them and put them in top management.


--
Regards
Vijayashankar

Wednesday, July 8, 2009

Be like this boy

Be Positive Like This Boy

A beautiful Madam was having trouble with one of her students in 1st Grade class. Madam asked,'Boy. what is your problem?'

Boy answered, 'I'm too smart for the first-grade. My sister is in the third-grade and I'm smarter than she is! I think I should be in the 4th Grade!'

Madam had enough. She took the Boy to the principal's office. While the Boy waited in the outer office, madam explained to the principal what the situation was. The principal told Madam he would give the boy a test and if he failed to answer any of his
questions he was to go back to the first-grade and behave.She agreed.

the Boy was brought in and the conditions were explained to him and he agreed to take the test.



Principal: 'What is 3 x 3?'
Boy.: '9'.


Principal: 'What is 6 x 6?'
Boy.: '36'.


And so it went with every question the principal thought a 4th grade should know. The principal looks at Madam and tells her, 'I think Boy can go to the 4th grade.'

Madam says to the principal, 'I have some of my own questions.

Can I ask him ?' The principal and Boy both agreed.


Madam asks, 'What does a cow have four of that I have only two of'?

Boy, after a moment 'Legs.'


Madam: 'What is in your pants that you have but I do not have?'

Boy.: 'Pockets.'



Madam: What starts with a C and ends with a T, is hairy, oval,
delicious and contains thin whitish liquid?

Boy.: Coconut


Madam: What goes in hard and pink then comes out soft And sticky?

The principal's eyes open really wide and before he could stop the answer, Boy was taking charge.

Boy.: Bubblegum


Madam: What does a man do standing up, a woman does sitting down and a dog does on three legs?

The principal's eyes open really wide and before he could stop the answer..

Boy.: Shake hands



Madam: You stick your poles inside me. You tie me down to get me up. I get wet before you do.

Boy.: Tent



Madam: A finger goes in me. You fiddle with me when you're bored. The best man always has me first.

The Principal was looking restless, a bit tense and took one large Patiala Vodka peg.

Boy.: Wedding Ring


Madam: I come in many sizes. When I'm not well, I drip. When you blow me, you feel good.

Boy.: Nose



Madam: I have a stiff shaft. My tip penetrates. I come with a quiver.

Boy.: Arrow


Madam: What word starts with a 'F' and ends in 'K' that means lot of heat and excitement?

Boy.: Fire truck



Madam: What word starts with a 'F' and ends in 'K' & if u don't get it, u have to use ur hand.

Boy.: Fork



Madam: What is it that all men have one of it's longer on some men than on others, the pope doesn't use his and a man gives it to his wife after they're married?

Boy.: SURNAME.


Madam: What part of the man has no bone but has muscles, has lots of veins, like pumping, & is responsible for making love ?

Boy.: HEART.



The principal breathed a sigh of relief and said to the teacher,

'Send this Boy to
IIM AHMEDABAD (Indian Institute Of Managment)
I got the last ten questions wrong myself!'

Monday, June 22, 2009

Building a team: Discussion

Building a company team is much more complex and revolves around your business plan. You need revenue projections along with employee costs to proceed. I would recommend you hire an experienced consultant to guide you or put together an advisory team/board of entrepreneurs who have started businesses and made them successful.

***
The concept plan will define your product/service and allow you to flesh out the idea. Key facets of this should at least include: a description of the website's function and a proposal of the value added to its users; a(n at least basic site map); a flowchart describing the process of building the site; and design and usability considerations.

The strategic plan will allow you to identify the business model you are expecting to employ. If done right, it should be straightforward (though sometimes difficult) to construct it in a way that connects the dots. In my opinion, every strategic plan should include: a description of your core principles as an organization (vision/mission/goals/values); an analysis of your internal resources and external market environment (not limited to your presumed customer base); strategic options and a description of your choice as well as an explanation of 'why'; a plan for implementation of the strategy - including needed resources; expectations of performance (operational/market/financial); a description of relevant metrics you can use to gauge your business' performance; and a plan for how to monitor and respond to changes in your operations and/or market.

***
Developing your team of core advisors and mentors is very important, as I'm sure you already know. It sounds like you need some advisors/mentors just for general business purposes - and at least 1 or 2 that specialize on the web side.

Just my opinion, but I'd start by scanning through your business plan to determine core areas needed to get your business going. That will help you determine what KIND of advisors you need. You are particularly looking for people with skills you don't have. As an example, I have an accounting degree, so when I was looking for core advisors, I did NOT look for an accountant, since I would fill that slot, myself. If you can interest a lawyer and someone with an accounting/finance background, that's a real plus. For web models, I'd also say a really energetic, up-to-date marketing person would be a tremendous plus. The marketing person should be very knowledgable about current and up-coming web and new media (like i-Phone, etc.), able to evaluate what is working, all the legal requirements, etc., since all of these will, ultimately, be a part of your big picture.

On the web side, someone very strong in web development from the IS side - and, if you can get two, one who is also strong on web commerce (if this will be an e-commerce site). I have discovered that some folks who are terrific at innovative web design and management aren't as strong on e-commerce, which has a lot of legal and technical areas that are vital.

Once you've figured out what kind of advisors and mentors you need - I'd say no more than 8-10 people with 6-8 people being ideal - you can start strategizing on how to get them!

Depending on where you live, an area university or your alma mater may have a program that matches graduate students in a specific area with projects. A law school may have a free law program similar to that. I live in Nashville, TN, and Vanderbilt University does both of these. It's not just for start ups - some really big companies use these services. If your alma mater has an online business connection, sometimes folks from your school might be interested and willing to help - or identify someone for you.

Another way is to become active in some organizations that people that you need are likely to belong to. I belong to the American Marketing Association for just that reason. Check FaceBook for professional listings. Some pros participate in FaceBook. Even if they aren't available for a low cost, they frequently can match you up with someone good who is - or you may find them by visiting a page frequently and observing their posts. I have met an excellent career coach through LinkedIn, for example.

Networking is a really big key, but it needs to be networking with people who have what you are looking for, not just social events and business-card-swaps. Don't be bashful about "telling your story" over and over again. Come up with a couple of short pitches (one 2 minute one and one 5 minute one) that will explain what you are trying to do. That won't bore the people who will eventually say, "Oh, yeah, I have a friend that would be interested in that" . . . or "does that" and will be willing to give you an e-mail or contact to get in touch with them. And, if they are interested themselves, they will let you know and you can go into more detail. A lot of this is really viral and on-the-spot. The big thing on networking is to have a plan. Plan 1) what you are going to; 2) who you want to talk to; 3) what you plan to say to them; and 4) what you are trying to get (contacts, etc.). You'll get better results that way.

A lot of cities have Small Business centers that provide a LOT of help with this. Check and see if there is one in your area. They are frequently free. And, many Chambers of Commerce have programs that can help, too. Some of the COC programs are free - some cost some money, but not usually very much.

***
Its a very dangerous trap "if I build it they will come". I've fallen into that trap myself in the past and paid in time and money. Validate your business model first.

Does your product address a pain point?
Is your pain point recognized?
Is the pain great enough that people are willing to pay for it? (I can't stress this point high enough)
Will the payment model support the business both in start up and as it grows?

Second prototype and model your product. You should take an iterative approach starting with detailed static mockups, framework functions, etc. and validate, validate, validate with leaders in the industries or markets you want to capture. I've found great value in paying a graphic designer to produce myriad static displays (in fine detail) so that I could "show" the functions and collect feedback early on. An additional benefit is the coding team will have a much better understanding of what the final product should look like and how it should behave. They will also insert a number of technical requirements that would be missed otherwise.

Warning... you need a graphic designer that has worked with a development team before. They need to inject realism in the static product. It would also be helpful to finalize your business requirements. What is the end product supposed to achieve. Which of course dove tails in the business modeling.

An additional point of warning. Off shoring can work very well particularly if you've managed other development projects and have a good understanding of the process, the requirements and acting as a business owner for a project. Off shoring has its negatives including language barriers, cultural misunderstandings, time zone craziness, cost barriers to face-to-face engagements and challenges in aligning business requirements to technical requirements. If you've never done this before and you want to try this approach, get someone to coach you who has experience with this.

***

Also http://www.8kmiles.com is a wonderful concept to pull in a team, virtually.

***

Do not believe in free tools, or pro bono work or free items / widgets. Build up from scratch, you might have sometime and something to show to VC's and Angels.

You can also mail me at vijayashankar dot india @ gmail for many inputs, I can share.... if you can get me some venture / angel funding for my venture http://www.indiarealestventure.com