Luyện gõ 10 ngón bài bản từ A-Z!!!

Thời gian vừa qua có một số bạn hỏi về luyện gõ 10 ngón. Nay mình post một bài hướng dẫn luyện 10 ngón bài bản từ A-Z để các bạn tham khảo.
Luyện gõ 10 ngón là một kỹ năng quan trọng đối với những người thường xuyên làm việc trên máy tính. Nó cũng như nước, như thức ăn hàng ngày. Đơn giản là vì ngày nào ta cũng làm việc trên máy tính.
Luyện gõ bàn phím 10 ngón nhanh = luyện gõ đúng 10 ngón + luyện gõ nhanh 10 ngón.
1. Luyện gõ đúng 10 ngón
– Bạn phải thuộc lòng 26 chữ cái tiếng Anh.
– Bạn nên tải phần mềm luyện gõ 10 ngón Typingmaster Pro hoặc phần mềm GS typing từ internet
– Luyện gõ theo 12 bài cơ bản trong phần mềm trên.
– Mỗi ngày bạn nên dành 15-30 phút để luyện gõ trên các phần mềm này.
– Khi gõ tuyệt đối không được nhìn vào bàn phím.
– Bạn luyện tập khả năng “đặt” 2 bàn tay lên bàn phím đúng vị trí home key một cách nhanh nhất (bằng phương pháp “mò” hoặc “sờ” gì đó cũng được). Làm thế nào mỗi khi đặt tay lên bàn phím là định vị ngay 2 phím F và J dành cho 2 ngón trỏ trái và trỏ phải.
– Một nguyên tắc quan trọng trong giai đoạn này là “Gõ đúng quan trọng hơn gõ nhanh”. Vì thế các bạn không nên nôn nóng để gõ nhanh, hãy gõ thật chậm và chắc chắn là gõ đúng >= 98% accuracy. Đây là chỉ số cho biết bạn gõ đúng bao nhiêu từ trong 100 từ.
2. Luyện gõ nhanh 10 ngón:
– Điều kiện tiên quyết: Gõ đúng 10 ngón
– Bạn nên sử dụng tất cả các ứng dụng trên hệ điều hành bằng 10 ngón
– Thường xuyên chát và gửi email bằng 10 ngón với bạn bè.
– Tập gõ theo một bài hát Việt. Lúc đầu là bài hát có nhịp điệu chậm (vd: khát vọng, đời tôi cô đơn, ….). Sau đó, luyện gõ các bài hát nhanh hơn một tí (VD: ly cafe ban mê…)
– Xem phim có phụ đề tiếng Anh, vừa xem vừa gõ theo phụ đề. Như vậy, bạn có thể vừa xem phim, vừa có thể gõ được bàn phím 10 ngón và vừa có thể học tiếng Anh nữa (tốt quá nhỉ….).
– Bạn nên dành 5 – 10 phút hàng ngày lên trang play.typeracer.com để đua với bạn bè và cũng để kiểm tra tốc độ của bạn đã tiến bộ như thế nào (Xem link: http://www.youtube.com/watch?v=yBFZq4y5Sr4hoặc http://www.youtube.com/watch?v=VdjWVK52aQo)
Ngoài ra, có một số lưu ý khi gõ bàn phím 10 ngón nhanh nữa là:
+ Luyện gõ những từ thông dụng trong tiếng Anh (vd: you, me, i, they, them, we, us, go, then, yes,…).
+ Luyện gõ những từ thông dụng trong tiếng Việt (vd: bạn, những, người, làm, đi, đứng, …)
+ Gõ ký tự ư bằng chữ w
+ Gõ ký tự ơ bằng ow (tốt hơn là gõ [) đơn giản là vì tốc độ gõ sẽ nhanh hơn khi đã quen.
+ Gõ ký tự ươ bằng wow
+ Nếu bạn gõ sai dấu thì đơn giản là gõ lại dấu “đúng” (vd: Gõ khống –> Thêm z vào sau sẽ trả lại là “không”, gõ “chù” thì thêm s vào sau sẽ tự động thành “chú”, ….).
+ Luyện gõ “xuôi” và “ngược” các cụm từ để có cảm giác “như nhau”. (VD: gõ as cũng như sa, gõ oi cũng như io, ….).
+ Lúc đầu bạn tập trung gõ cho nhanh một ký tự; sau thì bạn phải “cảm giác” gõ 1 từ nhanh như gõ một ký tự; sau nữa là “cảm giác” gõ một cụm từ nhanh như gõ một từ. Lúc đó, bạn đã là cao thủ gõ bàn phím rồi đó!!! (hì … hì…).
Và nhiều thủ thật khác. Nếu có nhiều thời gian hơn, tôi sẽ upload thêm một vài bài nữa để các bạn có điều kiện luyện gõ 10 ngón nhanh nhất có thể. Chúc các bạn luyện gõ được 10 ngón ngày càng nhanh!!!
Và nếu đã gõ được 10 ngón thì luyện gõ tăng tốc!!!Link gốc: https://www.facebook.com/maytinhdanang/posts/299667290048248

Kiến thức cơ bản cho người mới sử dụng iPhone

1.  http://www.tinhte.vn/threads/kien-thuc-co-ban-cho-nguoi-moi-su-dung-iphone.16203/

2. http://buyer.com.vn/forums/showthread.php/1370-Sach-huong-dan-su-dung-iPhone-4-Tieng-Viet-Meo-co-ban-su-dung-iPhone-4

3. http://hanoi.megafun.vn/tin-tuc/cong-nghe/cuoc-song-so/201204/29-meo-nho-nguoi-dung-iphone-can-biet-196648/

4. http://www.dienthoaisaigon.com/ky-nang/ky-nang-iphone/1281-de-su-dung-iphone-4-mot-cach-hieu-qua.html

5. http://www.youtube.com/watch?v=is6mBSAZsLk

6. http://dantri.com.vn/suc-manh-so/5-cach-keo-dai-thoi-luong-pin-cho-iphone-5s-796113.htm

12 mẹo hay cho người dùng iPhone

12 mẹo hay cho người dùng iPhone
12 mẹo hay cho người dùng iPhone

12 mẹo hay cho người dùng iPhone

Bài viết khám phá nhiều tính năng khá “hay ho” bị ẩn giấu bên trong iPhone mà người dùng không biết tới.

Bạn có thể gán cho các từ viết tắt cho một cụm từ/câu bằng cách truy cập vào Settings > General > Keyboard > Add new shortcut.
12 mẹo hay cho người dùng iPhone - 1
Nếu muốn lưu một ảnh từ website vào điện thoại, chạm và giữ nó cho tới khi thanh thực đơn hiện ra. Chạm vào “Save Image” để lưu ảnh. Ảnh sẽ được lưu trong thư mục Photos trên iPhone.
12 mẹo hay cho người dùng iPhone - 2
Trong mục Settings, bạn có thể bật tính năng Do not Disturb (không làm phiền) để không phải nhận thông báo (notification) hay cuộc gọi khi điện thoại đang khóa. Tốt nhất bạn nên để chế độ này khi đi ngủ.
12 mẹo hay cho người dùng iPhone - 3
Bạn có thể soạn tin nhắn bằng giọng nói bằng cách chạm vào biểu tượng mic trên khung soạn thảo và nói ra thông điệp muốn gửi.
12 mẹo hay cho người dùng iPhone - 4
Muốn kích hoạt bàn phím Emoji (hình mặt cười), bạn vào Settings > General > Keyboard rồi chọn “Add new keyboard”. Cuộn xuống cho tới khi bạn thấy “Emoji” và chạm vào nó. Để sử dụng, chỉ cần chạm vào biểu tượng mặt cười ở cửa sổ soạn thảo trên bàn phím.
12 mẹo hay cho người dùng iPhone - 5
Muốn tắt một ứng dụng, hãy nhấn đúp vào nút home. Một dãy ứng dụng sẽ hiển thị trên màn hình. Chạm và giữ vào biểu tượng một ứng dụng cho tới khi những ứng dụng này bắt đầu “rung rinh” rồi chạm vào vòng tròn đỏ để đóng ứng dụng.
12 mẹo hay cho người dùng iPhone - 6
Bạn có thể sao lưu danh bạ, cài đặt, email… vào tài khoản iCloud mỗi khi sạc pin và kết nối Wi-Fi bằng cách đi tới Settings > iCloud > Storage & Backup để kích hoạt tính năng này.
12 mẹo hay cho người dùng iPhone - 7
iPhone có thể kết nối trực tiếp tới Twitter, Facebook để chia sẻ ảnh hay nội dung dễ dàng hơn. Chuyển tới Settings > Facebook (hay Twitter) để đăng nhập.
12 mẹo hay cho người dùng iPhone - 8
Nếu đang đọc một danh sách dài và muốn quay trở lại đầu trang, hãy chạm vào thanh màu đen hiển thị thời gian ngay phía trên đầu màn hình.
12 mẹo hay cho người dùng iPhone - 9
Bạn có thể nhấn và giữ nút home cho tới khi “trợ lí ảo” Siri hiện lên và ra lệnh: “Set my alarm for + thời gian báo thức” để Siri đặt báo thức hộ bạn.
12 mẹo hay cho người dùng iPhone - 10
Trong khi duyệt web bằng trình duyệt Safari, bạn có thể dễ dàng chia sẻ các đường link qua nhiều dịch vụ bằng cách chạm vào biểu tượng ở cuối màn hình (giống hình mũi tên đang vươn ra khỏi hộp) và lựa chọn dịch vụ muốn chia sẻ.
12 mẹo hay cho người dùng iPhone - 11
Giao diện khi chia sẻ một trang web lên Twitter.
Bạn có thể điều khiển trình phát nhạc mà không cần mở ứng dụng. Bấm đúp vào nút home rồi vuốt dãy ứng dụng từ trái sang phải để xem các chế độ điều khiển.
12 mẹo hay cho người dùng iPhone - 12

MyHomeLibrary or How I Try Different Method of Data Managing in C# .NET

Introduction

I started reading about .NET a few months ago. As a result, I see that there are a lot of different ways to do anything you want – and this is amazing. Idea for this program – try different ways to manage data – from simple txt files, XML files to database different type engines. This program has been created as HomeLibrary application – store data about your book – just like a main flow of this app.

Background

In the background, I would like to say few words about code for this program. So, the interesting point that was used described in list below:

  • Configuration – *.config files (App.clonfig) – storing keys, parameters, connection string for database, etc.
  • Input/Output – allow to use files – I use it for storing and opening library in txt and XML formats
  • interfaces
  • DLL library
  • db usage (connected, disconnected methods, EF)
  • LINQ

The design of the program is very simple – just few dataGridViews for representing library and fields with buttons for controlling it. I try to prepare same GUI for all engines (txt, XML, db usage). You can see the program in the picture below:

Using the Code

For this project, I’ll try to use such points as Interface and DLL library.

The logic of the program is described in few pictures below. At first, you can see DLL classes for DB usage. I try to separate code for usage Db in DLL for future usage. In this application, I use connected and disconnected methods of bd usage, and also try to use EntityFramework.

In WinForms, I try to isolate each engine type in a separate class, and use it in mainForm.cs.

Also, for this application, a simple db was created. One table Book and another LibraryStock:

As described above, there are a few classes for realizing different “engines” types, such as:

  • Txtengine;
  • XmlEngine;
  • CommonEngine;
  • DLL with 3 classes – Connected Layer, Disconnected Layer and EntityFrameworkLayer.

Points of Interest

Let’s look a little bit for each ‘engine’ class.

Before starting to describe classes, I would like to say few words about Entities for program – Book andLibraryStock. In this class, I create simple properties, that help me a lot in realizing this idea in app. In the attached file, you can find it as Book.cs and LibrayStock.cs.

The first one is TxtEngine – most simple variant for storing data – use txt.Files. In this class, all is very simple, but some things were interesing for me:

Keywords using  it can be a very useful thing – allow to free resources after usage. MSDN: As a rule, when you use an IDisposable object, you should declare and instantiate it in a using statement. The using statement calls theDispose method on the object in the correct way, and it also causes the object itself to go out of scope as soon asDispose is called. Within the using block, the object is read-only and cannot be modified or reassigned.

In my code usage – save lib to file:

 Collapse | Copy Code
 public void SaveLibrary(string p, List<Book> l)
        {
            using (FileStream fs = new FileStream(p, FileMode.Create, FileAccess.ReadWrite))
            {
                using (StreamWriter sw = new StreamWriter(fs))
                {
                    foreach (Book book in l)
                    {
                        sw.WriteLine(book.BookAuthor + "," +
                            book.BookName + "," +
                            book.BookYear + "," +
                            book.BookGenre + "," +
                            book.BookCategory + "," +
                            book.BookID);
                    }
                    sw.Close();
                }
                fs.Close();
            }
        }

Also result of saved data in TXT – something like in the picture below:

Second engine – XMLEngine. For work with XML, I use XMLDocument and XMLElement from System.Xml.Linq. This is not one variant for realizing this class, but more logical and simplest that previous one.

During creating this class, I try to use some LINQ. As an example in code below, you can find method for reading library from file:

 Collapse | Copy Code
public List<Book> OpenLibrary(string f)
        { 
            XDocument myDoc = XDocument.Load(f);
                List<Book> books = myDoc.Root.Elements("Book")
                        .Select(x => new Book
                        {
                            BookAuthor = (string)x.Element("Author"),
                            BookName = (string)x.Element("Name"),
                            BookYear = (int)x.Element("Year"),
                            BookGenre = (string)x.Element("Genre"),
                            BookID = Guid.Parse(x.Element("BookID").Value.Trim().ToString())
                        })
                        .ToList();
                return books;
         }

Regarding this XML elements – for better understanding usage of it is required just create 2 or 3 methods with it – and all becomes very clear and logical.

And the result of work with this class:

These 2 classes implement interface IFileUsage – due to using file for storing and control library (with txt engine or XML engine).

IFileUsage:

 Collapse | Copy Code
internal interface IFileUsage
    {
        void SaveLibrary(string p, List<Book> l);
        List<Book> OpenLibrary(string f);
    }

Also as I wrote before, I create class with CommonEngine – include methods for adding, removing and updating entries from library.

Next point in program – usage of DB. For this purpose, I create DT (in VS) like:

As you can see, it’s very simple and contains only 2 tables, without any procedures or another things.

As mentioned before, I try to create DLL for separating code for db usage in file. LibraryLib.dll – This DLL includes 3 different type of DB method usage – connected (ConnectedLayer), disconnected (DisconnectedLayer) andEntityFramework(entityFrameWorkLayer). For choosing type of engine, I add radio buttons on form atDBEngine tab at GUI.

Regarding these 3 classes, I can say only that it was interesting to understand how to do this, but a lot of things still need to read and try.

While creating this library, I try such things as LINQ to SQL, App.config usage, find a lot of alternative methods to do required thing (in code it’s commented but not deleted – some of them work, some no – but later it will be modified and fully investigated from my side), understand methods and logic of System.Data usage, try to use different SqlQuery, found for myself many interesting methods (example – Distinct() – at first try to realize it and spend more than one day for this purpose) and a lot of another thing (I can write here till tomorrow =)).

Hope this short description can help someone. Also, I would like to say thanks to all people (from different places) for help.

Result of work:

Link gốc:  http://www.codeproject.com/Articles/712424/MyHomeLibrary-or-How-I-Try-Different-Method-of-Dat

Vocabulary Enhancer (VocEnhancer) Application Using C#

Ứng dụng học từ vựng khá basic

Link gốc: http://www.c-sharpcorner.com/UploadFile/0c1bb2/vochenhancer-application-using-C-Sharp1/

A propertymapping Extension for DataReaders

Introduction

Just like everyone else I’m lazy by nature and wants to do as little work as possible, and as I’m doing a lot of specialized reporting from databases, I wanted to save some work doing all those tedious property mappings by using an automapper. There are plenty of mappers around, but I wanted a simple one with a small footprint and a high performance.
And to simplify it for me, it only needs to work with Datareaders.

The mapper

The core of the mapper is a function that creates a delegate that uses the supplied IDataRecord to create an instance of the target class. This delegate is created from a lambda expression that is built using expression trees[^].

In this function there is a double loop where all the fields in the DataRecord is compared to the names of the properties in the class that’s going to be populated.
So here is the first requirement when using this mapper. The fieldnames of the DataReader must match the propertynames in the populated class.

For each mapped property it checks the source and target type, whether they are nullable or not and whether they need to be converted or not.

IDataReaders does not handle nullables as such but all the info we need exists in the SchemaTable

And then it creates a binding that is used by the memberinit expression that creates the instance

 Collapse | Copy Code

/// <summary>
/// Creates a delegate that creates an instance of Target from the supplied DataRecord
/// </summary>
/// <param name="RecordInstance">An instance of a DataRecord</param>
/// <returns>A Delegate that creates a new instance of Target with the values set from the supplied DataRecord</returns>
/// <remarks></remarks>
private static Func<Record, Target> GetInstanceCreator(Record RecordInstance)
{
    List<MemberBinding> Bindings = new List<MemberBinding>();
    Type TargetType = typeof(Target);
    Type SourceType = typeof(Record);
    ParameterExpression SourceInstance = Expression.Parameter(SourceType, "SourceInstance");
    MethodInfo GetSourcePropertyMethodExpression = SourceType.GetProperty("Item", new Type[] { typeof(int) }).GetGetMethod();

    DataTable SchemaTable = ((IDataReader)RecordInstance).GetSchemaTable();

    //Loop through the Properties in the Target and the Fields in the Record to check which ones are matching
    for (int i = 0; i <= RecordInstance.FieldCount - 1; i++)
    {
        foreach (PropertyInfo TargetProperty in TargetType.GetProperties(BindingFlags.Public | BindingFlags.Instance)) 
        {
	    //If the name of the property is the same as the name of the field we have a match
	    if (TargetProperty.Name.ToLower() == RecordInstance.GetName(i).ToLower() && TargetProperty.CanWrite) 
            {
		//Get the Type of the RecordField
		Type RecordFieldType = RecordInstance.GetFieldType(i);
		//Check if the RecordField is a nullable Type
		if ((bool)(SchemaTable.Rows[i]["AllowDBNull"]) == true && RecordFieldType.IsValueType) 
                {
                    RecordFieldType = typeof(Nullable<>).MakeGenericType(RecordFieldType);
		}

		//Create an Expression For the RecordField
	        Expression RecordFieldExpression = Expression.Call(SourceInstance, GetSourcePropertyMethodExpression, Expression.Constant(i, typeof(int)));

		//Get an Expression representing the SourceValue
		Expression SourceValueExpression = GetSourceValueExpression(RecordFieldType, RecordFieldExpression);

		Type TargetPropertyType = TargetProperty.PropertyType;
		//Convert the Value from the RecordField to the Type of the TargetProperty
		Expression ConvertedRecordFieldExpression = GetConvertedRecordFieldExpression(RecordFieldType, SourceValueExpression, TargetPropertyType);

		MethodInfo TargetPropertySetter = TargetProperty.GetSetMethod();
		//Create a binding for the Property
		var BindExpression = Expression.Bind(TargetPropertySetter, ConvertedRecordFieldExpression);
		//Add the Binding to the Binding List
		Bindings.Add(BindExpression);
	    }
	}
    }
    //Create a memberInitExpression that Creates a new instance of Target using bindings to the DataRecord
    MemberInitExpression Body = Expression.MemberInit(Expression.New(TargetType), Bindings);
    //Compile the Expression to a Delegate
    return Expression.Lambda<Func<Record, Target>>(Body, SourceInstance).Compile();
}

Now we need to create a sourceproperty from the IDataReader

 Collapse | Copy Code
/// <summary>
/// Gets an Expression representing the actual value of the RecordField
/// </summary>
/// <param name="RecordFieldType">The Type Of The RecordField</param>
/// <param name="RecordFieldExpression">An Expression representing the RecordField</param>
/// <returns>An Expression representing the SourceValue</returns>
private static Expression GetSourceValueExpression(Type RecordFieldType, Expression RecordFieldExpression)
{
    //First unbox the Value from the RecordField so that we can work with it
    UnaryExpression UnboxedRecordFieldExpression = Expression.Convert(RecordFieldExpression, RecordFieldType);

    //Get an Expression that checks the SourceField for null values
    UnaryExpression NullCheckExpression = Expression.IsFalse(Expression.TypeIs(RecordFieldExpression, typeof(DBNull)));

    ParameterExpression Value = Expression.Variable(RecordFieldType, "Value");
    //Get an Expression Representing the value to set the TargetProperty to
    Expression SourceValueExpression = Expression.Block(
        new ParameterExpression[] { Value }, 
        Expression.IfThenElse(
            NullCheckExpression, 
            Expression.Assign(Value, UnboxedRecordFieldExpression),
            Expression.Assign(Value, Expression.Constant(GetDefaultValue(RecordFieldType), RecordFieldType))), 
            Expression.Convert(Value, RecordFieldType));
    return SourceValueExpression;
}

It’s time to convert the Source to the target property
If they are the same we only need to unbox the sourceobject before assigning it to the targetproperty.
But if they are different we also need to cast them from the sourcetype to the target type.

There’s also a special case that needs to be handled here. There are no operators for converting primitive types to string. So if we were to try this the function would throw an exception.
This is handled by calling the ToString Method of the source.

 Collapse | Copy Code
/// <summary>
/// Gets an expression representing the recordField converted to the TargetPropertyType
/// </summary>
/// <param name="RecordFieldType">The Type of the RecordField</param>
/// <param name="UnboxedRecordFieldExpression">An Expression representing the Unboxed RecordField value</param>
/// <param name="TargetPropertyType">The Type of the TargetProperty</param>
/// <returns></returns>
private static Expression GetConvertedRecordFieldExpression(Type RecordFieldType, Expression UnboxedRecordFieldExpression, Type TargetPropertyType)
{
    Expression ConvertedRecordFieldExpression = default(Expression);
    if (object.ReferenceEquals(TargetPropertyType, RecordFieldType))
    {
        //Just assign the unboxed expression
        ConvertedRecordFieldExpression = UnboxedRecordFieldExpression;

    }
    else if (object.ReferenceEquals(TargetPropertyType, typeof(string)))
    {
        //There are no casts from primitive types to String.
        //And Expression.Convert Method (Expression, Type, MethodInfo) only works with static methods.
        ConvertedRecordFieldExpression = Expression.Call(UnboxedRecordFieldExpression, RecordFieldType.GetMethod("ToString", Type.EmptyTypes));
    }
    else
    {
        //Using Expression.Convert works wherever you can make an explicit or implicit cast.
        //But it casts OR unboxes an object, therefore the double cast. First unbox to the SourceType and then cast to the TargetType
        //It also doesn't convert a numerical type to a String or date, this will throw an exception.
        ConvertedRecordFieldExpression = Expression.Convert(UnboxedRecordFieldExpression, TargetPropertyType);
    }
    return ConvertedRecordFieldExpression;
}

To speed up everything this delegate is cached in a singleton construction after creation.

I’m not entirely happy with this construction, but it works
Any suggestions for improvement here or in any other part of the code will be gratefully considered

 Collapse | Copy Code
/// <summary>
/// A Singleton construct that returns a precompiled delegate if it exists, otherwise it will create one
/// </summary>
/// <param name="RecordInstance"></param>
/// <returns></returns>
static internal Func<Record, Target> GetCreator(Record RecordInstance)
{
    if (_Creator == null)
    {
        lock (SyncRoot)
        {
            if (_Creator == null)
            {
                //Get Creator on first access
                _Creator = GetInstanceCreator(RecordInstance);
            }
        }
    }
    return _Creator;
}

Using the code

The public methods are two simple extension methods to IDataRecord so using the mapper is really easy

 Collapse | Copy Code
/// <summary>
/// ExtensionMethod that creates a List<Target> from the supplied IDataReader
/// </summary>
/// <param name="Reader"></param>
/// <returns></returns>
public static List<Target> ToList<Target>(this IDataReader Reader) where Target : class, new()
{
    List<Target> List = new List<Target>();
    while (Reader.Read())
    {
        List.Add(CreateInstance<Target>(Reader));
    }
    return List;
}

/// <summary>
/// ExtensionMethod that Creates an instance<Target>) from a DataRecord.
/// </summary>
/// <param name="Record">The DataRecord containing the values to set on new instance</param>
/// <returns>An instance of Target class</returns>
public static Target CreateInstance<Target>( this IDataRecord Record) where Target : class, new()
{
    return (Mapper<IDataRecord, Target>.GetCreator(Record))(Record);
}

Just use it like: Reader.CreateInstance<MyClassInstance>

Or if you want a generic list in one go: Reader.ToList<MyClass>()

Flaws

Conversion from string to other primitive types isn’t supported in this version. Neither is it handling Enums at the moment

Link gốc: http://www.codeproject.com/Articles/674419/A-propertymapping-Extension-for-DataReaders

9 sai lầm phổ biến của người lần đầu khởi nghiệp

Chọn nhầm người đồng sáng lập, cố tạo ra sản phẩm thỏa mãn tất cả khách hàng, quá ám ảnh vì cạnh tranh và đặt nặng tình cảm vào công việc sẽ khiến những người mới kinh doanh thất bại nhanh chóng.

Gây dựng công ty từ vạch xuất phát chưa bao giờ là công việc dễ dàng. Đó là lý do vì sao nhiều người khởi nghiệp liên tiếp phạm phải sai lầm, đặc biệt là những người lần đầu kinh doanh. Theo Business Insider, tỷ lệ thất bại của nhóm này rất cao, khoảng 50-70% trong 18 tháng đầu. Dưới đây là những sai lầm phổ biến của họ.

1. Chọn nhầm bạn đồng hành

entre-5992-1389253845.jpg
Chọn người đồng sáng lập là việc rất quan trọng với người mới khởi nghiệp. Ảnh: BI

Chọn người làm đồng sáng lập là việc quan trọng đầu tiên bạn phải thực hiện khi bắt đầu kinh doanh. Quyết định này sẽ ảnh hưởng đến cổ phần và cả sự hài lòng trong công việc của bạn sau này. Vì thế, nếu muốn bạn đồng hành, hãy cân nhắc kỹ năng của mình và chọn ai đó có thể bổ sung những gì bạn thiếu.

2. Không hiểu được kỹ năng cần thiết để làm CEO

Các kỹ năng cần thiết để thành lập một công ty rất khác với kỹ năng để phát triển nó. Bạn phải là người kiên định, logic, quyết đoán, có đam mê và tầm nhìn rõ ràng. Mặt khác, các CEO cũng cần phải hiểu được quy trình, thủ tục, chính sách nhân sự và quan hệ đối tác quốc tế.

3. Cố tạo ra sản phẩm phổ thông

Michal Ugor – một doanh nhân tại Mỹ cho biết: “Bạn cứ cố làm hài lòng tất cả mọi người, nhưng kết cục bạn lại chẳng thỏa mãn được ai cả”. Hãy tập trung vào sản phẩm của mình, khiến nó thật đặc biệt và đừng cố bắt chước những gì đã có sẵn.

4. Quá ám ảnh vì cạnh tranh

Có một câu nói nổi tiếng thế này: “Nếu lúc nào bạn cũng nhìn chằm chằm vào đối thủ, sản phẩm của bạn cuối cùng sẽ chẳng khác gì hàng thải của họ”. Vì thế, đừng chăm chăm theo dõi đối thủ, hãy dành thời gian quan tâm sản phẩm của mình thì hơn.

5. Không hiểu biết toàn diện về kinh doanh

Các doanh nhân phải hiểu rằng họ cần giỏi mọi thứ. Họ không chỉ cần ý tưởng, khả năng lãnh đạo, mà còn phải có kiến thức về công nghệ, kinh doanh, sản phẩm và marketing.

6. Hết tiền mặt

Các doanh nhân thường không nhận ra rằng cứ mỗi giây trôi qua, họ lại mất một ít tiền, như tiền thuê nhà, lương, chi phí sản xuất hàng ngày hay điện nước. Tiền bạc sẽ lần lượt ra đi và nếu không thể mang chúng trở lại, bạn sẽ cạn kiệt và thất bại.

Vì thế, hãy bảo vệ tiền mặt của mình như thể cả cuộc sống của bạn dựa vào nó vậy. Hãy lập ngân sách, viết hóa đơn, theo dõi các loại chi phí để biết tiền của mình đang đi đâu. Thời gian đầu, bạn nên tập trung chi cho việc thu hút khách hàng và tuyển dụng nhân viên.

7. Đặt quá nhiều tình cảm vào công việc

Dĩ nhiên, bạn phải bỏ ra rất nhiều mồ hôi và nước mắt cho công ty của mình. Nhưng đừng đặt quá nhiều cảm xúc vào công việc, nhất là khi tất cả dấu hiệu đều cho thấy bạn sẽ thất bại.

“Khi đặt nặng tình cảm vào một ý tưởng nào đó, bạn sẽ đánh mất sự khách quan. Sau đó, bạn sẽ chỉ nhìn thế giới qua cái bong bóng sặc sỡ mình tự tạo ra. Thậm chí bạn cho rằng những người khác chẳng hiểu nổi ý tưởng của mình”, Rajesh Setty một doanh nhân cho biết.

8. Tuyển dụng nhầm người

Nhiều người mới kinh doanh thường muốn chọn người tài từ các công ty lớn, vì việc này sẽ khiến công ty có được một sự chú ý nhất định. Tuy nhiên, họ lại quên mất rằng lãnh đạo các công ty lớn thường không biết cách quản lý bằng ảnh hưởng cá nhân. Họ thường giám sát công việc qua nhiều cấp. Mà việc này không hề có lợi cho một công ty mới thành lập, cần đoàn kết và quyết định nhanh. Rất nhiều nhà khởi nghiệp thích đặt người thông minh vào vị trí lãnh đạo và mặc định rằng khả năng điều hành của họ cũng tương đương trí tuệ.

9. Không tiếp thu phản hồi từ khách hàng

Thay vì hỏi bạn bè, quỹ đầu tư và các doanh nhân khác về công ty của mình, bạn hãy tìm đến khách hàng để có câu trả lời chân thật nhất. Hãy đối xử với khách hàng như bạn đời của bạn. Vì nếu không có họ, công ty của bạn sẽ chỉ như một dự án thí nghiệm ở trường trung học mà thôi.

Link gốc: http://kinhdoanh.vnexpress.net/tin-tuc/ebank/tien-cua-toi/9-sai-lam-pho-bien-cua-nguoi-lan-dau-khoi-nghiep-2937448.html