Monday, March 24, 2014

7 things I learned from software industry



  1. An old fox ain't safe to trap. There are people with 10 years of experience in their CVs, but actually have a year of experience repeating 10 times. Each language, framework is meant to solve its own set of problems. A developer who fails to renew his knowledge everyday is like a carpenter without a toolbox, resorting to hammer a nail with a wrench. Usable, but simply not what someone in his right mind would do
  2. Get out of your station once in a while. Meet more people, from all kind of careers and classes. Information Technology doesn't exist on its own but forms symbiosis relationships with other industries by providing additional values. In every career, people with rich experience outside of their professions are always appreciated. Especially in IT, the more a developer understands his users, the more down to earth his solutions are.
  3. Quality is free, if you invest heavily for it. That being said, a good product isn't built by money. A good product is a result of multiple factors, such as capable developer, sufficient hardware power, suitable working environment, etc. and each of them needs (lot of) money. Interesting enough, investing in quality is a long-term cost reduction solution. Developers who compromise the quality of their work for the sake of cost reduction can look up to Japan, the country where the idea quality and cost reduction are two sides of a coin is well spread.
  4. This is a hard job. Don't let luxurious office like that of Google or cool gadgets fool your mind. Developers are 21st century farmers. For one thing, I am pretty confident that developers kill just as many bug as farmers do. While farmers can sleep tight at 2AM, the risk for a developer to be waken up because of a crash server is very real. Even worse, everyday some where in the earth, a developer is tearing his hair off, for his hard written code is to be removed as the spec has changed. Big thank to clients who have "mastered" the art of Lean Startup.
  5. "Good developer doesn't need test". Together with "I will get back to it tomorrow" are the two biggest lies in the whole IT industry. Unless you are the almighty Chuck Norris. Chuck Norris' code doesn't have bug. His code always works. ALWAYS. He kills bugs by staring at them.
  6. Argument is good. I am not criticizing walking away from an intensive argument as a cowardly act. I believe in a healthy argumentative and non-consensus culture where the need to follow courtesy and command from upper level is not overrated. Argument needs to be based on the good will of understanding and sharing. An argument whose goal is to win the fight is intellectually bullshit and no better than a trivial slander.
  7. The high-tech illusion. In their casual conversations, developers tend to drop phases such as "in computer science" or "the IT people", implying they are part of the high-tech world. Just among us, we usually aren't. The researchers who made fundamental breakthroughs are in the high-tech world. The rest of us are appliers of their work. And because we go about this work in teams and projects, we are more like in the human communication business. Our successes stem from good interactions between team members and our failures stem from poor ones. So the next time you are in a death match, it might not because your developers don't know how C pointer works, they might haven't read "How to win friends and influence people".

===================================================


  1. Sống lâu không lên lão làng. Có những người CV 10 năm kinh nghiệm nhưng thật ra là 1 năm kinh nghiệm lặp lại 10 lần. Mỗi ngôn ngữ, framework được tạo ra để giải quyết một bài toán của riêng mình. Developer kiến thức hạn hẹp, không được làm mới mỗi ngày cũng giống như anh thợ mộc không đủ đồ nghề, dùng cờ lê để đóng đinh. Vẫn dùng được, nhưng méo mó vặn vẹo và dễ lên tăng-xông.
  2. Đặt bàn phím xuống và đi. Gặp nhiều người hơn, những con người đủ loại ngành nghề và tầng lớp. Công nghệ thông tin không tồn tại riêng lẻ, mà tựa lưng vào những nhóm ngành khác, đóng góp giá trị gia tăng. Bất kỳ nghề nghiệp nào cũng hoan nghênh những con người có vốn sống đa dạng. Đặc biệt với CNTT, vốn sống là vựa ý tưởng, đưa sản phẩm đến gần hơn với người dùng.
  3. Chất lượng không mất tiền mua; nhưng tiền không có, chẳng thấy chất đâu. Sự thật, sản phẩm tốt không mua được bằng tiền. Để có sản phẩm tốt, bạn cần có developers giỏi, server mạnh, môi trường làm việc phù hợp, etc, và mỗi thứ đó đều cần (rất nhiều) tiền. Thú vị hơn đầu tư vào chất lượng là giải pháp giảm chi phí lâu dài. Những developers thoả hiệp chất lượng để giảm chi phí nên học tập người Nhật, nơi quan điểm chất lượng và giảm chi phí song hành.
  4. Đời rất dở nhưng vẫn phải niềm nở. Lập trình là một nghề vất vả. Đừng bị văn phòng lung linh như Google và đủ thứ đồ chơi làm mờ mắt, làm nghề này cực chả khác đi đồng. Ngoài chuyện bắt sâu bọ, developer còn có cơ bị lôi đầu dạy lúc 2 giờ sáng vì server sập. Hãi nhất là khách hàng "quán triệt” tư tưởng Lean Startup, specs đồi xoành xoạch. Lợi thì có lợi nhưng răng không còn. Nay làm mai sửa, mà vẫn phải cắm mặt làm, code vị nhân sinh anh ơi!
  5. "Developer giỏi không cần test". Cùng với câu "Để đó mai sửa" là hai câu nói dối vĩ đại nhất trong lịch sử nghề lập trình. Trừ khi bạn là lão Chuck Norris xứ Mỹ. Code của lão khi nào cũng chạy và luôn luôn đúng. Giai thoại đồn rằng lão chỉ cần nhìn code chằm chằm là nó tự sửa.
  6. Trang luận là tốt. Không phải tôi chê "một điều nhịn là chín điều lành", cũng không cổ suý "một điều nhịn là chín điều nhục". Tôi tin vào một văn hoá tranh luận và không nhất trí khoẻ mạnh, nơi sự lịch thiệp và mệnh lệnh ở trên truyền xuống không quá quan trọng. Tranh luận có văn hoá lấy chia sẻ và thấu hiểu làm nền tảng. Bước vào cuộc tranh cãi với mục đích duy nhất là dành phần đúng về mình thì đó là một cuộc mạt xát và thoá mạ.
  7. Ảo tưởng vĩ đại. Trong các buổi chuyện trò, dân máy tính thường có những câu đệm "trong ngành khoa học máy tính" hay "giới công nghệ thông tin", hàm ý mình góp một phần trong bức tranh công nghệ cao. Thực chất ta không "công nghệ cao" như mơ. Ngoài một nhóm nhỏ các nhà nghiên cứu đầu ngành, đại đa số dân công nghệ dừng lại ở ứng dụng các nghiên cứu đó. Và việc này ta làm theo nhóm, theo dự án. Tất thảy chúng ta đều trong ngành nhân sự thì đúng hơn. Thành công trong công việc đến từ sự liên kết của các cá nhân trong tập thể, và thất bại từ sự lỏng lẻo trong chính các liên kết ấy. Vậy nên lần tới dự án sa lầy, có thể không phải vì các developers không biết con trỏ trong C, mà vì họ chưa đọc "Đắc nhân tâm".