The Importance of Simple English

Mukul Gupta,  Wednesday, September 27th, 2006

Communication is all about getting your message across.

There are five basic components of a communication process i.e. The Sender, The Message, The Encoding, The Medium and The Recipient. The sender creates a message which he wants to send to the recipient. The message is then encoded in a format that the recipient can understand. For example, if the recipient understands only French then the message is translated to French or The Enigma Machine encoded the message in a  Format that only Nazi’s could understand. Finally, a medium is selected. The medium can be email, phone call, face-to-face discussion, Fax or even Smoke Signals. A successful communication is said to have occurred when the recipient understands the message and send the feedback back to the sender. 

The communication process if subjected to lot of different barriers which are called “noise”. Noise can occur at every level of communication process. It can be a poor phone line connection to inattentive recipient. There is so much to go wrong that the chances of a successful communication become fairly low. However, we want to focus on the noise that we can control directly and thus improve the chances of a successful communication.

Too often people end up using words which distorts the message and does not coveys the meaning effectively.  How do you know that your sales are not suffering because your software license policy or returns policy requires a bunch of lawyers to interpret it?  Or Conversion is low on the website because people can’t seem to understand your product descriptions? As marketers, we have to communicate with highly diversified audience and hence it becomes important that we focus on “encoding” our messages in such a way that the meaning can be understood by a broad section of people without any effort.

Here is why using Simple English makes sense:

Effective Communications

A message written in simple English is very effective as people can understand it the first time that they read it.

Cost Savings

As the meaning is clearly understood, it is not open to miscommunications and you do not have to incur administrative costs in having to clarify them or explain them. Thus, you do not have to incur customer service costs.

More Sales

People want to make informed decisions and using simple English builds confidence in the minds of the customer which results in better sales.

Saves Time

Using simple English ensures that you do not have to go through the pain of going through all the re-writing and explanations.

Using simple English gives your organization a professional and friendly image and it builds your credibility as well. Thus, next time you are tempted to use a difficult to understand word – Think Again!

LIVE Camera – View our offshore PHP programming team @ work

Abhishek Rungta,  Friday, September 22nd, 2006

Hello Friends,

We have put up another IP camera to stream LIVE video of one of our software development center in Kolkata.

You can see our team work LIVE at http://61.11.120.42:1060/ (Login: viewer / Pass: viewer)

This center accomodates more than fifty members of our PHP Programming team from our Kolkata offshore development center. You can find us working here during weekdays between 9:30 am till 6:30 pm (IST = GMT+5.5 HRS). Sometime we work weekends and late nights, so you can catch us even beyond the specified times.
We are in process of putting in more cameras to give you LIVE pictures from all development centers of Indus Net Technologies.

Regards
Abhishek Rungta

Adding more people to delaying projects

Mukul Gupta,  Wednesday, September 20th, 2006

A project that can be done by a single developer in 3 months is said to be 3 man-month projects. Often the calendar duration is 45 – 60 days which means that the vendor organization will allocate 2 developers to work on it. So, with a quick calculation you can tell that a 3 man-month project will take 1.5 months if 2 developers are working on it. Does than mean that if you can have 3 developers working on project then this project can be done in 1 month? I don’t think so!

“….Add more people and get it done sooner” – This is the #1 idea that 90% people get when they have a pressing deadline and they want the project to be done sooner. But, as we know, this never has worked and it never will.

Let me introduce you to Brook’s Law:

Assigning more programmers to a project running behind schedule will make it even later, due to the time required for the new programmers to learn about the project, and the increased communications overhead

Dr. Fredrick Brooks wrote this in a book called “The Mythical Man-Month: Essays on Software Engineering” which was published in 1975. Today still after 25 years of first print, the law holds good and the book continues to be the bible of software engineering.

He gave us a group intercommunication formula which basically is n(n-1)/2, where “n” is the number of people working on the project.

So when we have a team of 2 people working this become 2(2-1)/2 = 1, i.e. when 2 people are working there is only 1 channel of communication. Lets see what happens when we have 4 people working on a that same project. The intercommunication channel becomes: 4(4-1)/2 = 6

The above examples clearly show that when the team size is doubled, the communication overhead has increased six times.

To know this is very important when a project is outsourced to a lower wage country like India. This is because the difference in wage rate is very tempting. The contracting company often pays $50/hr in-house whereas the project is contracted   out at $10 per hour. Thus doubling the resources for a project at vendor’s organization still seems like a great option to impress the client with a faster delivery since it does not bear severe implications on profitability.

Why “Niche Marketing” will die its own death!

Mukul Gupta,  Tuesday, September 19th, 2006

Take any marketing literature and you come across experts who are talking about finding a niche and exploiting it. They tell you that, one should create a new market for your business thus making the competition irrelevant.  But, the reality is that finding a niche will only work if you can fulfill three important criteria:

1) It should be profitable to serve that market

2) It should have enough number of buyers to make your business sustainable

3) The market should be growing so that you can continue meeting the demand for a long time.

If the niche is not profitable then there is no incentive for you as a business owner to serve it, if the business is profitable but it has low number of buyers then you wont be able to sell to as many people to meet your financial goals and finally, if the market is not supposed to grow then one day there will be no more buyers to sell to.

The theory of economics suggests, that if such a profitable, sustainable and growth oriented “niche” market exist then sooner or later a large number of sellers will be attracted to it because of the profit potential. Then, the market will no longer remain niche and it will become “crowded”. Thus, the niche business theory sounds great buts it remains questionable as a long term business strategy. 

Moreover, with time it will become increasingly difficult to find niche areas and information technology will ensure that any niches will become competitive faster than ever. So, being optimistic about your business because its niche is not a good strategy at all! Although being a niche can be rewarding in short-term (1 – 3 years) but you should actually focus on superior value delivery and effective competitiveness in a longer term.

In order to remain a successful company you need to do following:

Control Costs
——————-
You may be tempted into thinking that since the profits are high as you are playing in a “niche” market, you should be in plush offices and other things you don’t need. This is wrong! Soon, new sellers will create pressure on pricing and naturally, profitability will come down. Then, having a lower cost of operations will mean the difference between death and survival. Lowering cost does not only means cutting costs, but it also means having lower costs because of superior engineering skills. It a nutshell, you should make it impossible for your competitors to deliver the same product or service at lower cost.

Deliver Great Customer Experience
———————————————-
You need to look at every customer touch point in your business and see the kind of experience it delivers to your customers. Just making the customer happy does not ensure customers loyalty. The customer should have a great experience while interacting with your organization and should feel special. This will ensure that when the niche market gets crowded, you will get plenty of “word of mouth” and your existing customers won’t leave you. 

Be Different
——————
Being different is not being in a “niche”. It means doing thing in way that is appreciated by your customers. You can be different in the way you handle Sales, Distribution, Manufacturing, Customer Service, Engineering, Branding etc. You have to ensure that this differentiation delivers more benefits at same costs as competitors or delivers the same benefits at lower cost.

Keep your staff happy
——————————–
Your people are your only “niche” which competitors cannot copy.  Ultimately, it’s your motivated employees that deliver outstanding customer service and build your organization. 

Keep Changing for Better
———————————–
You should encourage risk-taking, creativity and intrapreneurship in your organization.  Stressing too much on existing tools, processes and techniques stops the evolution process which is necessary to ensure growth.

Thilot Holland BV praises Design2Please efforts

Abhishek Rungta,  Wednesday, September 13th, 2006

Thilot Holland BV praises Design2Please efforts

Design2Please.com, our web design service brand serving small and medium sized companies, have recently completed a web site design for Thilot Holland BV to highlight their Hand Seeding Machines.

Design2Please team designed a visually pleasing and functional website, which is hosted at http://www.hz423.com/

This is what Rudy Thielen has to say about our service:

++++
My experience with Design2Please has been extremely positive. They have done a great job on the design and thanks to their attention to detail, our expectations were fully met. Requests and amendments were put in on the fly. From the price to the quality of the design, I would not hesitate to use Design2Please again. Thank you guys!
++++

I will keep you updated with more success stories in days to come.

And –

A very big “Thank you” Rudy for your kind words. We look forward to work with you in years to come!

Note: Design2Please.com is a service brand of Indus Net Technologies. This division develops cutting edge websites for small and medium sized businesses globally at a very affordable cost.

Filed under: Portfolio 0 Comment

Advantages of Outsourcing

Mukul Gupta,  Saturday, September 9th, 2006

This article points out some advantages of outsourcing, not just in a context of IT but in general context as well. Economist Simon Domberger published a study in 1998 called “The Contracting Organization” in which he published the results of his study of various organizations.

According to this Study, the following are the benefits of outsourcing:

Specialization
If an organization focuses its attention on the activities at which it is very good and efficient, the value that it can add is maximized and it benefits from the economies of scale as well.

This can be seen in organizations like Nike or Nokia or iPod which focuses just on product design and outsourcers all its manufacturing activities elsewhere.

Market Discipline
When an organization contracts out the delivery, support or maintenance of its product of service, the focus shifts to right place i.e. Customers, Competitors and Markets. Thus it becomes better at spotting trends and responds to changing market conditions.

With outsourcing, the company starts to focus on outputs and not inputs and that leads to process innovations and reengineering to deliver maximum customer value.

Flexibility
As an organization works with a network of vendors it will find it easier to add or change vendor organization in response to market demand. This leads to huge financial benefits.

It is always more difficult jettisoning an in-house department than stop working with a vendor organization, when the demand for goods and services are no longer there. Similarly, in a short-run an organization cannot build up a department immediately for a new product or services.

Cost Savings
Of course, outsourcing delivers significant cost savings in comparison to delivering the product or service in-house. This is because of two main factors

1) Specialization in vendor’s organization: A specialized vendor passed on its benefits of engineering processes and economies to scale to your organization which results in cost savings

2) Low Cost labor: An organization can benefits from access to low cost labors in other countries such as India.

More and more customer wants a single point to manage all their IT requirements and saying a “no” means loosing an account forever. In such a scenario outsourcing what you cannot do yourself is matter of survival.

Here is a summarized list of reasons why you might consider outsourcing as a strategy for your business:

1. You can get access to product or services that you cannot produce internally
2. You can get access to more skills / expertise
3. You use your in-house staff in more profitable ways
4. You can match any increase or decrease in demand more effectively
5. You can concentrate on your core, most crucial businesses
6. Allow and encourage more efficient work practices
7. Penalize non performance at contract level agreements
8. Reduce cost of operations
9. Improve cash flow in your organization
10. Improve the flexibility of your business

Thus, there is more to outsourcing then just saving money. When you start looking at the bigger picture, you realize that outsourcing as a strategy is crucial to compete effectively in the future.

Difference between Calendar Days and Work Days

Mukul Gupta,  Friday, September 8th, 2006

Both seasoned IT entrepreneurs as well as developers make this common mistake. They don’t seem to quite understand the difference between calendar days and work days. So let me ask you this question – “What should be the delivery date of a project starting on October 1st and having an estimated effort of 160 hours?”

A typical calculation goes like this:

160 hrs / 8 hrs per day = 20 days. So, if the project is starting on October 1st, it should all be done on 21st October. Right? Wrong!

Here is what is involved, in understanding the delivery date based on start date and total number of hours that is required to accomplish the task:

Number of Days per Week
This is the number of days for which the office of the developer’s organization is going to be open in a week. It can be any number from 5 – 6. Like some companies are open for half time on Saturday. So, this figure is 5.5 for such an organization.

Number of Hours per Day
This signifies, the number of normal work hours that developer will be working in particular day. Do not take overtime in account because then you will not have any buffer to use should the project slip.

So, based on the above two numbers, if the Number of Days per week is 5 and the number of hours per day is 8 then the developer is going to work 8 hours per day then you will 8 X 5 = 40 hours of work done per week.

This means it will take 4 weeks to get 160 hours of work done. This is an equivalent of 28 calendar days which means that given a project started on 1st October it cannot be completed before 28th October.

Granted, that the above calculation is very simple, but you get the message! In reality, things are more complex because the utilization of hours depends on other factors like Number of resources on the project, Number of parallel tasks, Holidays etc.

Why knowing this is important?

Knowing this is very important for two very important reasons:

1) It forces you to plan in advance. As you try to think about delivery dates, you automatically begin thinking about the things that affect it.

2) It prevents unnecessary dissatisfaction. Had you not known this, the delivery on October 28th would have been perceived as a 25% slippage in project deadline whereas the developer has been able to meet the deadline.

Technical Writing: A Layman’s Gateway to Software Use

mousumi,  Friday, September 8th, 2006

In an era when the e-world is reaching beyond the material Universe and almost everything turning digital, it becomes a duty of the Elite to give the plebeian an essence of the technological advancements. However, the Elite do understand a layman’s limitations, both psychological and existential – and is perhaps the only time when he agreed with the Technocrats worldwide. It was the Technocrats who longed to market their high-end technical innovations but was not knowledgeable enough to break down the tech-lingo into a simpler form. Upon their quest for a solution, they met the Elite who just loved studying technology, but this time he had to study the subject with the prime objective of explaining it to the common man in the easiest way possible. Nothing comes without a price, so technology had to face the commoner without its armaments i.e. the jaw-breaking terminologies and jargons through an inscribed gateway. The gateway under discussion is today’s Technical Writing, which marked the Second Coming of Technology.

What is Technical Writing?

A detailed or persuasive form of writing to convey information for technical or business purposes, technical writing needs to be useful and the presented information must be easily understood and acted upon. Highly under-rated as just what-to-do and how-to-do-it instructions, it is a difficult task demanding an easy and lucid style while writing about technical subjects. Very often technical writing has flat edge making documents, difficult and tedious to read. But there’s no reason why technical writing shouldn’t be lively and interesting.

Technical writing must follow certain guidelines, which are:

  • An Intelligent architecture – The style of writing must allow the reader a prompt understanding of the subject.
  • Avoidance of Confusion – Technical writing should be devoid of any expression whose meaning cannot be determined from its context.
  • Choice of Words: Malapropism (misusing a word) or the usage of difficult words should be avoided as a rule of thumb.
  • Conciseness – The writer should be capable of expressing a great deal in just a few words.

Needless to say, apart from the points mentioned above, grammatical rules should be given prime importance.

How does Technical Writing Work?

The sole idea of Technical writing is to convey information to the mass without the technical jargons associated through a three-fold process:

  • The Language: Technical writing involves easy-to-understand, lucid language.
  • The Instructions: Technical writing cuts short on technical complexity giving usability options the first preference.
  • The Precision: Technical writing excludes irrelevant information that offers nothing significant to users.

The above points are the grounds where technical writing really cashes in. However, we must also present here the related fields where technical writing has sown its seeds. The table provided underneath is intended to provide a clear vision on the topic.

Sub Divisions
Field of Application
Details
User Groups
Basic Technical Writing Installation Manuals Step-by-step guide for installing/setting-up an equipment/software. Novice end users.
Intermediates.
Casual Users.
Maintenance Manuals Step-by-step guide for maintaining a piece of equipment.
User Guides and Product Manuals Descriptive, step-by-step guide for learning how to operate an equipment/product.
Quick Reference Guides Troubleshooting/additional information delivering books.
Computer-based Training Subject specific step-by-step guide for learning computers.
Online Help guides Troubleshooting guides available on the Internet.
High End Technical Writing Software/Code Documentation A form of documentation embedded within the source code of software, describing the various aspects of the codes intended operation(s). Should be easily accessible to a user. System Administrators
Database Developers
Programmers
Project planning & Management A process that identifies the lifecycle and visibility of the tools a project may use and describes the essential planning i.e. organization plan, risk factors, test plans, installation plan etc. Development Managers, Project Managers, System Administrators, Test Managers.
Indexing of Printed and
Online documents.
A detailed topic analysis of any given text or a condensed overview of related texts in the form of a conceptual map. Indexing helps readers to navigate easily through the information provided in the main content(s). End users and consumers.

Since we started off this topic with the prime intention of explaining how technical writing aids the plebeian to comprehend the binary universe, for the time being, we shall concentrate only upon one of the aspects of basic technical writing, User Guide. A definition for the term is a must and it’s something, which should come first.

Primarily written for non-technical individuals; User Guides are technical communication document or instruction manuals that explain in layman’s terms how to use a software and are generally a part of some other documentation like System Administration guides or some other related material. These guidebooks are meant for a basic, if not a proper understanding of an application or system. Simple language with short sentences and accompanying graphics are considered key factors for any of these User Guides, the sole reason being to help the user as much as possible while he tries to muster in his head the different aspects of a given application. User Guides are generally read in a hurry; they only come out when one is frustrated and losing patience with the software. This is where the easy and lucid style of writing and illustrations come handy. A user guide comprises of several sections that help in getting the most out of the extensive functionality and content available. Usually, a user guide comprises of the following sections:

  • A preface, containing details of related documents and information on how to best use the user guide.
  • A contents page, listing the contents of the user guide.
  • A guide on how to use at least the main functions of the system.
  • A troubleshooting section detailing possible errors or problems that may occur along with how to fix them.
  • A FAQ (Frequently Asked Questions).
  • Where to find further help and contact details.
  • A glossary and, for larger documents, an index.

The Mindset:

The common man is not interested in knowing the steps of an operation; his preference is always the result obtained by the click of a mouse. A user guide makes it easy for him to understand and gather the required information on how all of features in a software work.

What it offers:
Since user guides cut out on complexity, therefore, they:

  • Make a piece of equipment popular among end users acting as a form of alternative advertisement.
  • Add value to a product.
  • Builds a better brand image.
  • Conclusion:

    We have finally arrived at the Event Horizon where extremities have finally met. User guides have taken up the initiative to literate the entire mass, which so far shirked from the idea of getting technically endowed. The primary solution being provided and Artificial Intelligence taking its form, should we wait for the program which shall read human thoughts and execute the software functions, accordingly? Let the fastest pace of web content and human intelligence come up with the answer.

    Read this before you redesign your database !

    Mukul Gupta,  Wednesday, September 6th, 2006

    As business evolves, the information that they store and process also changes and that means the underlying database structures that have been holding well for many years needs to be changed as well. This are even more complicated when you have redesign an “in use” system.

    Here is a step by step guide on what needs to be done:

    Step 1: Draw the structure of the new database on Paper
    Based on the new business requirements, you need to draw the structure of the new database on paper. We often use MS Access at this stage because it has a got a “Documenter” tool which generates a real professional output in a relatively short time.

    Step 2: Analyze Existing Scripts / Code
    Now you need to analyze the existing code to see how they are using the current database structure and how this usage will change based on the revised structure. For instance, if you are trying to split a long table into two separate tables, then all previous “Select *” queries on that table will be useful. Thus, all the existing code will have to be rewritten.

    Step 3: Create a migration plan
    You need to create a migration plan. Leaving the tech stuff aside, this basically means how you are going to transfer the data from the old data into the new database. For this you will have a write a script of some kind. This stage is very critical because you might have to adjust your new database. For instance: If in the old database you have customers table which had a name column. Now, if the revised database has firstname, middlename and lastname column then I can bet your database redesign dreams will end here as you can’t migrate the data between the two versions unless your plan includes manual typing.

    Step 4: Create the new database
    Now you get to design the new database structure as it should be implemented unless you have done in the very first step itself.

    Step 5: Test the Migration Plan
    You now need to test the migration plan on a sub-set of “old” database to ensure that the data can be migrated as you planned.

    Step 6: Adjust the code
    Now its time to edit the code! You need to go line by line and change all queries which are affected by the revised design.

    Step 7: Perform the Migration
    The day you have been waiting for has finally arrived; you get to perform the migration which means you upload the new code and execute the migration script.

    Last Step: Test
    All said and done, done forget to test the whole system once again to ensure that things are working as expected. 

    Of course, you should never play with the live database. With all those GUI tools available in the market, it’s real tempting and easy to make changes on the live system. Always work on a backup copy and perform the migration on actual system once the dummy system has been tested properly.

    About our MySQL related services

    We offer professional mysql database design, implementation and performance tuning services through http://www.script2please.com

    Filed under: PHP / MySQL 0 Comment

    MySQL Performance Optimization

    Mukul Gupta,  Saturday, September 2nd, 2006

    MySQL is a rock solid, lighting fast database server which has been designed for two factors speed and performance. It is the Ferrari of databases: Light weight, fast and Built for the high speed tracks!

    I still hear an awful lot of stories from owners whose databases are running two slow. In my experience, the three main places to look for problems are:

    1) Faulty Database Design
    2) Bad Queries
    3) Server related factors

    Faulty Database Design

    Proper database design is the single most important factor for the ensuring performance and maintainability of the database. Here is what you need to answer when designing a table: “Can I reduce the size of data that each row will have?” Here is what you can do:

    • Use unsigned numeric values when the application will not store negative numbers. Like the “quantity ordered” of an item in an ecommerce application is never going to be -$125.
    • Use Variable length values instead of fixed length value i.e. use varchar instead of char
    • Do not use unnecessarily large field sizes. For most ecommerce application “unsigned smallint” is more than enough to store inventory count. A field described as “unsigned smallint” can store a max value of 65535.
    • Don’t ignore normalization; its helps prevent unnecessary repetition of data. The part B of this is, don’t overuse normalization. If the table will not grow in size significantly, there is no point in normalization. For example, if the user table has just 20 rows (i.e. 20 employees in a company), all attempts of normalization are wasted.
    • Use Index Keys. Don’t decide keys by “The customer id has to be indexed in the order table”. If the order table is being searched 90% of the times by “order date”, it makes more sense to index “order date”.

    Remember, how a table will be used should determine how it is designed. Spending time here will save years of frustration.

    Bad Queries

    It sounds too good to be true but you wont believe the number of developers out there who completely suck at writing queries. There are two types of bad queries:

    a) Unnecessary Queries: These are the queries that shouldn’t have been made in the first place. The only way to avoid this is asking, “Do I really need this data?”

    b) Inefficient Queries: These are the queries that do not use the underlying table structure or MySQL functions in the correct way.

    Here is a starting point to start looking at problem areas:

    • Unnecessary usage of “Select * from“statements when the entire processing is being done on a single column. The more data is fetched from the server the more work MySQL has to do and more bandwidth it takes.
    • Using sub-query instead of a join. On a properly designed database, joins are incredibly fast. Using sub-queries just shows a lack of knowledge.
    • Improper use of Keys. This is especially valid for range checks. Remember to use the “Explain” statement to check the usage of keys and then use the “use key” statement in your “where” clauses to force key usage.

    Server Factors

    Everything done correctly, there still may be some server factors that may be causing the system to be slow. These are: Hardware related and Server configuration related.

    Here is what you can do about the hardware:

    • The more RAM is on the system the better it is. MySQL frequently fetches data from the RAM and more the RAM is on the system, the better it is.
    • Buy the fastest possible RAM! A slower RAM is just irony.
    • Once you are settled with the RAM size and speed, look for processing speed. MySQL can use multiple processors.

    Once you are satisfied with the hardware, there are a set of variables in “my.cnf” that you must look at:

    • key_buffer_size: This describes the memory available to store the index keys. The default is 8 MB but you can set it to 25% of the RAM
    • query_cache_size: This value is by default 0. if you have a lot of repeating queries like in reporting applications etc, make sure you set this value high.
    • table_open_cache: This determines the number of table descriptors that MySQL will keep in the cache. The default value is 64. But, if you have 100 users accessing a table concurrently then this value should atleast be 100. You also have to take into considerations joins etc. Thus, this value should also be kept high.

    I hope this article will take one step further in unlocking the mystery of slow servers and help solve some of the problems.

    About our MySQL related services

    We offer professional mysql database design, implementation and performance tuning services through http://www.script2please.com

    Filed under: PHP / MySQL 0 Comment