Tuesday, November 3, 2009

How to start a company ?

If you pick up any book on being an entrepreneur, the first chapter will be about, “Do you have what it takes to start a company?”

The point all these books are trying to make is, “It is not easy to start a company! It is positively difficult to be an entrepreneur.”

Most people don’t want to take the risk to start a new company because they are afraid of things like:

  • What if I fail?
  • What if it does not work?
  • What if I go bankrupt? etc. etc.

People, who work past these initial fears and decide to go ahead and start a company, have to be prepared to really work for it. It is difficult to start a company and most people quit on the way. There will be many things that de-motivate you when you go about starting your company.

If you seriously want to start a company be ready to work very very hard for it!

Next we have explained how you can pick the best possible "business idea" for your new company.

Most people who are reading this already have a great business idea and now they want to start a company and enforce their idea.

Everyone has “brilliant” business ideas. To keep business ideas in check, in all big companies there is some sort of idea screening process. Most of the time the problem with ideas is that the ideas are brilliant but not very feasible in the real world.

The first way to screen your ideas is to answer the following questions. These questions are designed to give you a better understanding of your own idea. If you find that you cannot answer these questions, you might need to research about your idea some more.

  • Is there a genuine need for your product/service?
  • Is the need substantial enough to support a profitable business?
  • Do competitors currently offer similar products/services? If “yes”, do your ideas offer distinctive advantages and customer benefits that competitors don’t?
  • Is the product/service feasible to produce?
  • Is the product/service legal?
  • Is it safe?
  • If the product/service is a durable good, can it be easily serviced? (Who will service it?)
  • Are the investment costs required to develop, produce, and market the product reasonably, within your financial realities?
  • Is the “pay-back period” fast enough to allow you to stay in business?
  • Can the product be expanded into a line of similar or compatible items later, if the original product was successful?
  • Can you protect the product with a patent or copyright?
  • Does the product infringe upon anyone else’s patents or copyrights?
  • Are all the needed raw materials and supplies readily available?

In many cases, once you answer these questions you realize that your idea is not that great. You might have to brainstorm and come up with another idea. But, sometimes, what happens is that people are so convinced about their idea they disregard all the information that clearly points out that their idea is not profitable. This always results in failure. What ever you do, make sure you do not fall for this mistake!


If your idea has passed the initial questionnaire you should screen your idea further. To further screen your idea, do the following:

Conduct “Experience Surveys”

What we mean by “Experience Surveys” is that you will have to find and then ask professionals about your idea. Query the following people to get a better idea about your idea:

Engineers: Ask them whether the product/service can be designed and built in a feasible way? What will go into the designing and building of the product?

Suppliers: Ask the suppliers whether the raw materials or whatever may be required to make the product/service available at a reasonable rate?

Middlemen: Ask the middlemen whether there is a market for your product/service? Would the middlemen be interested in carrying your product/service?

Government officials/lawyers: Ask them whether there is any licensing, safety or environmental requirements of which you should be aware. Will warning labels or disclaimers be required?

However “original” you think your idea is, there is a good possibility that someone out there has already done it. Make sure to use the Internet to look up your competitors product. Learn as much as you can about your competitors product.

Read up all the news items about your competitors and their product. Read up about their pricing, profits, distribution, marketing etc.

At the end of all this, you will have a pretty good idea about your product/service. You your self will know whether it is a profitable idea or not.

Be sure to let the idea go if it not a profitable one. As I said earlier, many people can’t let go of their idea even though they “know” it will not work. This always leads to failure. Do not do this.

If you realize that your idea is not that great let it go. Brainstorm and find a new idea. But for now, let us assume that you have found a good idea! The next step is to make a business plan.

The process of planning makes you think. This makes you understand what decisions and steps need to be taken.

A comprehensive business plan gives you a better understanding of the details than would be possible if the business were just run on a day to day basis.

A well-written business plan will be very effective if you try to communicate with partners, employees, investors or venture capitalists ideas about your business.

A well thought out business plan will convince investors that you are serious. This greatly increases your credibility.

A written document is a reference to how much a business has achieved and how much it plans to achieve in the future.

In conclusion: I you are a serious entrepreneur, you have to have a business plan. If you don’t, your business will not be going in any direction in particular. You shall waste a lot of time making haphazard decisions instead of progressing.


The process of planning makes you think. This makes you understand what decisions and steps need to be taken.

A comprehensive business plan gives you a better understanding of the details than would be possible if the business were just run on a day to day basis.

A well-written business plan will be very effective if you try to communicate with partners, employees, investors or venture capitalists ideas about your business.

A well thought out business plan will convince investors that you are serious. This greatly increases your credibility.

A written document is a reference to how much a business has achieved and how much it plans to achieve in the future.

In conclusion: I you are a serious entrepreneur, you have to have a business plan. If you don’t, your business will not be going in any direction in particular. You shall waste a lot of time making haphazard decisions instead of progressing.

Situation analysis is basically done to analyze your:
1. ‘Customer’ and ‘customer relation to product’
2. Location where you could set up your business
3. Competition

Situation analysis gives you a much better understanding about these three things. It is used to understand what kind of environment your company will be in, what are the factors that may affect its possibility to succeed, and what might make your business fail.


To understand your consumer and his/her relation to your product/service, answer the following:

  • Who is the likely consumer?
  • Where does he/she live?
  • What is his/her age?
  • What is his/her income?
  • What is his/her level of education?
  • How many potential customers are there?
  • Are customers likely to perceive a purchase risk?
  • What needs does the product/service satisfy?
  • How is the product going to be used?
  • What are the other uses of the product?
  • How many units is the customer likely to buy?
  • If it is a service, will the customer have to be present when the service is provided?
  • Where would the customer learn about the product/service (e.g. friends, newspaper)?
  • Who actually would buy the product (e.g. Mom, Purchasing agent)?
  • Who influences the buying decision? (e.g. kids, engineers etc.)
  • How much would the customer be willing to pay for the product?
  • How much would price change affect your customer?

Not all these questions pertain to every type of business. If they do pertain to your business, find out the answers. After finding the answers you will have a very good understanding of your customers and your product/service.


If you want to start a food stall or a restaurant or plan to go into the retail business, it is very important that you choose a good location for your business. It is also important to choose a good location when you are about to start a production or manufacturing house.

To evaluate the location that you have chosen, answer the following questions:

  • What is the total cost of renting or acquiring the property?
  • What is the estimated cost of any necessary repairs, remodeling etc.?
  • Does the site provide as much space as you need?
  • If customers visit your place of business-
    -Is adequate, convenient and safe parking available?
    -Is public transportation available?
  • Is the location likely to develop "drop in" or "impulse" consumer traffic?
  • Is the site located at a popular area (E.g. Near a movie theater or a shopping complex)?
  • If not, you will have to spend a lot of money marketing your product/service and it will eat into your profits!
  • What other types of businesses are located around your site? Are they going to compete with your business?
  • Is fire protection close by?
  • Are basic utilities available (E.g. water, electricity, sewer, gas etc.) at a reasonable cost?
  • Are you going to be transporting products from one part of India to the other? If so, are the expressways located close to your location?
  • What is the history of the site? What types of businesses were previously run at the site? Why are these businesses no longer there?

After seeking answers to these question you will be able to get a good judgment of how good the location you have selected is.

In some businesses some questions are more important than other questions. For E.g. If you are in the manufacturing business, you will not have too many customers coming to your site. So you do not have to bother about customer parking. If you are in the retail business, customer paring is an important factor.

If you are an entrepreneur you will generally find it most convenient to start of your business right at home. This removes a lot of overhead costs of rent, electricity bill etc.

Only if your business is so large that accommodating it at home will be difficult, think about choosing another location. In some cases, it is required that you set up at some other location, (E.g. when you are starting a restaurant) in that case, you have no choice but to choose the location wisely. Let the location questionnaire above guide you in your decision.

The following is the list of questions that will help you analyze your competition. Answer these questions and you shall know much more about your competitors and how they are going to affect your business.

(Make sure that you do not define your competition too narrowly. For E.g. when you are staring a movie theater, your competition is not only other movie theaters, but also VCD rent places etc.)

  • Who are your potential competitors?
  • What are their strengths and what are their weaknesses?
  • Who are the customers of each competitor?
  • Why might a customer buy from them instead of you?
  • What is the approximate sales volume of each competitor? Are there significant trends in sales?
  • What is market share of each competitor?
  • What is the pricing structure of each competitor?
  • Do your competitors enjoy the support of a strong franchise or parent company?
  • How is each competitor positioned? This means what is the mental image that comes in your consumers mind when he/she thinks about your competitor?
  • How do your competitors promote their products and services?
  • What are the distribution arrangements of the competitors?
  • Who are the suppliers of each competitor?
  • Are there any new competitors that are going to come up in the industry?
  • What are the management strengths and weaknesses of each major competitor?
  • Are the competitors well financed?
  • How committed is each competitor? Will they fight hard for market share?
  • Will the future technological developments affect your competitor? Are they better equipped to handle the change than you?
  • How do the competing products rate in terms of quality, size, appearance etc.?
  • What are the credit terms of the major competitors?
  • How much warrantee do the competitors give for their products?
  • Do the competitors own any exclusive distribution rights that would affect your market entry?
  • What are their hours of operation?
  • How saturated is the competition? Is there room for a new business?

Before you go ahead, you must try to find out the answers to all the questions on this page. This will give you a good understanding of your own business. During the process of finding the answers you may realize that there are certain flaws in your thinking and your business idea. Go back and correct these flaws.

All this information will have to be documented into the business plan. Having information about your customers, competitors etc. tells you how you should run and set up your business so that you can cater to the needs of the market. Having all this is essential if you intend to approach a bank, financial institution or a venture capitalist with your idea.

Why Technical Projects Fail

Computer projects fail when they do not meet the following criteria for success:

  • It is delivered on time.
  • It is on or under budget.
  • The system works as required.

Only a few projects achieve all three. Many more are delivered which fail on one or more of these criteria, and a substantial number are cancelled having failed badly.

So what are the key factors for success? Organisations and individuals have studied a number of projects that have both succeeded and failed and some common factors emerge. A key finding is that there is no one overriding factor that causes project failure. A number of factors are involved in any particular project failure, some of which interact with each other. Here are some of the most important reasons for failure.

1. Lack of User Involvement

Lack of user involvement has proved fatal for many projects. Without user involvement nobody in the business feels committed to a system, and can even be hostile to it. If a project is to be a success senior management and users need to be involved from the start, and continuously throughout the development. This requires time and effort, and when the people in a business are already stretched, finding time for a new project is not high on their priorities. Therefore senior management need to continuously support the project to make it clear to staff it is a priority.

2. Long or Unrealistic Time Scales

Long timescales for a project have led to systems being delivered for products and services no longer in use by an organisation. The key recommendation is that project timescales should be short, which means that larger systems should be split into separate projects. There are always problems with this approach, but the benefits of doing so are considerable.

Many managers are well aware of the need for fast delivery, leading to the other problem of unrealistic timescales. These are set without considering the volume of work that needs to be done to ensure delivery. As a result these systems are either delivered late or only have a fraction of the facilities that were asked for. The recommendation here is to review all project plans to see if they are realistic, and to challenge the participants to express any reservations they may have with it.

3. Poor or No Requirements

Many projects have high level, vague, and generally unhelpful requirements. This has led to cases where the developers, having no input from the users, build what they believe is needed, without having any real knowledge of the business. Inevitably when the system is delivered business users say it does not do what they need it to. This is closely linked to lack of user involvement, but goes beyond it. Users must know what it is they want, and be able to specify it precisely. As non-IT specialists this means normally they need skills training.

4. Scope Creep

Scope is the overall view of what a system will deliver. Scope creep is the insidious growth in the scale of a system during the life of a project. As an example for a system which will hold customer records, it is then decided it will also deal with customer bills, then these bills will be provided on the Internet, and so on and so forth. All the functionality will have to be delivered at one time, therefore affecting time scales, and all will have to have detailed requirements. This is a management issue closely related to change control. Management must be realistic about what is it they want and when, and stick to it.

5. No Change Control System

Despite everything businesses change, and change is happening at a faster rate then ever before. So it is not realistic to expect no change in requirements while a system is being built. However uncontrolled changes play havoc with a system under development and have caused many project failures.

This emphasises the advantages of shorter timescales and a phased approach to building systems, so that change has less chance to affect development. Nonetheless change must be managed like any other factor of business. The business must evaluate the effects of any changed requirements on the timescale, cost and risk of project. Change Management and its sister discipline of Configuration Management are skills that can be taught.

6.Poor Testing

The developers will do a great deal of testing during development, but eventually the users must run acceptance tests to see if the system meets the business requirements. However acceptance testing often fails to catch many faults before a system goes live because:

  • Poor requirements which cannot be tested
  • Poorly, or non planned tests meaning that the system is not methodically checked
  • Inadequately trained users who do not know what the purpose of testing is
  • Inadequate time to perform tests as the project is late

Wednesday, June 11, 2008

A Simple Hello World Program in MASM

1. Code File (.ASM):



.386
.model flat,stdcall
option casemap:none

include windows.inc
include kernel32.inc
include user32.inc


includelib kernel32.lib
includelib user32.lib



DlgProc proto :DWORD,:DWORD,:DWORD,:DWORD


.data

appname db " My First Applicaton",0 ; you can use db for BYTE also
msgerror db "Error !",0
msgnotext db " No Text Entered",0
strformat db "%s %s",0
hello db "Hello",0

.data?

yourname db 30 dup(?) ; buffer to store name equal to C equivalent name[30];
hinstance dd ? ;a DWORD varibale to store the instance of Application
greetingmessage db 100 dup(?)

.const

IDD_DLGMAIN equ 1001
IDC_NAME equ 1003
IDC_LBLNAME equ 1002
IDC_CMDOK equ 1004

.code


start:
invoke GetModuleHandle,0; invoke is used to call a fucntion
mov hinstance,eax ;the finction returns value in Accumulater Register which is EAX in x86 machines...ofcourse its Asemlbly you need to know ;)
invoke DialogBoxParam,hinstance,IDD_DLGMAIN,0,addr DlgProc,0 ; addr DlgProc is C equivalent to &DlgProc
invoke ExitProcess,eax

DlgProc proc hwnd:DWORD,umsg:DWORD,wparam:DWORD,lparam:DWORD
.if umsg==WM_COMMAND
.if wparam==IDC_CMDOK
invoke GetDlgItemText,hwnd,IDC_NAME,addr yourname,sizeof yourname ;Fetch up the text from Textbox IDC_NAME and store it in the bufer
.if eax>0 ;If the textbox contains data because the function will return the lenght of string it fetched
invoke wsprintf,addr greetingmessage,addr strformat,addr yourname,addr hello
invoke MessageBox,hwnd,addr greetingmessage,addr yourname,MB_ICONINFORMATION
.else
invoke MessageBox,hwnd,addr msgnotext,addr msgerror,MB_ICONASTERISK
.endif
.endif
.elseif umsg==WM_CLOSE
invoke EndDialog,hwnd,0
invoke PostQuitMessage,0
.endif
xor eax,eax
Ret
DlgProc EndP

end start



2. Resource File (.RC) :

;This Resource Script was generated by WinAsm Studio.

#define IDD_DLGMAIN 1001
#define IDC_NAME 1003
#define IDC_LBLNAME 1002
#define IDC_CMDOK 1004

IDD_DLGMAIN DIALOGEX 0,0,250,94
CAPTION "A Hello World Application"
FONT 8,"MS Sans Serif"
STYLE 0x10cc0000
EXSTYLE 0x00000000
BEGIN
CONTROL "Enter your name :",IDC_LBLNAME,"Static",0x50000000,11,24,55,13,0x00000000
CONTROL "",IDC_NAME,"Edit",0x50010080,75,24,171,12,0x00000200
CONTROL "&OK",IDC_CMDOK,"Button",0x50010000,71,55,99,20,0x00000000
END

Tuesday, June 10, 2008

Microsoft Macro Assembler Tutorial (MASM)

Microsoft Macro Assembler Tutorial (MASM)


Perquisites:

• Basic Programming knowledge of Any Language
• Must know what a compiler, interpreter, assembler and linker are.

Introduction:

MASM is Assembler developed by Microsoft for assembly language programmers to be able to create Windows Applications using WINDOWS API’s.
It Contains set of include files and libraries which contains declarations of various windows API’s. In this tutorial I’ll be telling you basic features of MASM and how to code a simple Hello Application using MASM. For writing MASM apps I will use a free IDE (Integrated Development Environment) WinASM. WinASM is free and have good features like intellisence which is need of programmers in this fast coding world.

Basic Building Blocks:

A programming language consists of Data types, Expressions or Statements, Conditionals and Looping. Masm comprises of “Basically” 3 types of Data. I insist on the Word Basically because the Windows Data types declared in the header files like ‘HWND’, ‘LPCTR’ are none other then Aliases used for WORD and DWORD data type in MASM.

So there are basically three Data types in MASM:
1. BYTE: This is the smallest data type and uses 8 bit for its storage. its alias is 'db'.
2. WORD: This data type uses 16 bits and is generally referred to int/integer data type in other languages. its alias is 'dw'.
3. DWORD: This is called ‘Double Word’ and takes 32 bits for its storage and is referred to as long/unsigned long data type in other Languages. its alias is 'dw'.

So you write a program using these three basic data types.
Here I would like to give a general reference to you guys how and when to use these data types.
For storing an integer number you should use WORD data type,
For storing a Long Integer number you should use the DWORD data type and for storing a single character use BYTE Data type.
Strings are handled in different ways,(They are rather Array of bytes).
Now comes the general instructions used in MASM. You all are thinking that Assembly Programming must be tough but guys it isn’t masm contains macros which enables you to use English like statements such as if…else statement, while…end while statement. Now importantly comments are used by ‘;’ sign. All the coders must know how comments are crucial in Big Software Development

e.g. if you want to compare two variables , if they are equal or not, an assembly instruction should be as

CMP EAX, BYTE PTR [szName]
But in MASM you can use Conditions Macro .IF as

.IF EAX==BYTE PTR [szName]

.END IF


General Structure of a MASM Program:

Here I will write a general structure of a MASM program and I will explain it. I will be writing a simple program that will show a message box on the screen


.386
.model stdcall,flat

Include windows.inc
Include kernel32.inc

Includelib kernel32.lib
Includelib user32.lib

.data

szMessage db “Hello !”,0
szTitle db “First MASM Program”,0

.code

Start:
Invoke MessageBoxA, 0, addr szMessage, addr szTitle
Invoke ExitProcess, 0
End Start



Now the first line is ‘.386’ this tell the Assembler that the code will be compatible on Intel 80386 Processor and above. However processor below it will not be able to execute the program 100% accurate and may even crash.

The second line ‘.model stdcall,flat’ tells the Assembler that the code model to be used is for Protected mode and the parameters to the functions will be passed from right to left .

Now in the third line we are using include statement which is similar to C ‘s #include statement, that is this is including a header file ‘Windows.inc’ containing prototypes of WINDOWS API’s and Constants. Note: Header Files in ASM end with .inc extension. Then you will notice another preprocessor ‘Inclidelib’ this is a flexible preprocessor which tells which libraries to be linked while generating the EXE.

Now most importantly All the variables in MASM are declared in ‘.data’ section and all code is written in ‘.code’ section so I have declared 2 string variables in data section which are holding strings to be used in messagebox API.

Then I am writing the code in ‘.code’ section. The code section starts with an Entry point Label which you can name anything you wish. I named it Start. Note: The label should end with semi colon. All the code is written with in this label blocks. The label is then at the ended with the ‘end’ statement as end label.

Now I have Called the MessageBox function using Invoke macro. And this is the general basic tutorial of MASM. I hope I have given a brief intro of MASM to the existing programmers.

Regards,
Rohit