POST & GET trong lập trình web

Trong lập trình web có 2 phương thức rất quan trọng chúng ta thường dùng đó là POST & GET. Nó giống như cốt lỗi khi làm lập trình web. Bởi vì POST và GET cung cấp cho chúng ta cách lấy thông tin đầu vào từ phía client, sau đó gửi lên máy chủ Web Server để xử lý. Không có thông tin chúng ta không thể xử lý gì cả.

Nôm na thì nó như vầy:

POST & GET

GET

Phương thức GET dữ liệu sẽ được hiển thị trên thanh địa chỉ: VD: http://tuanitpro.com/?s=ajax. GET áp dụng khi dữ liệu chỉ đọc, không nên dùng khi ghi xuống CSDL. Bởi vì khi dùng GET thì thông tin quá lộ liễu. Dễ thấy nhất là khi tìm kiếm, lấy mẩu tin theo ID. http://tuanitpro.com/?id=1&categoryid=2&x=3&y=4. Khi dùng GET thì tất cả các field trong form đều hiển thị hết lên thanh địa chỉ.

GET Method

VD chúng ta có form đăng nhập như sau:

<form action="login.php" method="GET"> // Nếu chúng ta không quy định method, mặc định là GET
First name:<br>
<input type="text" name="username" value="tuanitpro">
<br>
Last name:<br>
<input type="password" name="password" value="123">
<br><br>
<input type="submit" value="Submit">
</form>

Khi chúng ta nhấn submit, nó sẽ gửi sang trang login.php như sau:
http://tuanitpro.com/login.php?username=tuanitpro&password=123. Như vậy quá nguy hiểm khi có ai đứng gần bạn.
Cách lấy dữ liệu.

PHP: $_GET["username"]
ASP.NET: Request.QueryString["tuanitpro"]
JAVA: request.getParameter("username");

Và có một điều quan trọng, các hacker rất thích dựa vào GET để khai thác tấn công SQL Injection. Nếu dùng GET các bạn nên mã hóa query string để an toàn hơn.

POST

Khác với GET, phương thức POST cũng gửi dữ liệu lên web server, nhưng nó chạy ngầm bên dưới, hoàn toàn không hiển thị. Các bạn thường thấy khi đăng ký thành viên, đăng nhập, thêm một bài mới. Tức là nó có can thiệp với cơ sở dữ liệu. Tất nhiên chúng ta hoàn toàn có thể dùng GET. Tuy nhiên vì lý do bảo mật (tất nhiên không hoàn toàn tuyệt đối), chúng ta nên dùng POST.

POST Method

Khi dùng POST

<form action="login.php" method="POST">
First name:<br>
<input type="text" name="username" value="tuanitpro"/>
<br>
Last name:<br>
<input type="password" name="password" value="123"/>
<br><br>
<input type="submit" value="Submit">
</form>

Dữ liệu cũng gửi lên Server để trang login.php xử lý, nhưng nó chạy ngầm, và không hiển thị gì cả. An toàn hơn GET rất nhiều. Bạn nào không tin thì login facebook.com thử.

Cách lấy dữ liệu.

PHP: $_POST["username"]
ASP.NET: var username = username.Text
JAVA: request.getParameter("username");

Chúc các bạn thành công.

Vừa gà vừa chó, bó lại cho tròn, ba mươi sáu con, một trăm chân chẵn. Hỏi mấy gà, mấy chó?

Vừa gà vừa chó, bó lại cho tròn, ba mươi sáu con, một trăm chân chẵn. Hỏi mấy gà, mấy chó?
Vừa gà vừa chó, bó lại cho tròn, ba mươi sáu con, một trăm chân chẵn. Hỏi mấy gà, mấy chó?

Có một bài toán dân gian khá thú vị như sau:

Vừa gà vừa chó
Bó lại cho tròn
Ba mươi sáu(36) con
Một trăm(100) chân chẵn
Hỏi mấy gà, mấy chó?

Đây là bài toán vui, từ khi học tiểu học mình đã biết, lên trung học, học giải phương trình cũng gặp lại nó. Và bây giờ, làm lập trình, tự dưng nhớ tới nó, nên viết ra đây, coi như chia sẻ cho các bạn mới học lập trình có thêm hào hứng, giải quyết các bài tập nho nhỏ, vui vẻ tương tự.

Cách giải nó như sau:

Gọi x là số gà
Số chó là: 36 – x
Số chân gà: 2x
Số chân chó: 4(36-x)
theo đề bài ta có:
2x + 4(36 – x) =100
2x + 144 – 4x = 100
2x = 144 – 100
2x = 44
x = 22
Vậy số gà là 22 con
Số chó : 36 – 22 = 14

Bạn bảo mấy con chó đặt 2 chân trước lên ghế,tổng số chân dưới đất sẽ là 36 x 2  = 72 chân. Suy ra số chân trên ghế là 28 chân.
Vậy có 14 con chó ….

Dùng hệ phương trình
Gọi x là gà, y là chó
Ta có hệ pt:
x + y = 36
2x + 4y = 100
Giải hệ pt
x = 22,y = 14
Vậy gà có 22 con, chó có 14 con. Mời các bạn chia sẻ thêm cách giải hay, thú vị khác nữa nhé.

Vậy thì làm sao để giải nó bằng cách lập trình. Đây không phải vấn đề khó với nhiều bạn, tuy nhiên mình thấy vui vẻ, nên vẫn viết ra đây.

Sau đây là cách giải trong một số ngôn ngữ lập trình như Pascal, C++, C#, Java, PHP, ASP.NET, Javascript. Trường hợp máy bạn không cài sẵn IDE, bạn có thể sử dụng trang web http://ideone.com để chạy thử code.

Vì số con là 36 và số chân là 100. Giả sử tất cả là chó, thì số con tối đa là 100/4 = 25 (con). Tối thiểu là 36 / 4 = 9 (con). Như vậy chúng ta chỉ cần sử dụng vòng lặp for từ 9->25. Tối ưu hơn so với từ 0 -> 36

Pascal

program HelloWorld;
var i :Integer;
begin
  	writeln('Giai bai toan dan gian bang Pascal');
	writeln('Vua ga vua cho');
	writeln('Bo lai cho tron');
	writeln('Ba muoi sau(36) con');
	writeln('Mot tram(100) chan chan');
	writeln('Hoi may ga, may cho?');
	for i:= 9 to 25 do
		if((i * 2 + (36 - i) * 4) = 100) then
			writeln('So ga la: ', i);
			writeln('So cho la: ', 36 - i);
	
end.

C++

#include <string>
#include<iostream>;
#include<stdio.h>;
 
using namespace std;

int main(){
	cout << "Gia bai toan dan gian trong C++\n";
	cout << "Vua ga vua cho\n";
	cout << "Bo lai cho tron\n";
	cout << "Ba muoi sau(36) con\n";
	cout << "Mot tram(100) chan chan\n";
	cout << "Hoi may ga, may cho?\n";
	cout << "\n";
	for (int i = 9; i < 25; i++)
	{
		if ((i * 2 + (36 - i) * 4) == 100){
			cout << "So ga la: " << i << "\n";
			cout << "So cho la: " << (36 - i) << "\n";
                        break;
		}
	}
}

Java

public class Main {

	public Main() {
		// TODO Auto-generated constructor stub
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("Giải bài toán dân gian trong Java");
		System.out.println("Vừa gà vừa chó");
		System.out.println("Bó lại cho tròn");
		System.out.println("Ba mươi sáu(36) con");
		System.out.println("Một trăm(100) chân chẵn");
		System.out.println("Hỏi mấy gà, mấy chó?\n");
		for(int i = 9; i < 25; i++){
			if((i*2+(36-i)*4)==100){
				System.out.println("Số gà là: " + i);
				System.out.println("Số chó là: " + i);
			}
		}
	}
}

C#

class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Gia bai toan dan gian trong C#");
            Console.Write("Vua ga vua cho\n");
            Console.Write("Bo lai cho tron\n");
            Console.Write("Ba muoi sau(36) con\n");
            Console.Write("Mot tram(100) chan chan\n");
            Console.WriteLine("Hoi may ga, may cho?\n");
            for (int i = 9; i <= 25; i++)
            {
                if ((2 * i + (36 - i) * 4) == 100)
                {
                    Console.WriteLine("So ga la: " + i);
                    Console.WriteLine("So cho la: " + (36 - i));
                    break;
                }
            }

            Console.ReadKey();
        }
    }

ASP.NET

void GiaiBaiToanDanGian()
    {
        StringBuilder sb = new StringBuilder();
        for (int i = 9; i < 25; i++)
        {
            if ((i * 2 + (36 - i) * 4) == 100)
            {
                sb.AppendLine("Số gà là: " + i);
                sb.AppendLine("Số chó là: " + (36 - i));
            }
        }
        Label1.Text = sb.ToString();
    }

PHP

<html>
	<head>
		<meta charset="UTF-8"/>
		<title>Bài toán dân gian</title>				
	</head>
	<body>
		<b>Giải bài toán dân gian trong PHP</b></br>
		Vừa gà vừa chó </br>
		Bó lại cho tròn </br>
		Ba mươi sáu(36) con </br>
		Một trăm(100) chân chẵn</br>
		Hỏi mấy gà, mấy chó?</br>
		</br>
		<?php 
			for($i = 9; $i < 25; $i ++)
			{
				if(($i * 2 + (36-$i)*4) == 100)
				{
					echo 'Số gà là: '.$i.'</br>';
					echo 'Số chó là: '.(36 - $i);
				}
			}
		?>
	</body>
</html>

Javascript

<script type="text/javascript">
	alert('Giai bai toan dan gian');
	for(i = 9; i < 25; i++)
	{
		if((i * 2 + (36-i)*4) === 100){
			alert('Số gà là: ' + i + '; Số chó là: '+(36-i));
		}
	}
</script>

Chúc các bạn học lập trình vui vẻ

Từng bước để trở thành một lập trình viên giỏi

Thời gian gần đây tôi có nhận được một số email mà về cơ bản đều hỏi rằng “làm thế nào để có thể trở thành một lập trình viên giỏi/ xuất sắc?”
Những dạng email kiểu này nói chung thường làm tôi cảm thấy buồn lòng, bởi vì tôi cảm thấy dường như khi bạn hỏi dạng câu hỏi này, thì bạn đang tìm kiếm một liều thuốc thần diệu nào đó khiến bạn có thể sẽ đột nhiên trở thành một lập trình viên tài ba.

Tôi nghi ngờ rằng có rất ít người trong số đã gửi email để hỏi tôi về câu hỏi này thực sự muốn biết làm thế nào để trở thành một lập trình viên xuất sắc, nhưng có lẽ họ đang chỉ muốn tìm kiếm cho mình một giải pháp nhanh chóng hoặc một câu trả lời dễ dàng.

Một mặt khác, tôi nghĩ rằng có thể có một số lập trình viên chân thật, và chỉ là họ không biết làm thế nào để đặt ra những câu hỏi cần thiết để định hướng cho tương lai của họ. Tôi nghĩ những lập trình viên này – đặc biệt là những người vừa mới vào nghề – có lẽ đang tìm kiếm cho mình một hướng dẫn từng bước để trở thành một lập trình viên xuất sắc.

Vì vậy, tôi cũng cố gắng từ chính kinh nghiệm của bản thân và những kiến thức tốt nhất mà mình có, để đưa ra một chỉ dẫn kiểu từng bước step-by-step dành cho bạn.

Lúc này đây, dĩ nhiên là tôi nhận ra rằng không có một công thức thần kỳ nào ở đây cả và rằng có rất nhiều con đường có thể dẫn đến thành công, nhưng tôi nghĩ rằng nếu làm theo những bước hợp lý được phác thảo ra sau đây thì một bạn trẻ mới vào nghề có thể vươn tới một mức trình độ khá cao và sẽ có khả năng trở thành một lập trình viên giỏi hoặc thậm chí là xuất sắc.

Bước 1: Hãy chọn lấy một ngôn ngữ lập trình, và học từ những thứ căn bản nhất

Trước khi có thể chạy, thì chúng ta phải học cách để đi trước đã. Bạn đi bằng cách học làm thế nào để lập trình trong một ngôn ngữ lập trình nào đó. Bạn đừng có học đi bằng cách cố gắng học 50 triệu thứ cùng một lúc, vì bạn không thể có phép phân thân ra như Tôn Ngộ Không được phải không nào.

Có rất nhiều lập trình viên bắt đầu bằng cách thử và nhảy vào tất cả mọi thứ một lần và không có đủ kiên nhẫn để học chỉ một ngôn ngữ lập trình duy nhất trước khi tiến lên phía trước. Họ nghĩ rằng họ phải biết tất cả những công nghệ mới đang “hot” thì mới có thể kiếm được một công việc lập trình. Trong khi đúng ra thì bạn cần biết nhiều hơn chỉ những kiến thức cơ bản của một ngôn ngữ lập trình duy nhất, bạn phải bắt đầu từ đây, vì như vậy thì bạn mới có thể tập trung được tốt nhất.

Chọn lấy một ngôn ngữ lập trình mà bạn nghĩ rằng sự nghiệp của mình về cơ bản sẽ xoay quanh nó. Ngôn ngữ lập trình đó tự bản thân nó thì không quan trọng nhiều lắm, nhưng bạn nên tính toán cả về lâu về dài nữa. Ý tôi muốn nói là bạn đừng nên thử và học một ngôn ngữ lập trình “dễ” khi bắt đầu. Hãy học bất cứ ngôn ngữ nào mà bạn cảm thấy thích thú và có thể nhìn thấy tương lai lập trình của mình trong một vài năm sắp tới. Bạn muốn chọn một cái gì đó mà sẽ mang lại giá trị lâu dài.

Một khi bạn đã chọn lấy ngôn ngữ lập trình nào đó thì bạn sẽ thử học và tìm một số cuốn sách hoặc bài thực hành mà chỉ liên quan đến ngôn ngữ lập trình đó thôi. Ý tôi muốn nói là bạn đừng tìm học các tài liệu mà dạy bạn quá nhiều thứ một lúc. Bạn nên tìm những tài liệu dành cho người mới bắt đầu mà chỉ tập trung vào ngôn ngữ đó, chứ không phải là rất nhiều công nghệ liên quan.

Khi bạn đọc xuyên suốt các tài liệu đó hoặc duyệt qua các bài thực hành mà bạn đã lựa chọn, thì hãy chắc chắn rằng bạn có thực hành viết code. Hãy làm thật nhiều bài tập có thể. Hãy thử nghiệm tất cả những gì bạn đã học được. Hãy thử gom các thứ lại với nhau và sử dụng tất cả các khái niệm mà bạn đã học được về nó. Vâng, điều này thì khá là “đau khổ”. Việc đọc hùng hục một cuốn sách từ trang đầu đến trang cuối thì rất dễ dàng, nhưng nếu bạn thực sự muốn học thực sự thì bạn cần phải thực hành.

Khi bạn đang viết code, hãy cố chắc chắn rằng bạn hiểu tất cả dòng code mà mình viết ra. Điều tương tự cũng cần làm cho bất kỳ dòng code nào mà bạn đọc. Khi viết ra những đoạn code, hãy làm chậm rãi và đảm bảo rằng bạn hiểu nó. Bất cứ điều gì mà bạn không hiểu, thì hãy tìm hiểu và làm rõ nó. Hãy dành thời gian làm điều này thì bạn sẽ không bị hổng kiến thức và mơ hồ về sau này.

Cuối cùng, hãy chuẩn bị tư tưởng là phải đọc qua một cuốn sách hoặc một hướng dẫn thực hành ít nhất 3 lần trước khi bạn có thể hiểu hết nó. Bạn sẽ không thu được phần “lập trình” trong lần thử đầu tiên – không ai từng làm được điều đó cả. Bạn cần lặp lại để bóc trần nó trước khi bạn bắt đầu có thể hiểu và thu nhận kiến thức từ nó và bạn hiểu được điều gì thực sự đang diễn ra. Cho tới một lúc bạn sẽ cảm thấy như bị lạc lối, điều đó là tốt, đó là một phần của quá trình phát triển. Chỉ việc chấp nhận nó và tiến lên phía trước.

Bước 2: Xây dựng một cái gì đó nhỏ thôi

Lúc này thì bạn đã có một hiểu biết cơ bản về một ngôn ngữ lập trình nào đó rồi, và đây là lúc để đưa những kiến thức đó vào làm việc và để nhận ra bạn đang thiếu hụt những gì. Cách tốt nhất để làm điều này là thử xây dựng một cái gì đó.

Đừng quá tham vọng tại thời điểm này – nhưng bạn cũng đừng quá nhút nhát. Hãy tìm kiếm ý tưởng tạo ra một ứng dụng mà đủ đơn giản để bạn có thể hoàn thành nó với một số nỗ lực, nhưng không phải là sẽ làm bạn mất vài tháng để hoàn thành. Cố gắng hạn chế nó chỉ trong ngôn ngữ lập trình bạn đã học nhiều nhất có thể. Đừng cố gắng để làm một cái gì đó mà phải áp dụng nhiều công nghệ khác nhau (nghĩa là, sử dụng tất cả những công nghệ từ giao diện người dùng cho đến database) – mặc dù bạn sẽ có thể cần sử dụng một vài framework hoặc API có sẵn.

Đối với ứng dụng đầu tay thì bạn có thể chọn giải pháp sao chép một cái gì đó đơn giản mà đã tồn tại rồi. Hãy tìm kiếm một ứng dụng đơn giản, kiểu như một ứng dụng dạng To-Do List, chương trình hẹn giờ tắt máy tính chẳng hạn và cố gắng mô phỏng nó. Đừng cho phép các kỹ năng thiết kế của bạn cản trở việc học lập trình.

Tạo ra những ứng dụng đơn giản trước.Tôi đề xuất bạn nên tạo ra một ứng dụng nào đó dành cho thiết bị di động, bởi vì hầu hết các ứng dụng di động thì thưởng nhỏ và khá dễ làm. Thêm nữa, việc học các kỹ năng phát triển cho di động thì rất có ích vì có rất nhiều các công ty đang bắt đầu cần các ứng dụng di động. Ngày nay, bạn có thể xây dựng một ứng dụng di động trong hầu như bất kỳ ngôn ngữ lập trình nào. Có rất nhiều giải pháp mà cho phép bạn xây dựng một ứng dụng cho các hệ điều hành di động khác nhau sử dụng rất nhiều các ngôn ngữ lập trình.

Bạn cũng có thể xây dựng một ứng dụng web nhỏ, nhưng cố gắng không nhảy quá sâu vào nhiều công nghệ phát triển web phức tạp. Về cơ bản tôi đề xuất bạn nên bắt đầu bằng một ứng dụng di động, bởi vì phát triển web thì có vẻ rắc rối hơn một chút cho người mới bắt đầu. Để phát triển một ứng dụng web thì bạn sẽ phải cần biết ít nhất là một số kiến thức về HTML, có thể một vài framework back-end và JavaScript.

Cho dù là bạn chọn cái gì để xây dựng, thì bạn có thể phải học chút ít về một vài framework – điều này thì rất tốt, chỉ đừng có quá sa lầy vào những chi tiết. Ví dụ, bạn có thể viết một ứng dụng Android khá đơn giản mà không cần phải thực sự biết nhiều về tất cả các hàm API của Android và làm thế nào Android hoạt động, chỉ bằng cách làm theo một số bài hướng dẫn đơn giản. Chỉ đừng tốn quá nhiều thời gian để cố gắng học mọi thứ về một framework nào đó. Hãy học cái mà bạn cần biết để phục vụ hoàn thành dự án của mình. Bạn có thể học về các chi tiết sau này.

Oh, và điều này có vẻ là hơi khó. Nhưng đó chính là cách bạn học như thế nào. Bạn phải vật lộn để nhận ra làm thế nào để làm một điều gì đó, sau đó bạn sẽ tìm thấy câu trả lời. Đừng bỏ qua bước này. Bạn sẽ chẳng bao giờ vươn tới đẳng cấp là một nhà phát triển phần mềm chuyên nghiệp nếu bạn không học những thứ khó khăn và nhận ra nhiều điều thú vị trong quá trình nghiên cứu. Đây là một khóa huấn luyện tốt cho tương lai của bạn.

Bước 3: Nghiên cứu về một framework

Lúc này là thời điểm để thực sự tập trung vào một framework. Vì lúc này bạn đã nắm được một lượng kiến thức kha khá về ít nhất là một ngôn ngữ lập trình rồi và đã có một số kinh nghiệm để có thể làm việc cùng một framework cho các ứng dụng di động hoặc web.

Hãy chọn một framework nào đó để học và nó sẽ cho phép bạn làm việc hiệu quả hơn trong một số môi trường. Dạng framework mà bạn lựa chọn để học sẽ được dựa trên kiểu nhà phát triển phần mềm nào mà bạn muốn trở thành trong tương lai. Nếu bạn muốn trở thành một nhà phát triển web, thì bạn sẽ muốn học một web framework cho bất cứ ngôn ngữ lập trình nào mà bạn đang làm việc trên nó. Nếu bạn muốn trở thành một nhà phát triển ứng dụng di động, thì bạn sẽ cần học về một hệ điều hành di động và framework đi kèm với nó.

Cố gắng đào sâu kiến thức của bạn về framework đó. Điều này sẽ khá mất thời gian, nhưng đầu tư thời gian để học bất cứ thứ gì về framework mà bạn đang sử dụng thì rất tốt. Đừng cố học nhiều framework vào lúc này – nó sẽ chỉ khiến phân tán sự tập trung của bạn mà thôi. Hãy nghĩ về việc học các kỹ năng bạn cần cho một công việc xác định mà bạn muốn nhận, có sử dụng framework và chính ngôn ngữ lập trình mà bạn đang học. Bạn có thể luôn luôn mở rộng tập kỹ năng của mình sau này.

Bước 4: Học về một công nghệ cơ sở dữ liệu

Hầu hết các nhà phát triển phần mềm sẽ cần phải biết về một số công nghệ cơ sở dữ liệu vì rất nhiều các ứng dụng phải có một database back-end. Vì vậy, hãy chắc chắn rằng bạn không bỏ bê việc đầu tư vào lĩnh vực này.

Bạn sẽ có khả năng nhìn thấy lợi ích lớn nhất nếu bạn học về SQL – thậm chí nếu bạn lên kế hoạch sẽ làm việc cùng cơ sở dữ liệu NoSQL như MongoDB hoặc Raven, thì việc học SQL sẽ mang lại cho bạn một nền tảng tốt hơn để làm việc sau này. Có rất nhiều công việc tuyển dụng ngoài kia mà yêu cầu kiến thức về SQL nhiều hơn là NoSQL.

Đừng quá lo lắng về nhiều loại cơ sở dữ liệu SQL. Những công nghệ SQL khác nhau thì thực ra chúng có rất nhiều điểm giống nhau và bạn sẽ không gặp phải vấn đề gì trong việc chuyển đổi qua lại giữa chúng nếu bạn biết những kiến thức cơ bản về một công nghệ SQL nào đó. Chỉ chắc chắn rằng bạn hãy học về những thứ căn bản như table, queries, và những thao tác phổ biến về database khác.

Tôi khuyến khích bạn nên chọn một cuốn sách tốt về công nghệ SQL phù hợp và tạo ra một vài dự án nhỏ, vì vậy bạn có thể thực hành cái mà bạn đang học – luôn luôn thực hành những kiến thức mà bạn đang học.

Bạn phải có đủ kiến thức về SQL để có thể:

  • Tạo các bảng (table)
  • Thực thi các truy vấn cơ bản
  • Join các bảng với nhau để truy xuất dữ liệu
  • Hiểu các kiến thức cơ bản về index làm việc như thế nào
  • Insert, update và delete dữ liệu

Ngoài ra, bạn sẽ muốn học một số dạng của công nghệ object relational mapping (ORM). Cái mà bạn học sẽ phụ thuộc vào công nghệ nào mà bạn đang làm việc trên đó. Tìm kiếm những công nghệ ORM phù hợp với framework mà bạn đã học. Có thể có một vài lựa chọn ở đây, vì vậy cách tốt nhất là bạn hãy chọn lấy cái phổ biến nhất.

Bước 5: Nhận một công việc hỗ trợ một hệ thống đang tồn tại

Ok, bây giờ bạn đã có đủ các kỹ năng và kiến thức để nhận được một công việc cơ bản như là một nhà phát triển phần mềm. Nếu bạn có thể chỉ cho tôi rằng bạn hiểu những kiến thức cơ bản của một ngôn ngữ lập trình, có thể làm việc cùng một framework, hiểu về cơ sở dữ liệu và đã xây dựng được ứng dụng của riêng bạn, thì tôi chắc chắn sẽ muốn thuê bạn – cũng như nhiều nhà tuyển dụng khác.

Bảo trì một hệ thống đang tồn tại.Điểm mấu chốt ở đây là không quá nhắm vào một công việc nào đó yêu cầu trình độ cao. Đừng cố thử tìm một công việc trong mơ của bạn ngay lúc này – vì bạn vẫn chưa đủ trình độ. Thay vì đó, cố gắng tìm một công việc dạng bảo trì một hệ thống phần mềm đang tồn tại mà được xây dựng sử dụng ngôn ngữ lập trình và framework mà bạn đã học.

Bạn có thể không tìm thấy chính xác một công việc như vậy, nhưng nhiều khả năng là bạn có thể tìm thấy một công việc tốt hơn. Cố gắng ứng tuyển vào những công việc phù hợp chính xác với những công nghệ mà bạn đã được học.

Thậm chí với sự thiếu hụt nhiều kinh nghiệm, nếu bạn phù hợp chính xác với một tập kỹ năng và bạn lại sẵn lòng trở thành một lập trình viên bảo trì, thì bạn sẽ có thể tìm thấy một công việc.

Vâng, dạng công việc này có thể hơi tẻ nhạt một chút. Nó không được hứng thú như là việc tạo ra một cái gì đó mới mẻ, nhưng mục đích của công việc này không phải là mang lại niềm vui hoặc để kiếm tiền, nó là để học hỏi và thu được nhiều kinh nghiệm nhiều nhất có thể.

Làm việc trên một ứng dụng đang tồn tại, cùng với một nhóm các nhà phát triển khác, sẽ giúp bạn mở rộng các kỹ năng của mình và biết được một hệ thống phần mềm lớn thường được cấu trúc như thế nào. Bạn có thể sửa các lỗi và bổ sung thêm các đặc trưng nhỏ khác, ngoài ra bạn cũng sẽ học và đưa những kỹ năng của bạn vào hành động.

Dồn hết tâm trí của bạn vào công việc này. Học mọi thứ bạn có thể. Làm công việc ở mức tốt nhất bạn có thể. Đừng nghĩ về tiền bạc, đảm nhiệm nhiều vai trò khác nhau trong dự án này – tất cả sẽ đến sau đó – còn lúc này, bạn hãy chỉ tập trung vào để làm cho công việc hoàn thành một cách hiệu quả nhất có thể và mở rộng các kỹ năng của bạn.

Bước 6: Học những bài thực hành tốt nhất về cấu trúc (structural)

Bây giờ là lúc để bạn bắt đầu nâng cao chất lượng trong việc viết code. Đừng lo lắng quá nhiều về vấn đề thiết kế phần mềm tại thời điểm này. Bạn cần học làm thế nào để viết những đoạn “code sạch” (clean code) mà dễ dàng để hiểu và bảo trì. Để làm được điều này, bạn sẽ cần phải đọc rất nhiều và xem nhiều ví dụ về một số đoạn code tốt (good code).

Hãy bổ sung vào giá sách của bạn với những cuốn sách sau đây:

Các cuốn sách về cấu trúc ngôn ngữ xác định như:

Tại thời điểm này bạn thực sự muốn tập trung việc học của mình vào xử lý cấu trúc để viết ra những đoạn code hay và làm việc trên nhiều hệ thống đang tồn tại. Bạn sẽ cố gắng để dễ dàng thực thi một thuật toán trong ngôn ngữ lập trình của bạn đã chọn và làm nó theo cách dễ dàng để đọc và hiểu nhất.

Bước 7: Học một ngôn ngữ lập trình thứ hai

Tại thời điểm này bạn nên phát triển khả năng bằng cách học một ngôn ngữ lập trình thứ hai thực sự tốt. Bạn nên chọn một ngôn ngữ lập trình mà khác hẳn ngôn ngữ mà bạn đã biết.

Điều này có vẻ như là hơi kỳ quặc, nhưng hãy để tôi giải thích lý do tại sao việc này là rất quan trọng. Khi bạn biết một ngôn ngữ lập trình thật giỏi, thì bạn chỉ hiểu các khái niệm của phát triển phần mềm trong ngôn ngữ lập trình đó, mà việc phát triển phầm mềm thì lại vượt quá một ngôn ngữ hoặc công nghệ riêng rẽ nào. Nếu bạn dành thời gian trong một môi trường hoặc ngôn ngữ lập trình mới, thì bạn sẽ bắt đầu nhìn thấy mọi thứ theo một cách mới. Bạn sẽ bắt đầu để học một cách thực tiễn hơn là theo cách bắt chước.

Là một lập trình viên mới, bạn thường rất thích làm mọi thứ theo một cách đặc biệt nào đó mà không cần biết lý do tại sao bạn lại đang làm chúng theo cách đó. Một khi bạn đã học một ngôn ngữ lập trình thứ hai và nắm vững công nghệ, thì bạn sẽ bắt đầu tìm hiểu xem về lý do tại sao. Tin tôi đi, bạn sẽ phát triển nếu bạn thực hiện điều này. Đặc biệt là nếu bạn chọn lấy một ngôn ngữ lập trình mà bạn ghét.

Chắc chắn rằng bạn xây dựng một thứ gì đó cùng với ngôn ngữ mới này. Không cần phải hoành tráng, nhưng một cái gì đó đủ phức tạp để bắt bạn phải suy nghĩ động não thật nhiều và có thể thậm chí phải đập đầu vào tường – nhè nhẹ.

Bước 8: Xây dựng một cái gì đó có giá trị

Tốt rồi, bây giờ tiến đến việc kiểm tra thực sự để chứng tỏ khả năng phát triển phần mềm của bạn. Liệu bạn có thể thực sự xây dựng một cái gì đó quan trọng cho chính mình?

Nếu bạn tiếp tục tiến lên và tự tin để nhận một công việc xây dựng một cái gì đó, và có lẽ thậm chí thiết kế một cái gì đó cho một ông chủ của mình, bạn biết là bạn có thể làm nó. Không có cách nào tốt hơn để biết nó hơn là bắt tay vào làm nó.

Chọn một dự án mà sẽ sử dụng được toàn bộ các kỹ năng của bạn. Chắc chắn rằng bạn kết hợp cả cơ sở dữ liệu, framework và mọi thứ khác mà bạn cần để xây dựng một ứng dụng hoàn chỉnh. Dự án này nên là một cái gì đó mà sẽ chiếm của bạn nhiều hơn một tuần làm việc và yêu cầu một số suy nghĩ nghiêm túc và thiết kế. Thử làm một cái gì đó mà bạn có thể kiếm được tiền từ nó để bạn có một vài động lực làm việc.

Nên chắc chắn rằng bạn không phát triển nó ra quá lớn. Bạn vẫn không muốn mang quá nhiều tham vọng vào đây. Chọn một dự án mà sẽ thách thức bạn, nhưng không phải là một dự án mà bạn sẽ chẳng bao giờ hoàn thành được. Đây là một bước ngoặt quan trọng trong sự nghiệp của bạn. Nếu bạn có sự cam kết để theo và hoàn thành dự án này, thì bạn sẽ đi được rất xa, còn nếu bạn không thể… vâng, thì tôi không thể nói trước được điều gì.

Bước 9: Kiếm một công việc tạo một hệ thống mới

Ok, bây giờ là lúc để bạn lại tiếp tục đi tìm công việc tiếp theo. Bởi vào thời điểm này, bạn đã đạt được lợi ích lớn nhất từ công việc hiện tại – đặc biệt là nếu nó vẫn chỉ là công việc bảo trì.

Tham gia tạo ra một hệ thống phần mềm mới.Đây là thời điểm để tìm kiếm một công việc mà sẽ thách thức bạn – nhưng đừng quá nhiều. Bạn vẫn sẽ phải học rất nhiều, vì vậy bạn không muốn nhận một công việc mà quá phức tạp so với bạn. Lý tưởng là bạn nên tìm một công việc nơi mà bạn sẽ có cơ hội để làm việc trong một nhóm đang xây dựng một sản phẩm gì đó mới mẻ.

Có thể bạn không phải là người kiến trúc ra hệ thống đó, nhưng việc tham gia tạo ra một ứng dụng sẽ giúp bạn mở rộng các kỹ năng của mình và thách thức bạn trong nhiều cách khác nhau hơn là chỉ ngồi bảo trì một hệ thống phần mềm đang tồn tại.

Bạn đã có một sự tự tin trong việc tạo ra một hệ thống mới rồi, bạn vừa kết thúc việc tạo ra một hệ thống quan trọng cho riêng mình, vì vậy bạn có thể bước vào buổi phỏng vấn mà không cảm thấy quá hồi hộp và cùng với niềm tin rằng bạn có thể làm được công việc đó. Sự tự tin này sẽ giúp bạn có thể nhận được bất cứ công việc nào mà bạn ứng tuyển vào.

Hãy chắc chắn rằng bạn khiến cho nhà tuyển dụng được tập trung. Hãy nêu bật lên tập các kỹ năng xác định mà bạn đã đạt được. Đừng cố gây ấn tượng với bất kỳ ai bằng một danh sách dài dằng dặc của những kỹ năng chả liên quan gì. Tập trung vào những kỹ năng quan trọng nhất và tìm kiếm những công việc mà phù hợp chính xác với chúng – hoặc ít ra thì cũng phù hợp nhất có thể.

Bước 10: Học những bài thực hành tốt nhất về thiết kế phần mềm

Bây giờ là thời điểm để bạn đi từ một junior (ít kinh nghiệm) thành một senior developer (lập trình viên lão luyện). Các junior developer thường bảo trì các hệ thống, còn senior developer thì thiết kế và xây dựng các hệ thống của họ. (Thường là vậy, dĩ nhiên là cũng có một số senior developer chuyên đi bảo trì các hệ thống.)

Bạn đã sẵn sàng để xây dựng các hệ thống ngay lúc này, nhưng bây giờ bạn cần phải học cách làm thế nào để thiết kế ra chúng.

Bạn nên tập trung vào việc nghiên cứu vào các bài thực hành thiết kế tốt nhất và một số chủ đề nâng cao kiểu như:

  • Design patterns
  • Inversion of Control (IOC)
  • Test Driven Development (TDD)
  • Behavior Driven Development (BDD)
  • Các phương pháp phát triển phần mềm như: Agile, SCRUM, v.v…
  • Message buses và integration patterns

Danh sách này có thể sẽ còn dài ra rất nhiều – bạn sẽ chẳng bao giờ có thể kết thúc việc học và phát triển các kỹ năng của bạn trong lĩnh vực này. Chỉ nên chắc chắn rằng hãy bắt đầu cùng với những thứ quan trọng nhất trước tiên – điều này sẽ phụ thuộc vào cái mà bạn cảm thấy thú vị và nơi mà bạn muốn đến trong sự nghiệp của mình.

Mục tiêu của bạn ở đây là có khả năng không chỉ là xây dựng một hệ thống mà một ai đó đã thiết kế ra, mà nó phải hình thành dựa trên quan điểm của chính bạn về phần mềm nên được thiết kế ra làm sao và những dạng kiến trúc nào thì phù hợp cho những loại vấn đề này.

Bước 11: Tiếp tục học

Tại thời điểm này thì bạn đã làm ra sản phẩm phần mềm, nhưng bạn cần phải tiếp tục phát triển để trở thành một lập trình viên giỏi, thậm chí có thể trở nên “xuất sắc”. Luôn tâm niệm rằng bạn sẽ luôn có một cái gì đó để học thêm.

Phải mất bao lâu thì bạn mới có thể tới được điểm này? Tôi cũng không biết chắc. Nó có thể mất ít nhất một số năm, nhưng có thể phải đến 10 năm hoặc hơn – nó còn tùy thuộc vào việc bạn cống hiến nhiều như thế nào và những cơ hội nào xuất hiện với bạn nữa.

Có một con đường tắt khá tốt đó là cố gắng và luôn luôn bao quanh bạn bởi những lập trình viên giởi hơn bạn để có thể học hỏi từ họ.

Một số điều cần làm trong suốt quá trình thực hiện các bước trên

Có một số điều mà bạn nên làm trong suốt quá trình mà bạn đang làm theo 10 bước nói trên. Nó sẽ rất khó để liệt kê chúng trong mỗi bước, vì vậy tôi sẽ liệt kê chúng một cách tóm tắt ở đây:

Dạy – Toàn bộ thời gian trong quá trình bạn đang học các thứ nói trên, bạn cũng nên dạy chúng cho những người khác. Không quan trọng là liệu bạn là một người mới bắt đầu hay là một chuyên gia, bạn sẽ có một cái gì đó có giá trị để dạy, dạy người khác thì cũng là một cách tốt nhất để học. Ghi lại tài liệu tất cả quá trình và chuyến hành trình của bạn, và giúp đỡ những người khác trên suốt con đường mà bạn đi.

Tiếp thị bản thân bạn – Tôi nghĩ rằng đây là một điều rất quan trọng đến mức tôi đã xây dựng một khóa học hoàn chỉnh về ý tưởng này. Học cách làm thế nào để tiếp thị bản thân và tiếp tục làm nó trong suốt sự nghiệp của bạn. Nhận ra cách làm thế nào để có thể tạo ra thương hiệu cá nhân cho chính bạn, xây dựng một danh tiếng cho riêng mình trong ngành công nghiệp phần mềm và bạn sẽ chẳng bao giờ sợ thiếu việc làm cả. Bạn sẽ quyết định về tương lai của chính mình nếu bạn học được cách tiếp thị bản thân. Có rất nhiều công việc phải làm, nhưng nó cũng mang lại giá trị xứng đáng. Bạn đang đọc bài viết này từ chính nỗ lực của tôi cho mục đích đó.

Đọc – Đừng bao giờ ngừng học. Đừng bao giờ ngừng đọc. Luôn luôn làm việc theo cách của bạn thông qua những cuốn sách. Luôn luôn phát triển bản thân. Chuyến hành trình tìm kiếm tri thức của bạn sẽ chẳng bao giờ kết thúc, vì việc học là chuyện của cả đời. Bạn có thể sẽ không biết được tất cả. Nếu bạn tiếp tục học trong suốt sự nghiệp của mình, thì bạn sẽ luôn luôn vượt trội hơn so với những đồng nghiệp khác.

Làm – Với mỗi điểm dừng chân trên chuyến hành trình đó, đừng chỉ học mà hãy làm. Hãy đặt mọi thứ mà bạn học được vào hành động. Thiết lập một quỹ thời gian bên cạnh để luyện tập các kỹ năng của bạn và viết code và xây dựng một số thứ. Cũng giống như việc bạn có thể đọc tất cả các cuốn sách về hướng dẫn chơi golf mà bạn muốn, nhưng bạn sẽ chẳng bao giờ trở thành tay golf số 1 thế giới như Tiger Woods nếu bạn không vác gậy đi đánh golf thực sự.

Nguồn bài viết: Hồ Sỹ Hùng, blog công nghệ vinacode.net. Bài viết đã được sự cho phép chia sẻ của tác giả bằng email.

Anh Hồ Sỹ Hùng, một developer thế hệ 8x, blog của anh có nhiều bài dịch từ các trang nước ngoài, rất phù hợp với những bạn khả năng Tiếng Anh còn yếu. Đây là blog hay cho các bạn là lập trình viên, các bạn quan tâm có thể đọc nhiều bài viết hay của anh tại vinacode.net

Tôi nên học ngôn ngữ lập trình nào?

Giả sử nhà bạn bị hư đường ống dẫn nước và bạn gọi thợ đến để sửa. Người thợ sửa ống nước đến nhà bạn và hỏi rằng: “Ông muốn tôi dùng dụng cụ nào để sửa?”

Bạn sẽ trả lời như thế nào? “Tôi không quan tâm! Hãy sửa cái chỗ rò rỉ chết tiệt này dùm tôi”.

Vâng, điều đó hoàn toàn đúng. Mọi người đều muốn hoàn thành công việc của họ, và các vấn đề của họ phải được giải quyết. Họ không quan tâm đến công cụ nào mà bạn sử dụng cả. Là một lập trình viên, công việc của bạn là giải quyết vấn đề của khách hàng theo một cách hiệu quả nhất có thể. Điều này có nghĩa là bạn không thể sử dụng một công cụ duy nhất để giải quyết mọi vấn đề. Bạn có thể sử dụng một cái khoan điện để sửa một lỗ rò rỉ trên ống nước không? Dĩ nhiên là không. Có thể bạn sẽ phải sử dụng một loại băng keo dán ống nước cho vấn đề đó.

Ngôn ngữ Lập trình
Ngôn ngữ lập trình nào là tốt nhất hiện nay?

Ngôn ngữ nào tôi nên học là một câu hỏi sai ngay từ đầu. Các ngôn ngữ lập trình là những công cụ trong túi của một lập trình viên phần mềm. Trước khi quyết định xem ngôn ngữ lập trình nào mà bạn muốn học, bạn nên quyết định xem dạng vấn đề nào mà bạn muốn làm việc cùng. Bạn muốn làm việc trên công nghệ Web? Bạn muốn làm việc trên hệ điều hành Linux? Hay bạn muốn làm việc trên nền tảng di động? Có hàng triệu nhánh khác nhau trong thế giới lập trình và bạn phải hỏi bản thân mình tất cả những câu hỏi đến trong đầu và sau đó quyết định xem liệu ngôn ngữ nào thì phù hợp với lựa chọn của bạn.

Điều này không có nghĩa những công cụ là kém quan trọng. Đúng hơn là; chúng không quan trọng bằng vấn đề mà bạn đang cần phải giải quyết.

Bao nhiêu ngôn ngữ lập trình bạn nên học?

Không có vấn đề gì trong việc cố gắng học được thật nhiều ngôn ngữ lập trình cả. Cái mà bạn nên làm đó là thử và học về nhiều ngôn ngữ lập trình nhất mà bạn có thể, và sau đó quyết định xem rằng ngôn ngữ nào bạn nên trở thành chuyên gia về nó.

Quay trở lại với vấn đề tương tự của chúng ta, công cụ nào bạn nghĩ rằng một người thợ sửa ống nước nên mang theo trong túi đồ nghề? Câu trả lời là: “Đủ công cụ để hoàn thành công việc.”

Đúng vậy. Nếu bạn chỉ biết sử dụng mỗi một công cụ, bạn có thể sẽ phải làm việc cùng những người có thể sử dụng những công cụ khác. Điều này xảy ra trong hầu hết mọi công ty phần mềm. Trong những công ty lớn bạn sẽ làm việc cùng những người khác là chuyên gia trong những ngôn ngữ lập trình và công cụ mà bạn không biết cách sử dụng. Điều này có một lợi điểm đó là những người này sẽ là “ngôi sao” trong những lĩnh vực hẹp của họ. Ngược lại nếu bạn muốn làm việc trong những công ty mới khởi nghiệp (hoặc bạn muốn làm việc như một freelancer), bạn có thể muốn biết mỗi thứ một chút của mọi dạng công cụ ngoài kia.

Most Popular Programming Languages of 2014

Dĩ nhiên bạn không cần phải biết sử dụng tất cả các loại tuốc-vít. Bạn chỉ cần trở thành chuyên gia trong việc sử dụng một loại tuốc-vít tốt. Tương tự như vậy, bạn không cần phải trở thành chuyên gia trong mọi ngôn ngữ lập trình web. Chỉ cần học một ngôn ngữ cho thật tốt và bạn sẽ ổn.

Mỗi lĩnh vực lập trình đều có một bộ các công cụ của riêng nó để giúp bạn phát triển các phần mềm. Nếu bạn đang phát triển một website doanh nghiệp (Enterprise), bạn có thể đang làm việc cùng những công nghệ như Core Java, Servlets, EJBs, XML, Unix Shell Scripts, Log Parsers, Databases và rất nhiều loại Web-server khác nhau… Điều này có nghĩa là ngoài các ngôn ngữ lập trình thì còn có rất nhiều các công nghệ liên quan tới lập trình mà bạn nên thành thạo để trở thành một lập trình viên giỏi.

Thêm một điều mà bạn nên biết là – tất cả các ngôn ngữ lập trình là kế thừa lẫn nhau. Một số ngôn ngữ thì rất dễ để lập trình (ví dụ: Python) trong khi một số ngôn ngữ khác thì rất khó (ví dụ: C/C++). Tôi không đề cập đến mức độ thành thạo cần thiết trong việc học các ngôn ngữ đó. Cái mà tôi đề cập là nỗ lực cần thiết trong việc viết chương trình sau khi bạn đã học xong ngôn ngữ đó. Nếu bạn làm việc như một lập trình viên trong một công ty phần mềm, bạn sẽ có thể phải học một ngôn ngữ lập trình mới (có thể là do yêu cầu của nghiệp vụ) trong một khoảng thời gian rất ngắn. Bạn sẽ bắt đầu viết những dòng mã tươm tất trong khoảng thời gian từ 1 tuần đến 3 tháng. Sau đó vấn đề duy nhất là ngôn ngữ lập trình nào bạn thật sự thích làm việc với nó hơn. Vì vậy đừng quá lo lắng về ngôn ngữ nào dễ học hơn; mà hãy lo lắng về ngôn ngữ nào thì dễ sử dụng hơn. (Có một sự tương quan ở đây. Bạn sẽ nhận ra rằng trong hầu hết các trường hợp những ngôn ngữ mà dễ học hơn thì chúng cũng dễ lập trình hơn.)

Bạn có thể học được rất nhiều về lập trình từ các diễn đàn nơi mà các lập trình viên tài năng luôn tụ họp (ví dụ: ProggitHacker News), đọc các bài viết nổi bật và đặt các câu hỏi của bạn tại đây; bạn sẽ sẽ nhận được các câu trả lời chất lượng.

Bí mật lớn nhất:

Cách duy nhất để bạn trở thành một lập trình viên giỏi — đó là lập trình thật nhiều. Nhiều sinh viên không luyện lập trình bên ngoài phòng thực hành và làm các bài tập lớn của họ, và họ sẽ chẳng bao giờ trở thành những lập trình viên giỏi cả. Hãy luyện tập lập trình trong thời gian rảnh rỗi của mình. Hãy thử giải bài toán Euler bằng ngôn ngữ lập trình ưa thích của bạn, hoặc tự xây dựng một trang web cho riêng mình.

Phải nói rằng tất cả những điều nêu ra ở đây chỉ là một số kinh nghiệm của tôi. Chúng có thể đúng hoặc cũng có thể không đúng trong trường hợp của bạn:

– Phát triển phần mềm doanh nghiệp (Enterprise): Học ngôn ngữ Java thì rất tốt. Java thường được sử dụng trong nhiều công ty phần mềm như là ngôn ngữ thứ nhất. Nó sẽ giúp bạn tiến xa hơn trong nhiều trường hợp. Tại cùng thời điểm, tôi gặp phải một số ý kiến phản đối trong việc sử dụng ngôn ngữ từ quan điểm của một lập trình viên mới vào nghề. Bạn cũng nên đọc thêm một số thảo luận ở đây.

– Phát triển Web: Hãy tránh xa ngôn ngữ PHP. Nó là một ngôn ngữ được thiết kế rất tồi. Thay vì đó, hãy học Django hoặc Ruby on Rails. Nếu bạn thích công nghệ của Microsoft thì hãy sử dụng ASP.NET MVC.

– Phát triển ứng dụng trên Windows: Hãy học C# (và có thể đừng học Visual Basic). Nếu muốn chạy các ứng dụng viết bằng C# trên môi trường Linux thì hãy sử dụng dự án Mono.

– Có rất nhiều công cụ lập trình tuyệt vời hoặc các IDE mà bạn nên cố gắng sử dụng thành thạo. Eclipse là một trình IDE nổi tiếng. Notepad++ cũng là một trình soạn thảo code khá phổ biến.

– Bạn nên học thêm về các kỹ thuật như Regular Expressions, Unicode, Information Security v.v… (rất tiếc là tôi không thể liệt kê ra tất cả tại đây.)

– Cố gắng cập nhật những công nghệ mới nhất. Bạn không phải học tất cả những ngôn ngữ mới nhất, nhưng hãy cố gắng có một sự hiểu biết về những xu hướng mới nhất trong lập trình. Ví dụ như lập trình Web, lập trình di động v.v… là những lĩnh vực có rất nhiều sáng tạo đang diễn ra. Bạn không nên bỏ lỡ bất kỳ lĩnh vực nào nếu bạn cảm thấy thích thú chúng. Ngoài ra, những diễn đàn mà tôi có đề cập ở trên sẽ vô cùng hữu ích.

– Học chỉ một ngôn ngữ lập trình thì không phải là một ý kiến hay. Học thật nhiều ngôn ngữ lập trình cũng không phải là ý kiến hay. Hãy cố gắng cân bằng giữa hai thái cực này và cố gắng thật giỏi ít nhất 2 đến 3 ngôn ngữ lập trình trong các lĩnh vực khác nhau. (Như tôi đã giải thích lúc trước, những ngôn ngữ lập trình khác nhau thì được dùng để giải quyết các dạng vấn đề khác nhau.)

Chúc bạn may mắn và chọn được ngôn ngữ lập trình phù hợp cho mình!

Sau đây là một bình luận có chất lượng:

Xin chào mọi người,

Trước tiên, bạn phải quyết định xem lĩnh vực nào trong IT mà bạn muốn theo đuổi. Có rất nhiều lĩnh vực như công nghệ Web, công nghệ di động, phát triển phần mềm, phát triển ứng dụng trên desktop v.v… Nếu bạn muốn đi theo lĩnh vực lập trình Web thì bạn có hai sự lựa chọn:

1. PHP
2. Công nghệ .NET

Hiện tại việc học PHP thì dễ hơn là học C#, nghiên cứu công nghệ .NET thường đòi hỏi nhiều công sức hơn. Vì vậy tôi thích PHP hơn, nhưng bù lại những lập trình viên .NET lại được trả lương cao hơn các đồng nghiệp làm PHP. Tôi muốn nói thêm một điều là, nếu bạn muốn trở thành một freelancer sau 2 đến 3 năm làm việc tại một công ty thì đi theo hướng PHP sẽ có nhiều cơ hội hơn, còn ngược lại thì bạn hãy đi theo công nghệ .NET.

Bạn nên nhớ rằng, công nghệ .NET thì rất lớn và các dự án của nó cũng đồ sộ. Bạn không thể thực hiện toàn bộ dự án một mình được, bạn sẽ luôn luôn cần sự giúp đỡ và Internet thì không giúp được gì nhiều ở đây. Nhưng ở PHP bạn có thể nhận được nhiều dự án nhỏ mà tự mình có thể hoàn thành được, thêm một điểm nữa là ngày càng có nhiều công việc dành cho lĩnh vực PHP hơn. Khách hàng họ chỉ cần một nền tảng độc lập, và PHP đáp ứng rất tốt nhu cầu đó. Một số người nói rằng PHP đang chết dần, điều đó thì hoàn toàn không đúng bởi vì có rất nhiều thứ đang hoạt động rất tốt:

– Các Core PHP, CMS như (WordPress,Joomla,Drupal)
– Giỏ hàng (Interspire, Os Commerce, Zen-Cart, X-cart, Virtuemart v.v…)
– Các Framework như (Symphony, Codeignitor, Cakephp, Zend)

Ai nói rằng PHP đang chết dần! Điều đó là hoàn toàn sai lầm!

Nếu bạn muốn đi theo hướng công nghệ di động, tôi khuyên bạn nên đi theo hướng Android. Nếu là lập trình phần mềm thì nên gắn với .NET hoặc Java. Nếu chuyên viết các ứng dụng desktop thì Java và .NET vẫn là hai sự lựa chọn hàng đầu.

Nhưng tôi phải nói thêm với bạn một điều rằng, hiện tại công nghệ Web và công nghệ di động đang phát triển bùng nổ. Vì vậy tôi thích làm việc với chúng hơn. Khoảng 80% thị trường IT dựa trên công nghệ Web và công nghệ di động, và điều này cũng sẽ đúng trong tương lai. Vì vậy bạn nên gắn chặt với hai công nghệ này.

Thêm một điều nữa mà tôi muốn nói là HTML5/CSS3, Javascript và JQuery. Kiến thức của những công nghệ này thì rất có ích nếu bạn lựa chọn lĩnh vực phát triển Web.

Nguồn bài viết: Hồ Sỹ Hùng, blog công nghệ vinacode.net. Bài viết đã được sự cho phép chia sẻ của tác giả bằng email.

Anh Hồ Sỹ Hùng, một developer thế hệ 8x, blog của anh có nhiều bài dịch từ các trang nước ngoài, rất phù hợp với những bạn khả năng Tiếng Anh còn yếu. Đây là blog hay cho các bạn là lập trình viên, các bạn quan tâm có thể đọc nhiều bài viết hay của anh tại vinacode.net

10 trang thông báo lỗi 404 vui mắt và sáng tạo nhất

Trên thế giới Internet, đối với người dùng phổ thông, có thể nói lỗi 404 là một trong những loại lỗi thường gặp nhất. Theo đó, bạn sẽ gặp lỗi 404 khi một đường dẫn bị hỏng, không khả dụng hoặc đơn giản là bạn không được cấp quyền truy cập đường dẫn này. Thay vì để những thông báo 404 nhàm chán gây khó chịu người dùng, những website dưới đây đưa ra những trang thông báo lỗi 404 hết sức sáng tạo, và vui mắt.

Sad Server

tuanitpro.com-error-404-acm-sad-serverClick vào một đường link quan trọng nhưng lại gặp trang báo lỗi 404 có thể mang lại cảm giác khó chịu cho người dùng. Tuy nhiên, nếu gặp phải một trang báo lỗi như của website này, chắc chắn bạn sẽ… mủi lòng trước những gì website “tâm sự”: “Tôi đã cố gắng rất nhiều. Nhưng không có tác dụng. Tôi thực sự thất vọng. Bạn thấy đấy, tôi cũng chỉ là một máy chủ, cố gắng ghi nhớ cả vũ trụ và phục vụ bạn từng trang web một và rồi nó thậm chí còn chẳng tồn tại…”

Link

404 Pac-Man

tuanitpro.com-error-404-blue-fountain-mediaBiến trang báo lỗi nhàm chán thành giao diện trò chơi huyền thoại PacMan, có thể trang báo lỗi này sẽ làm bạn muốn… thường xuyên gặp lỗi hơn chăng?

Link

Underground Error

tuanitpro.com-error-404-bluedanielMô phỏng lại một ga tàu điện ngầm theo phong cách cực kì chi tiết và nghệ thuật, người dùng còn có thể tương tác với trang báo lỗi 404 này y như một bộ phim hoặc một trò chơi phiêu lưu nào đó. Hãy ở sân ga, đợi đoàn tàu tới mở cửa và click vào cánh cửa để cảm nhận.

Link

Screaming Goat

tuanitpro.com-error-404-blueggTheo trang báo lỗi 404 của website này, một trang báo lỗi có thể làm cả một chú dê phải gào lên vì bực tức chứ không riêng gì người dùng.

Link

Lloyd Christmas Can’t Believe What He’s Seeing

tuanitpro.com-error-404-codeoNo! No, no, no, no, no!!!

Link

Bubble Pop

tuanitpro.com-error-404-hot-dotSố 404 được thiết kế tạo thành từ rất nhiều bong bóng. Bạn hãy thử click vào số 404 để tận hưởng cảm giác thú vị mà trang báo lỗi này mang lại.

Link

Yes, Exactly

tuanitpro.com-error-404-kvartirakrasivoCó thể bạn sẽ không hiểu trang báo lỗi 404 này muốn nói đến điều gì nhưng ai quan tâm cơ chứ, hình ảnh âm nhạc và công trường xây dựng. Đây là một trang thông báo lỗi sáng tạo là nó rất thú vị phải không nào?

Link

Newman!

tuanitpro.com-error-404-nouveller

 

Park offline, reboot required. Park đang offline, yêu cầu khởi động lại.

Link

This Could Go On For Days

tuanitpro.com-error-404-visitsteve

Trang báo lỗi độc đáo mô phỏng lại nhiều thời điểm trong một ngày trên một sa mạc.

Link

Honorable Mentions

tuanitpro.com-error-404z-homestarTrang web thông báo lỗi với nhân vật hoạt hình vui nhộn, kết hợp giao diện thông báo lỗi 404 cổ điển của IE 6. Bạn có thể tìm thấy thú vị ở đây

Link

“We’ve Got Motion!”

Và cuối cùng, thông báo lôi 404 với một video thú vị.

Nosh: 404 from Firespotter Labs on Vimeo.

Link

Nguồn: http://time.com/3478874/best-404-error-pages/

4 Kỹ năng quan trọng nhất đối với một lập trình viên

Với rất nhiều công nghệ, ngôn ngữ lập trình và các nền tảng phát triển như hiện nay, thì rất khó để nhận ra đâu là thứ tốt nhất để bạn đầu tư thời gian và công sức học những kỹ năng quan trọng trong nghề phát triển phần mềm.

Tôi thường được nhiều người hỏi về việc làm thế nào để trở thành một lập trình viên giỏi hơn, và rằng liệu họ có nên đầu tư thời gian vào một ngôn ngữ lập trình hoặc công nghệ xác định nào đó hay không. Nhưng hôm nay, tôi sẽ liệt kê ra đây một số kỹ năng tôi nghĩ rằng đó là những kỹ năng quan trọng nhất và không bị lỗi thời mà một lập trình viên nên có, chúng sẽ mang lại cho bạn những cơ hội tốt nhất trong nghề nghiệp và giúp bạn làm việc hiệu quả hơn.

Kỹ năng nào là quan trọng nhất đối với một lập trình viên?Kỹ năng nào là quan trọng nhất đối với một lập trình viên?

1. Kỹ năng giải quyết vấn đề

Trước đây, tôi đã từng nói về sự cần thiết về việc học cách giải quyết vấn đề, bởi vì tôi nghĩ rằng đây là một kỹ năng vô cùng quan trọng đối với bất kỳ một lập trình viên nào. Công việc phát triển phần mềm thì thực ra 100% là để giải quyết các vấn đề. Nếu không có những vấn đề thì chúng ta cũng chẳng cần có những phần mềm làm chi phải không bạn?

Tất cả phần mềm đều được thiết kế để giải quyết một số vấn đề của người sử dụng và trong cái giải pháp chung đó lại có một mảng rất lớn những vấn đề nhỏ hơn nảy sinh. Không quan trọng về việc bạn đang sử dụng ngôn ngữ lập trình hoặc công nghệ nào, nếu bạn không thể giải quyết những vấn đề thì bạn không phải là một người phát triển phần mềm giỏi.

Kỹ năng giải quyết vấn đề là rất quan trọngMột điều đáng ngạc nhiên là hầu hết các lập trình viên lại rất yếu trong kỹ năng giải quyết vấn đề. Tôi thường xuyên nghe được những lời than phiền về các buổi phỏng vấn tuyển dụng rằng nó thì quá khó, bởi vì họ đã hỏi lập trình viên về cách giải quyết một vài vấn đề phức tạp. Tôi đã nói về việc tại sao những buổi phỏng vấn khó lại là một điều tốt và một phần của lý do là bởi vì họ muốn kiểm tra khả năng giải quyết vấn đề của các lập trình viên mà thôi. Tôi biết rằng có rất nhiều lập trình viên vẫn không đồng ý với tôi về quan điểm này và họ không hiểu tại sao một trang web giống như TopCoder sẽ làm tăng khả năng phát triển phần mềm của họ lên rất nhiều, nhưng từ kinh nghiệm cá nhân thì tôi biết rằng chính việc thực hành cách giải quyết vấn đề trên TopCoder là bước ngoặt trong nghề nghiệp của tôi.

Bạn hãy nghĩ về một người thợ mộc làm ví dụ. Nếu muốn trở thành một người thợ mộc thành công, thì bạn nên giỏi trong việc cắt gỗ. Bạn cũng phải có khả năng thực hiện được tất cả các dạng cắt và sử dụng nhiều công cụ khác nhau. Không quan trọng là bạn có bao nhiêu năm kinh nghiệm trong nghề thợ mộc hay bạn có khả năng thiết kế đồ mỹ nghệ tốt đến đâu, nếu mỗi lần bạn thử cắt gỗ mà bạn phải khó nhọc lắm mới hoàn thành được nhát cắt đó thì bạn không phải là một người thợ mộc giỏi.

Cắt gỗ là một kỹ năng cơ bản của nghề thợ mộc, cũng giống như giải quyết vấn đề là kỹ năng cơ bản của nghề phát triển phần mềm.

2. Kỹ năng tự học

Kỹ năng tự họcCó thể nói rằng không có một kỹ năng nào trong cuộc sống lại quan trong bằng kỹ năng học cách để học. Kỹ năng này đặc biệt quan trọng trong ngành phát triển phần mềm, bởi vì không lĩnh vực nào mà tôi biết lại có tốc độ thay đổi nhanh hơn là lĩnh vực phát triển phần mềm.

Bạn không thể biết tất cả về mọi thứ. Thậm chí bạn cũng không thể đầu tư thời gian để trở nên tinh thông dù chỉ một công nghệ hoặc framework xác định nào đó — bởi vì mọi thứ thay đổi quá nhanh! Thay vì đó bạn cần có khả năng nhanh chóng thu được kiến thức mà bạn cần cho công việc đang làm. Nếu bạn thực sự muốn có một kỹ năng mà sẽ giúp bạn luôn thuận lợi trong nghề phát triển phần mềm, thì hãy học cách làm thế nào để dạy chính mình.

Chỉ có một cách duy nhất để phát triển kỹ năng này là hãy thực hành nó. Hãy học một ngôn ngữ lập trình hoặc công nghệ mới, thậm chí nếu bạn nghĩ rằng mình sẽ chẳng bao giờ sử dụng nó. Bạn sẽ rất ngạc nhiên vì khả năng tiếp thu rất nhanh của mình, bởi vì bạn đã có kiến thức nền tảng trước đó rồi. Nếu bạn có thể nhanh chóng thích nghi với sự thay đổi chóng mặt trong ngành phát triển phần mềm và các công nghệ cũng như những nền tảng kết hợp cùng với nó, thì bạn sẽ có những kỹ năng mà sẽ luôn luôn đáp ứng được yêu cầu công việc.

Mặc dù tôi có đôi chút hoài nghi về một tuyên bố của tác giả Tim Ferris, anh ta đã viết một cuốn sách tuyệt vời tên là “Trở thành đầu bếp chuyên nghiệp trong vòng 4 giờ”, nó chứa một số kỹ thuật rất hay về cách làm thế nào để học mọi thứ một cách nhanh nhất. (Tôi cũng đang muốn viết một cuốn sách như vậy về mọi chủ đề).

3. Kỹ năng đặt tên

Kỹ năng đặt tênKhi mọi người hỏi tôi rằng công việc mà tôi làm hàng ngày là gì, tôi thường nói nghề của tôi là “đọc những thứ do người khác đặt tên và đặt tên cho một số thứ.” Vâng, thực ra không một ai hỏi tôi câu hỏi đó và tôi cũng không thực sự trả lời theo cách này, nhưng tôi chắc là mình có thể làm như vậy. Phát triển phần mềm thì tất cả là về mô tả những thứ trừu tượng. Hầu hết những thứ mà chúng ta đang xây dựng thì không thể nhìn thấy được.

Mỗi lần mà bạn viết code nghĩa là bạn đang đặt tên cho một số thứ. Khi bạn đọc code của chính mình hoặc của một ai khác viết ra, thì bạn đang cố gắng hiểu đoạn code đó thông qua tên của các thứ trong nó. Hầu như tôi có thể đoán chính xác trình độ của một lập trình viên bằng cách xem qua cách họ đặt tên các phương thức, biến và các lớp trong code mà họ viết.

Một lập trình viên mà thiếu hụt khả năng đưa ra những tên tốt tới những khái niệm và dữ liệu trong code của họ thì giống như một nhà phiên dịch mà bị câm vậy. Không quan trọng liệu bạn có hiểu một điều gì đó hay không, nếu bạn không thể giải thích điều đó một cách rõ ràng thì trong chốc lát nó sẽ rời khỏi đầu của bạn.

Cách tốt nhất để nâng cao kỹ năng này là luôn luôn thực hành nó. Tôi thường đổi tên một số thứ trong code ngay khi tôi vừa đọc và hiểu nó. Ngay khi tôi bắt đầu hiểu được phương thức đó thực thi điều gì, thì tôi sẽ thay đổi tên của nó cho phù hợp với điều tôi hiểu. Tôi sẽ làm điều này cả trong khi tôi đang đọc code, thậm chí việc này không tạo ra một thay đổi logic nào trong đó. Bạn càng tập trung nhiều vào việc đưa ra những cái tên thích hợp cho các thứ, thì bạn ngày càng trở nên tốt hơn. Điều này cũng là thứ dễ nhận thấy nhất về đoạn code của bạn. Rất khó để biết liệu code của bạn thì có đúng hoặc hiệu quả hay không chỉ bằng cách xem qua chúng, nhưng nếu tôi đọc nó và có thể hiểu được thì tôi sẽ cho rằng bạn biết bạn đang làm gì.

4. Kỹ năng hợp tác với mọi người

Kỹ năng hợp tác với mọi người

Trong danh sách này thì kỹ năng hợp tác với mọi người được liệt kê cuối cùng, nhưng trong nhiều trường hợp thì có thể nói rằng nó là kỹ năng đầu tiên và quan trọng nhất. Ở mọi nơi bạn đến đều có con người. Trừ khi bạn làm việc một mình hoặc phát triển phần mềm cho chính bạn xài, còn không thì người khác sẽ ảnh hưởng đến nghề nghiệp phát triển phần mềm của bạn.

Trước đây tôi đã nói về tại sao bạn lại không muốn chỉ trích người khác, nhưng thực ra có nhiều cách để hợp tác với mọi người hơn là chỉ trích. Tôi luôn đọc lại cuốn sách nổi tiếng của tác giả Dale Carnegie, là cuốn “Đắc Nhân Tâm”, bởi vì cuốn sách này rất quan trọng trong việc học cách làm thế nào để thành công trong cuộc sống. Nếu bạn muốn phát triển những kỹ năng của con người thì hãy đọc cuốn sách này!

Vấn đề cơ bản là loài người không phải là một sinh vật có logic, chúng ta thường hành xử theo cảm xúc. Chắc chắn là chúng ta luôn tự hào về khả năng lý trí của mình, nhưng trong thực tế thì hầu hết các quyết định mà chúng ta tạo ra thì thường bị ảnh hưởng bởi cảm xúc hơn là lý trí. Điều đó có nghĩa là trong nghề phát triển phần mềm thì trừ khi bạn có thể hợp tác hiệu quả với những lập trình viên khác, những người quản lý và thậm chí là cả khách hàng; nếu không thì bạn sẽ luôn luôn gặp phải những vấn đề rắc rối, cho dù bạn có những ý tưởng tốt đến mấy hay kỹ năng của bạn có tuyệt vời ra sao đi nữa.

Tích cực tham gia vào cộng đồng phát triển phần mềm nói chung có thể giúp bạn rất nhiều trong nghề nghiệp. Nó không chỉ là về tạo mối quan hệ, nhưng việc đưa tên của bạn ra ngoài cũng là cách hay để xây dựng một “nghiệp” tốt. Thực hiện điều này thành công là bản lề dẫn tới khả năng bạn có thể hợp tác hiệu quả với mọi người. (Bạn có muốn tạo ra một con đường tắt trong việc học cách làm thế nào để hợp tác với mọi người không? Nó thì rất đơn giản. Hãy tốt bụng!)

Thế còn những kỹ năng về thực hành thì sao?

Bạn có thấy rằng tôi vẫn không đưa vào trong danh sách trên một công nghệ xác định hoặc thậm chí một vài kỹ năng đang thịnh hành hiện nay là phát triển web và di động không? Có một nền tảng vững chắc trong một vài lĩnh vực công nghệ nào đó là điều khá quan trọng, nhưng thực ra những kỹ năng đó lại không quan trọng bằng 4 kỹ năng mà tôi đã đề cập ở trên.

Nếu bạn có thể giải quyết vấn đề, học mọi thứ nhanh chóng, đặt tên mọi thứ hợp lý, và hợp tác hiệu quả với mọi người, thì bạn sẽ có được mức thành công lớn hơn nhiều trên con đường sự nghiệp và sẽ thành chuyên gia trong bất kỳ lĩnh vực công nghệ nào.

Dĩ nhiên điều quan trọng là bạn nên học một đến hai ngôn ngữ lập trình một cách sâu sắc và có một kiến thức chuyên môn đủ rộng ở trong lĩnh vực này, nhưng miễn là đừng đi quá xa với chúng và bạn nên tập trung vào 4 kỹ năng quan trọng nêu trên để luôn phát triển trong nghề.

Nguồn bài viết: Hồ Sỹ Hùng, blog công nghệ vinacode.net. Bài viết đã được sự cho phép chia sẻ của tác giả bằng email.

Là người yêu thích công nghệ, mình hay tìm đọc các trang về chia sẻ code, blog viết về công nghệ. Tình cờ đọc được blog của anh Hồ Sỹ Hùng, một developer thế hệ 8x, blog của anh có nhiều bài dịch từ các trang nước ngoài, rất phù hợp với những bạn khả năng Tiếng Anh còn yếu. Đây là blog hay cho các bạn là lập trình viên, các bạn quan tâm có thể đọc nhiều bài viết hay của anh tại vinacode.net

Bài tham khảo khác: 17 Cách để thức dậy sảng khoái vào buổi sáng