A good programmer is someone who always looks both ways before crossing a one-way street. ~Doug Linder

Working as a software programmer in IT industry, one thing that drives us daily to the work place; is that fun and passion lies in programming. But to make that programming a fun and to get an eternal elation out of it, one needs to learn and adhere to some basics which make you a good programmer.

I am not writing mantras which you can follow to become a good programmer, but the intention is to collate a list of helping tips which I learned and implemented in the industry to get good results. There is no definition of a good programmer, but here we are referring to the category of programmer who have developed excellent IT solutions and helped in overall growth of this industry.

  1. Work on Basics

As it is true for any industry and any job, the conceptual understanding is the key for success. Unless one has strong conceptual foundation, he/she can never be a good programmer. The core conceptual understanding helps you in designing and implementing the best solutions in the best possible way. If still you feel gap in core computer science and your programming language specific concepts, it’s never too late to go back and review the basics.

 

  1. Start putting question tags (how, what) with every set of code you write

One thing that I realized creating a clear separating line between good programmer and rest is that zeal to know what and how it is happening. There is small group of people who can never leave a code without knowing exactly what is happening when it executes. I understand that in tight deadlines, we don’t get this liberty always and hence have to leave the code just knowing that it’s doing its job. Although this is a bit different topic of how to handle such situations, but as a programmer one can always try the level best to dig into as much as one can. And believe me, this becomes a habit with time and then you do it unknowingly every time.

 

  1. You learn more by helping others

Most of us have a common tendency of turning our heads towards forums or groups only when we need help. And again a clear separation between the good programmer and rest that the formers visit these places more often to help others. This makes them learn more then they learn getting their problem solved by someone else. Within a team as well, help others to solve their problems. Believe me, understanding others’ problem in their context, investigating on that and providing solutions; will leave you much more learned than before.

 

  1. Write simple, understandable but logical code

As in almost every aspect of life, the formula of KISS (Keep it simple and short) works in programming as well. Write more logical code and avoid complexity. Sometimes people do write complex code just to prove their capability to write such codes. My experience says that simple but logical codes always works well, resulted in fewer issues and are more extendable. I remember an excellent quote

Good code is its own best documentation. As you’re about to add a comment, ask yourself, “How can I improve the code so that this comment isn’t needed?” ~Steve McConnell

 

  1. Spend more time in analyzing the problem, you’ll need less time to fix it

Spend more time in understanding and analyzing the problem and designing solutions for it. You will find the rest of the things quite easily doable. Designing not always mean using modeling languages and tools, it can be as simple as looking at sky and thinking solution in your mind. Those who have habits of pressing keyboard (for coding) the moment get the problem, usually ended us something different than the requirement.

If you cannot grok the overall structure of a program while taking a shower, you are not ready to code it. ~Richard Pattis

 

  1. Be the first to analyze and review your code

Although a bit difficult, but try to break your own code before others can and with the time you will learn to write close-to-bug-free code. Always do a close and unbiased review of your code. Also never hesitate to take others view on your code. Working with good programmers and taking their feedbacks will surely help you become a good programmer.

 

  1. Don’t dismay yourself by looking at changing technology world

Over these periods in IT industry, I met with many people who are either disappointed by their work or even left it to search new job saying they want to learn and work in latest technologies. I don’t see any problem with this aspiration but the very first incorrect word is the ‘latest technologies’. What we are hearing everyday and mean here is new tools, APIs, frameworks and others means coming up everyday to make the programming easier and quicker. This anyway will continue in technology world. But what needs to be understood is that the core and basic technologies changes with much lesser pace than frameworks, tools and APIs around it. This is like the sea where the surface water moves very rapidly but the deep water is relatively calm and concentrated and most of the aqua lives survive here. So, feel yourself in that deep water and close to core technologies. For e. g. in Java enterprise world, lots of web frameworks exist and new ones coming every other week. But the core concepts of request based client-server communication, MVS pattern, filters/servlets/JSP, resource bundling, XML parsing etc remains same. So spend more time in learning these core concepts rather than worrying about ever changing frameworks and tools around it. Believe me, with the foundation of core concepts, you will always find easier to learn new frameworks, tools and APIs.

 

  1. Work-around don’t work for longer time

Many times software programmers implement work around solutions (may be because of lack of time, lack of problem understanding or lack of technology experience). But over the period these work around solutions always resulted in corrupting the code, making it less extendible and maintainable and lot of wastage of time later on. Always prefer to implement when you know the in-out of the solution. I understand that it becomes unavoidable in some circumstances, but it’s like, one should speak truth always but you tell lie in some circumstances.

 

  1. Read documentation

One of the essential habits of good programmer is that they read lots of documentation. May it be specifications, JSR, API documents, tutorials etc. Reading documents helps you creating that essential foundation based on which you program in best of the way.

 

  1. You can learn from others code as well

I interacted with some excellent programmers who actually have java source project inside their IDE all the time and read/refer that in daily work. They do it not only to fulfill their appetite of knowing the basics but also to learn ways of writing good programs. Reading and referring reliable and known open source code or your senior’s code, can also help you making your programming better.

 

And the last, not listed above: Don’t compare yourself with others

Your comparison of yourself with others will only result in evolution of negative feelings and un-healthy competition. Everyone has got his or her strengths and weaknesses. It is more important that we understand ours and work on it. I have seen many times that so called ‘fundoo-programmers’ (fundamentally strong programmer) also make silly mistakes. So, analyze yourself, list down your areas of improvement and work on it. Programming is a real fun, enjoy it.

Any fool can write code that a computer can understand. Good programmers write code that humans can understand. ~Martin Fowler

———————

Một lập trình viên giỏi là một người luôn nhìn 2 phía khi băng qua đường 1 chiều”. ~ Doug Linder

Đối với một lập trình viên trong thế giới công nghệ, có một thứ mà có thể kéo chúng ta ra khỏi nhà và đến nơi làm việc, đó là niềm vui và đam mê trong việc lập trình. Nhưng để khiến cho công việc thực sự vui vẻ và có thể tạo ra một niềm hứng khởi vĩnh cửu, chúng ta cần phải biết những điều căn bản để giúp trở thành một nhà lập trình viên giỏi.   Trong bài viết này, tôi tập hợp những mẹo mà mình đã học và thực hành trong thực tiễn để có được những kết quả tốt nhất. Không có định nghĩa thế nào là một lập trình viên giỏi, tuy nhiên tôi  đang nói tới một nhóm những con người đã tạo ra những giải pháp xuất sắc cho nền công nghiệp IT và giúp cho nền công nghiệp này ngày càng phát triển.

1. Làm việc với Căn bản  

Đúng với tất cả các ngành nghề và công việc, hiểu được bản chất là nhân tố quyết định cho thành công. Trừ khi một người có một nền tảng vững chắc, bằng không anh/cô ấy sẽ không bao giờ trở thành một người lập trình giỏi. Việc hiểu được bản chất  giúp cho chúng ta có thể thiết kế và thực hiện những giải pháp hay với những cách tốt nhất có thể. Nếu bạn vẫn còn cảm thấy có khoảng trống trong lĩnh vực khoa học máy tính hoặc các khái niệm trong ngôn ngữ lập trình, sẽ không bao giờ là quá muộn để quay đầu và học lại những điều căn bản.

2. Hãy bắt đầu những câu hỏi (làm sao, cái gì) với tất cả nhưng đoạn code bạn viết  

Một điều giúp tôi nhận ra sự khác biệt giữa những người lập trình giỏi và những người khác đó chính là sự thôi thúc muốn biết cái gì và làm cách nào điều đó lại xảy ra. Có một nhóm nhỏ những người sẽ không bao giờ rời dòng code của mình cho đến khi biết chắc chắn cái gì đang xảy ra khi dòng code đó được chạy. Đôi khi, với thời gian hạn hẹp, chúng ta không thể lúc nào cũng có được sự tự do để làm điều đó, và đôi khi ta phải bỏ dở việc đào sâu nghiên cứu và chấp nhận rằng dòng code đó có thể làm được việc. Nhưng đối với một người lập trình giỏi, chúng ta luôn có thể cố gắng hết sức để đào vấn đề càng sâu càng tốt. Và hãy tin tôi đi, việc này sẽ trở thành một thói quen và sau đó bạn làm mà không biết rằng mình đang thực hiện điều đó.

3. Bạn học được nhiều hơn nếu giúp đỡ người khác  

Hầu hết chúng ta có một xu hướng phổ biến là quay lại với các diễn đàn chỉ khi chúng ta cần sự giúp đỡ. Và một lần nữa, một điều phân biệt giữa người lập trình giỏi và những người khác là họ vào các diễn đàn thường xuyên để giúp đỡ và chia sẻ. Điều này sẽ khiến họ học hỏi thêm được nhiều điều hơn là để vấn để của mình cho người khác giải quyết. Và tin tôi đi, việc hiểu được vấn đề của người khác trong bối cảnh của họ , điều tra và cung cấp giải pháp sẽ khiến bạn học được nhiều hơn so với trước đây.

4. Viết code đơn giản, dễ hiểu nhưng phải đúng logic.  

Như trong hầu hết mọi khía cạnh của cuộc sống, công thức KISS (Keep It Short and Simple) cũng được áp dụng với lập trình. Hãy viết nhiều những đoạn code hợp lý và tránh sự rườm rà phức tạp. Nhiều người cố tình viết ra những đoạn mã phức tạp để chứng tỏ khả năng của mình, nhưng theo kinh nghiệm của mình, tôi thấy những đoạn code đơn giản, logic luôn làm được việc, nó thường sẽ ít có vấn đề và dễ dàng mở rộng. Tôi vẫn còn nhớ một đoạn trích dẫn : “Những đoạn mã tốt thì bản thân nó đã là một tài liệu tốt nhất. Mỗi khi bạn phải thêm vào 1 dòng chú thích (comment), hãy luôn đặt câu hỏi: Làm cách nào tôi có thể làm sáng tỏ đoạn mã này mà không cần phải chú thích thêm” ~ Steve McConnel.

5. Dành nhiều thời gian trong việc phân tích vấn đề, bạn sẽ cần ít thời gian hơn để sửa chữa nó  

Dành nhiều thời gian trong việc tìm hiểu và phân tích vấn đề và thiết kế giải pháp cho nó sẽ giúp bạn dễ dàng thực hiện được phần còn lại. Thiết kế không phải lúc nào cũng có nghĩa là bằng cách sử dụng ngôn ngữ mô hình hóa và các công cụ, nó có thể đơn giản như nhìn bầu trời và suy nghĩ giải pháp trong tâm trí của bạn. Những người có thói quen nhấn bàn phím (để viết code) ngay thời điểm nhận được vấn đề, thường kết thúc với một cái gì đó khác hơn nhiều so với yêu cầu. “Nếu bạn không thể hình dung ra cấu trúc tổng thể của một chương trình trong khi đang tắm, bạn chưa sẵn sàng để code nó”. ~ Richard Pattis

6. Hãy là người đầu tiên phân tích và kiểm duyệt mã của bạn  

Mặc dù có một chút khó khăn, nhưng hãy cố gắng để khám phá những đoạn mã của bạn trước khi những người khác làm việc đó, và với thời gian, bạn sẽ học được cách để viết ra những đoạn mã mà hầu như sẽ không có lỗi. Luôn luôn xem xét chặt chẽ và không thiên vị với những đoạn mã đó; Cũng không bao giờ ngần ngại để người khác xem nó. Làm việc với các lập trình viên tốt thì các phản hồi từ họ chắc chắn sẽ giúp bạn trở thành một lập trình viên tốt.

7. Không chạy theo công nghệ  

Trong giai đoạn gần đây của ngành công nghiệp IT, tôi đã gặp rất nhiều người thất vọng bởi công việc của họ, thậm chí bỏ việc để tìm những cơ hội mới. Họ nói rằng họ muốn học và tìm hiểu những công nghệ mới nhất. Những gì chúng ta nghe thấy hàng ngày về “công nghệ mới” có thể hiểu là những công cụ mới, API, framework và nó được phát triển theo từng ngày để khiến cho việc lập trình dễ dàng hơn và nhanh hơn. Điều này dù sao vẫn đang rất phổ biến và sẽ tiếp tục trong thế giới công nghệ. Nhưng những gì cần phải hiểu chính là các công nghệ cốt lõi và cơ bản thì thay đổi rất ít so sánh với các framework, tool và API xung quanh nó. Cũng giống như nước biển, nếu nước ở tầng trên thường nổi sóng cuồn cuộn và chảy đi với tốc độ rất nhanh thì nước ở tầng sâu lại ít di chuyển và đó mới chính là nơi để nguồn thủy sản sinh sôi và phát triển. Vì thế, hãy cảm nhận chính mình trong phần nước sâu, và gần gũi với những công nghệ cốt lõi. Ví dụ, trong Java Enterprise, hiện đang có rất nhiều web frameworks tồn tại và còn nhiều nữa sắp được tung ra. Nhưng những khái niệm cốt lõi của mô hình Client-Server, MVC pattern, filters/servlets/JSP, resource bundling, XML parsing thì vẫn không thay đổi. Vì thế hãy dành nhiều thời gian để  tìm hiểu về những khái niệm này hơn là lo lắng và chạy theo những framework và tool xung quanh nó. Với nền tảng về các khái niệm cơ bản vững chắc, bạn sẽ luôn luôn thấy việc học công nghệ mới, tool hay các API sẽ là công việc khá đơn giản.

8. Giải pháp tạm thời (work-around solution) không tồn tại được lâu.  

Rất nhiều lập trình viên sử dụng các giải pháp tạm thời, lý do có thể là do thiếu thời gian, thiếu kinh nghiệm, thiếu sự hiểu biết của vấn đề. Nhưng theo thời gian, những giải pháp đó sẽ gây ra sự hỏng hóc của chương trình hoặc mã, nó khiến ta khó có khả năng mở rộng hoặc bảo trì, dẫn đến việc tốn nhiều thời gian và công sức sau này để sửa chữa nó. Vì thế hãy luôn luôn ghi nhớ là cần phải tìm những giải pháp khi bạn biết rõ đầu vào và đầu ra của nó. Trong nhiều trường hợp, sẽ khó tránh khỏi những việc phải sử dụng work-around, cũng giống như việc người ta hay nói: “Tôi luôn luôn nói thật, nhưng trong một vài trường hợp tôi phải nói dối“.

9. Đọc tài liệu  

Một trong những thói quen cần thiết của các lập trình viên giỏi là họ đọc rất nhiều tài liệu. Nó có thể là các thông số kỹ thuật, JSR (Java Specification Request), tài liệu, hướng dẫn API. Đọc tài liệu sẽ giúp bạn hình dung ra nền tảng thiết yếu dựa trên đó, bạn có thể lập trình theo cách tốt nhất.

10. Bạn có thể học hỏi từ mã của người khác  

Tôi cộng tác với một số lập trình viên xuất sắc, những người lúc nào cũng có những dự án java trong IDE của họ để có thể đọc hoặc tham chiếu đến nó trong công việc hàng ngày. Họ làm điều đó không chỉ để thỏa mãn nhu cầu được hiểu về các vấn đề căn bản mà còn là một cách để viết những chương trình tốt. Đọc và tham khảo những mã nguồn uy tín hoặc từ những đồng nghiệp lâu năm, sẽ giúp cho bạn tạo ra những chương trình tốt hơn.   Và điều cuối cùng, không được liệt kê ở trên: Đừng so sánh mình với những người khác   So sánh của bạn về bản thân với người khác sẽ chỉ dẫn đến những cảm xúc tiêu cực và cạnh tranh không lành mạnh. Mọi người đều có điểm mạnh và điểm yếu riêng. Quan trọng hơn là chúng ta phải hiểu bản thân và làm việc với nó. Tôi đã nhiều lần chứng kiến những người được cho là lập trình viên kiệt xuất lại làm ra những sai lầm ngớ ngẩn. Vì vậy, phân tích bản thân, lập danh sách những thứ bạn cần cải thiện và làm việc với nó. Lập trình là một niềm vui thực sự, hãy tận hưởng nó.   “Bất kỳ kẻ ngốc nào cũng có thể viết mã để một máy tính có thể hiểu được. Các lập trình viên giỏi viết mã để cho những người khác có thể hiểu được“. ~ Martin Fowler   Source: http://tapchilaptrinh.vn –

See more at: http://toancauxanh.vn/news/technology/10-cach-hay-de-tro-thanh-mot-lap-trinh-vien-gioi#sthash.hS9HwPub.dpuf