.NET Best Practice No 1 - Detecting High Memory consuming functions in .NET code

Introduction and Goal

One of the important factors for performance degradation in .NET code is memory consumption. Many developers just concentrate on execution time to determine performance bottle necks in a .NET application. Only measuring execution time does not clearly give idea of where the performance issue resides. Ok, said and done one of the biggest task is to understand which function, assembly or class has consumed how much memory. In this tutorial we will see how we can find which functions consume how much memory. This article discusses the best practices involved using CLR profiler for studying memory allocation.

Please feel free to download my free 500 question and answer ebook which covers .NET , ASP.NET , SQL Server , WCF , WPF , WWF@ http://www.questpond.com .

Thanks a lot Mr. Peter Sollich

Let’s start this article by first thanking Peter Sollich who is the CLR Performance Architect to write such a detail help on CLR profiler. When you install CLR profiler do not forget to read the detail help document written by Peter Sollich.

Thanks a lot sir, if ever you visit my article let me know your inputs.

CLR Profiler to rescue

CLR profiler is a tool which helps to detect how memory allocation happens in .NET code. CLR profiler tool is provided by Microsoft, you can download the same from

http://www.microsoft.com/downloads/details.aspx?familyid=A362781C-3870-43BE-8926-862B40AA0CD0&displaylang=en .

Note :- There are two version of CLR profiler one for .NET 1.1 and the other 2.0 framework. For 2.0 CLR profiler you can visit http://www.microsoft.com/downloads/details.aspx?familyid=A362781C-3870-43BE-8926-862B40AA0CD0&displaylang=en and to download 1.1 you can use http://www.microsoft.com/downloads/details.aspx?familyid=86ce6052-d7f4-4aeb-9b7a-94635beebdda&displaylang=en#Overview

Once you download CLR profiler you can unzip and run ‘CLRProfiler.exe’ from the bin folder.

If you have downloaded 2.0 CLR profiler it provides executables for ‘X86’ and ‘X64’ environment. So please ensure to run the appropriate versions.

Features of CLR profiler

CLR profiler is the best tool when it comes to understanding how memory allocations are done in .NET application code. It does two prime importance functions:-

• Gives a complete report of how memory is allocated in a .NET application. So you can see full report how memory is allocated as per data types, functions, methods etc.
• It also provides how much time the method was called.

Do not user CLR on production and as a starting tool for performance evaluation

CLR is an intrusive tool. In other words it runs its own logic of dumping memory values for every function / class / modules inside the application. In other words it interferes with the application logic. Let’ say you have a normal application which calls function 1 and function 2. When you profile your application with CLR profiler it injects dumping of memory heap data after every function call as shown below.

In other words do not use CLR profiler to find execution time of your application. It actually slows down your application 10 to 100 times. You will end up with wrong results.

As said because it’s an intrusion tool you should never use the same in production environment.

First thing you should never first start analyzing your performance issues by CLR profiler tool. It’s more of a second step activity where you have zeroed on a function or a class which is having memory issues. So probably you can use performance counters to first find which methods and functions take long execution time and then use CLR profiler to see how the memory allocations are done.

How can we run CLR profiler?

One you have downloaded the CLR profiler from Microsoft site, unzip the files in a folder. Go to the unzipped folder in Binaries  choose your processor and run ‘CLRProfiler.exe’. You will be shown the CLR profiler as shown in the below figure.


The first step we need to decide what do we want to profile. There are two things one is the memory allocation and the other is number of calls to a method. So select what data you want to profile and then click start application.

Once you are done you can see the complete summary of profiling as shown below. It’s a very complicated report we will see a simplistic approach when we profile the sample application.

Issues faced by CLR profiler

Some issues we faced while running CLR profiler. If you are getting the below screen and it does not stop, there can be two reasons:-
• You have .NET 2.0 and you are running CLR profiler 1.1.
• You have not registered ProfilerOBJ.dll in GAC.

The sample application we will profile

The application which we will profile is pretty simple. It has a simple button which calls two functions ‘UseSimpleStrings’ and ‘UseStringBuilders’. Both these functions concatenate strings. One uses ‘+’ for concatenations while the other uses the ‘StringBuilder’ class. We will be 1000 times concatenating the strings.

Collapse
private void UsingSimpleStrings()
{
string strSimpleStrings="";
for (int i = 0; i < 1000; i++)
{
strSimpleStrings = strSimpleStrings + "Test";
}}

The function which uses ‘StringBuilder’ class to do concatenation.

Collapse
private void UsingStringBuilders()
{

StringBuilder strBuilder = new StringBuilder();
for (int i = 0; i < 1000; i++)
{
strBuilder.Append("Test");
}
}

Both these functions are called through a button click.

Collapse
private void btnDoProfiling_Click(object sender, EventArgs e)
{
UsingSimpleStrings();
UsingStringBuilders();

}

Using CLR profiler to profile our sample

Now that we know our application we will try to use profiler to see which function uses how much memory. So click on start application  browse to the application exe and click on check memory allocation button and close the application. You will be popped up with a complete summary dialog box.

If you click on histogram button you can see memory allocations as per data type. I understand it’s very confusing. So leave this currently.

If you are interested to see how much memory is allocated as per functions you can click on ‘Allocation Graph’. This gives as per every function how much memory is consumed. Even this report is very confusing because so many function, so many methods and we are not able to locate our two functions of string ‘UsingStringBuilders’ and ‘UsingSimpleStrings’.

To simplify the above graph right click and you will be popped with lot of filtering options. Let’s use the ‘Find Routine’ search to filter unnecessary data. We have entered to get the button click event. From this button click those two functions are called.

The search now zooms on the method as shown in the below figure. Now double click on the ‘btnDoProfiling_Click’ box as highlighted in the below figure.

After double click you will see the below details. It’s now better. But where did the second function go off. It’s only showing ‘UseSimpleStrings’ function. This is because the report is coarse. So click on everything and you should see all the functions.

You can now see the other function also. What’s the 26 bytes ?. It’s just an extra string manipulation needed to when the functions are called, so we can excuse it. Let’s concentrate on our two functions ‘UseSimpleStrings’ and ‘UseStringBuilders’ can now be seen. You can see string concatenation takes 3.8 MB while string builder object consumes only 16 KB. So string builder object is consuming less memory than simple string concatenation.

That was a tough way any easy way

The above shown way was really tough. Let’s say you have 1000 of functions and you want to analyze which function consumes what memory. It’s practically just not possible to go through every call graph, do a find and get your functions.

The best way is to export a detail report in to excel and then analyze the data. So click on view  call tree.

Once you click on call tree you will be shown something as shown below. Click on view All functions  you will be shown all functions  click on file and save it as CSV.

Once you have exported the complete data to CSV, you can easily locate your methods and functions and see how much data has been allocated.

Simplifying results using comments

In case you know which methods to profile and you can enable the profiler at that moment when the method is called. In other words we can enable the CLR profiler from the application.

In order to enable the profiler from the C# code we need to first reference ‘CLRProfilerControl.dll’. You can get this DLL from the same folder where we have the profiler exe.
You can then directly call the profiler control from your code as shown in the below code snippet. We have enabled the profiler before we call both the string manipulation functions. Once the function calls are done we have disabled the profiler.

Collapse
private void btnDoProfiling_Click(object sender, EventArgs e)
{
CLRProfilerControl.LogWriteLine("Entering loop");
CLRProfilerControl.AllocationLoggingActive = true;
CLRProfilerControl.CallLoggingActive = true;

UsingSimpleStrings();
UsingStringBuilders();

CLRProfilerControl.AllocationLoggingActive = false;
CLRProfilerControl.CallLoggingActive = false;
CLRProfilerControl.LogWriteLine("Exiting loop");
CLRProfilerControl.DumpHeap();
}

So now let’s run the CLR profiler and start our application. Please ensure that you disable the profile active check box because we are going to enable profiling from the code itself.

Now if you see the histogram you will see limited data. You can see it has only recorded memory allocation consumed from ‘System.String’ and ‘System.Text.StringBuilder’ data type.

If you see the allocation graph you can see it’s pretty neat now. The cluttered view has completely gone off and we have pretty simple and focused view. Please note to click ‘Everything’ to see the remaining functions.

As said before do not get carried away with execution time

On the summary page you can see the comments button. If you click on the comments button it shows start time and end time. Do not get carried away with the time recorded. As we have previously cleared that it’s an intrusive tool the results are not proper.

Collapse
Entering loop (1.987 secs)
Exiting loop (2.022 secs)

Conclusion

• CLR profiler can be used to find memory allocated to functions, classes and assemblies to evaluate performance.
• It should not be used on production.
• It should not be used as a starting point for performance evaluation. We can first run perf counter, get the method having high execution time and then use CLR profiler to see the actual cause.
• You can use histogram to see memory allocation and call graph to see method wise memory allocation.
• If you know which methods you want to profile you can enable profiler from the application itself.

Concluding everything in to one basket as a best practice when you want to see memory allocation nothing can beat CLR profiler.

Source code

You can find the sample source code for profiling from here

(From codeproject.com)

Sinh viên CNTT: Cần thêm gì để “đột nhập” vào thị trường tuyển dụng?

Đã qua thời nhân viên IT thoải mái nhảy việc khi “người ít việc nhiều”. Kinh tế toàn cầu suy thoái, và hàng nghìn lao động ngành IT bị sa thải trên toàn thế giới. Nhưng, vẫn không thiếu tin tức về việc thiếu hụt nhân lực chất lượng cao trong lĩnh vực này tại Việt Nam. Nhưng cơ hội chỉ dành cho những người thức thời.

Thực tế đang cần gì?

Trong một hội nghị về triển khai đào tạo nguồn nhân lực theo nhu cầu của các ngành Công nghệ thông tin, Tài chính – Ngân hàng, Du lịch được Bộ Giáo dục & Đào tạo tổ chức cách đây ít lâu, lãnh đão hai thành phố lớn nhất cả nước là Hà Nội và Tp. Hồ Chí Minh đều cho biết, hiện nay hai đơn vị này thiếu trầm trọng lao động chất lượng cao, đặc biệt là trong lĩnh vực CNTT.

Ông Nguyễn Thành Tài - Phó Chủ tịch Thường trực UBND thành phố Hồ Chí Minh cho biết, hằng năm, quy mô đào tạo (trình độ đại học) ở thành phố Hồ Chí Minh là: Ngành Công nghệ thông tin: 5.660 người; Điện tử: 3.400 người;

Trong khi đó, ngành công nghệ thông tin - điện tử cần hơn 90.000 lao động vào năm 2010 (trong đó hơn 30.000 người có trình độ đại học và cao đẳng).

“Như vậy, thành phố cần cung ứng 30.000 chuyên viên công nghệ thông tin chất lượng cao một năm, trong khi khả năng đào tạo của các trường trên địa bàn khoảng 11.000 chuyên viên có trình độ cao đẳng trở lên” - ông Tài báo cáo.

Bà Ngô Thị Thanh Hằng - Phó Chủ tịch UBND thành phố Hà Nội cho biết: là các ngành dịch vụ chất lượng cao và các ngành công nghiệp công nghệ cao (công nghệ thông tin, viễn thông, tự động hóa, công nghệ sinh học…).

Trong lĩnh vực công nghệ thông tin, nguồn nhân lực không chỉ chưa đáp ứng được yêu cầu về số lượng, báo cáo của lãnh đạo UBND thành phố Hà Nội còn khẳng định, nguồn nhân lực chất lượng cao cũng rất hạn chế.

Cũng tại hội nghị này, các đơn vị tham gia cho biết: Nhân lực chất lượng cao phải có đủ kiến thức và kỹ năng chuyên môn nghề nghiệp; làm chủ được các thiết bị, công nghệ hiện đại; sử dụng được một ngoại ngữ trong chuyên môn, giao tiếp; có kỹ năng xã hội: giao tiếp, ứng xử, hợp tác, năng lực hoạt động sáng tạo; tác phong lao động công nghiệp, có lương tâm nghề nghiệp và sức khỏe tốt.

Sinh viên CNTT cần chuẩn bị?

Từ thực tế như vậy, các bạn sinh viên có thể biết trước để chuẩn bị cho mình đầy đủ kiến thức và các kĩ năng mềm để khi ra trường có thể làm việc được ngay, thay vì phải có thời gian đào tạo lại ở doanh nghiệp hay nhận một mức lương không xứng đáng. Hãy trang bị ngay từ bây giờ các yếu tố giúp bạn trở nên ấn tượng với nhà tuyển dụng.

- Các chứng nhận chuyên môn trong lĩnh vực CNTT: hiện nay, các thương hiệu bá chủ trong lĩnh vực CNTT đều tổ chức được các chương trình đào tạo và cấp chứng chỉ chính hãng, vì thế, ngoài tấm bằng kĩ sư CNTT, sinh viên nên xác định và trang bị cho mình những chứng chỉ có trong hệ thống của các thương hiệu thống lĩnh thị trường CNTT. Ví dụ, các bạn có thể xác định ngay từ bây giờ việc mình muốn trở thành một kĩ sư lĩnh vực mạng hệ thống (Networking) thì các bạn sẽ cần đến hệ thống chứng chỉ của Microsoft như là MCSA, MCSE. Và việc tìm học để lấy chứng chỉ này sẽ giúp các bạn tiếp cận với chương trình đào tạo tiêu chuẩn quốc tế, thực hành trên thiết bị thực, giao lưu với các nhà tuyển dụng ngay trong quá trình theo học, thi chứng chỉ quốc tế chính hãng được công nhận trên toàn cầu….

- Chuẩn bị vốn tiếng Anh tốt nhất: Nếu bạn đã tìm học và đạt được các chứng nhận chuyên môn nói trên, thì khả năng tiếng Anh của bạn trong lĩnh vực CNTT cũng đã tốt hơn rất nhiều. Vì khi tham gia học tập chương trình CNTT của các hãng (ví dụ là Microsoft) các bạn đều được học giáo trình gốc được các hãng này biên soạn bằng tiếng Anh dùng thống nhất trên toàn cầu, thực hành trên hệ thống sử dụng tiếng Anh, tham gia kì thi lấy chứng chỉ quốc tế hoàn toàn bằng tiếng Anh. Vì thế, trong quá trình học tập các bạn sẽ đạt được 2 mục đích, lấy được chứng chỉ chuyên môn danh giá và nâng cao khả năng sử dụng tiếng Anh trong thực tế.

- Kĩ năng mềm: Nếu như các bạn tìm kiếm được những Đối tác được ủy quyền đào tạo chính thức của các hãng danh tiếng nói trên tại Việt Nam (với Microsoft các đối tác này được gọi là Microsoft Certified Partner for Learning Solutions – CPLS) thì việc hoàn thành các chứng chỉ của họ cũng đồng nghĩa với việc bạn đã được trang bị những kĩ năng mềm quan trọng trong quá trình làm việc: kĩ năng giao tiếp, kĩ năng làm việc nhóm, kĩ năng thuyết trình,… Vì trong quá trình học tập, các đơn vị được ủy quyền đào tạo các chứng chỉ chuyên môn cũng cần đảm bảo các bài học – bài thi được triển khai theo đúng cách để phát huy được các kĩ năng nói trên.

(Theo Dân trí)

30 Web Developer Cheat Sheets

The list of skills a given web developer must possess is growing everyday. With the massive growth of web technologies, comes the demand for developers with a wide skill set. A useful tool in any developers tool box can be the well known 'cheat sheet'. Today, we will have a look at 30 essential web developer cheat sheets, ranging from MySQL to Photoshop.

PHP + MySQL Cheat Sheets

The PHP scripting language has become one of the most popular server side languages around. Add to that, the power and integration of the open source MySQL database system, and you have a very powerful set of tools in your hand. That said, we will start off with some wonderful PHP and MySQL cheat sheets.

1. Added Bytes - PHP Cheat Sheet v2

The AddedBytes cheat sheet above covers multiple php topics such as functions list and regular expressions.

2. Blue Shoes - PHP Online Cheat Sheet

If you would rather not download a php cheat sheet, BlueShoes has provided an online php cheat sheet available for you to access at anytime.

3. WebCheatSheet - Regular Expressions Online Cheat Sheet

Regular expressions can get a little tricky no matter what language you are dealing with, WebCheatSheet has provided us with a quick online guide to php regular expressions.

4. AddedBytes - Regex Cheat Sheet (PDF)

Another excellent cheat sheet from AddedBytes, this regular expression cheat sheet is available as a pdf and packed full of helpful information.

5. MySQL Online Cheat Sheet

Above you will find a helpful and quick online guide to basic and slightly complex MySQL commands.

6. Gigantic MySQL Cheat Sheet

If you're looking for a full fledged MySQL cheat sheet, look no further. The cheat sheet above (again, by AddedBytes) contains MySQL native functions, php MySQL functions, MySQL data types, and MySQL sample queries.

7. WikiBook - MySQL Cheat Sheet

The WikiBook MySQL Cheat Sheet is an open and member contributed online MySQL guide. It has the advantage of constantly being updated as the database languages evolves.


Javascript and AJAX libraries

No front end developer would be complete without some basic Javascript skills. Wether you are working with raw Javascript or using one of the many popular AJAX libraries that are available, there are plenty of cheat sheets to go around.

8. Javascript Reference Card

This quick reference card summarizes the core features of JavaScript - naming conventions, variable types, control structures, intrinsic functions etc.

9. Javascript Cheat Sheet

The above cheat sheet covers all kinds of Javascript topics such as function reference, regular expressions, XMLhttpRequests, event handlers, and a whole lot more.

10. Javascript and Browser Objects Quick Reference

This is actually Appendix A from the book The JavaScript Bible. Wiley (the publishers) have allowed the author to release certain parts of the Appendix, one part which contains Javascript and browser objects quick reference.

11. Gigantic List of Javascript Cheat Sheets

Perhaps you haven't seen the exact Javascript cheat sheet you have been looking for yet. The website above holds a vast array of very specific Javascript cheat sheets, certainly worth a quick browse.

12. jQuery Visual Map

Provided by the jQuery website, the jQuery visual map is a single (large) png image that allows you to visualize the jQuery API. It is perfect for a quick reference whilst working on a project.

13. jQuery API Browser

The jQuery API browser is a way to access documentation on any function or feature of the jQuery language. Even better is the fact that you can download it as a stand alone Adobe Air application for you to use whenever you wish.

14. jQuery 1.3 Cheat Sheet

For those of you who prefer to download your cheat sheets in good ol' fashion pdf form, ACodingFool has come to our rescue. This cheat sheet covers the latest version of jQuery at the time of writing.

15. MooTools Cheat Sheet

Time to give some love back to the Moo. This cheat sheet covers mootools v1.2+ and is really helpful for anyone starting to learn MooTools, or an old pro who just needs a refresher.


HTML and CSS Cheat Sheets

16. HTML Cheat Sheet

Go squared has put together an excellent and thorough HTML cheat sheet free for anyone to download. Especially great for beginners and those times when you just can't remember a certain tag.

17. HTML Cheat Sheet - PDF/PNG

As if AddedBytes haven't made enough cheat sheets for us already, they have made another one for HTML. This time it is available in two versions, as a pdf or as a single png image.

18. HTML 5 Cheat Sheet - PDF

SmashingMagazine has released a wonderful and free HTML5 cheat sheet for you to start studying. Though we may not be at the point where we can use HTML5 everyday, it is always good to keep up with new technology.

19. CSS Cheat Sheet PDF/PNG

Available in PNG or PDF format, this is an extremely thorough CSS cheat sheet you can refer to time and time again.

20. CSS Online Cheat Sheet

Seen above is a quick and dirty online CSS cheat sheet made by Leslie Franke. Great for quick access in the middle of a project.

21. CSS 3 Cheat Sheet

Again, from SmashingMagazine comes another great freebie. This time it is a cheat sheet for CSS 3, which is gaining more and more browser support everyday.


Photoshop and Illustrator Cheat Sheets

22. Photoshop CS3 Keyboard Shortcuts Cheat Sheet

All keyboard shortcuts organized into four pages, by menu, as well as alphabetically by key.

23. Photoshop CS4 Cheat Sheet

This comes from the same makers as the CS3 cheat sheet, this time it has been modified for CS4. You can download it for free and browse it as a pdf.

24. Photoshop Brush Tool Cheat Sheet

The Photoshop brush tool is a very powerful one that has many unknown features. Learn to master that tool and you will probably be more efficient when designing. Keeping this cheat sheet handy will help you to learn all you need to know about the Photoshop brush tool.

25. Online Adobe CS4 Cheat Sheet

We're going to consider this an online cheat sheet, as it is just so darn helpful. You can choose from a wide list of Photoshop topics on the left to bring up more information about them. Think of it as an interactive cheat sheet.

26. Photoshop Tools Cheat Sheet

This is a great online cheat sheet that gives you access and information about all of the Photoshop tools and their shortcuts.

27. Illustrator Short Cuts Cheat Sheet

The beautiful WebDesigerWall has put together an online cheat sheet and post full of tips for using Adobe Illustrator shortcuts.

28. AI Shortcuts Cheat Sheet - PDF

This media pack comes with multiple pdfs packed with Adobe Illustrator shortcuts information and references. Also included in the pack are cheat sheets to other popular Adobe products.


Misc Cheat Sheets

29. The WordPress Help Sheet

For all of the WordPress lovers out there, WPCandy has put together an online WordPress 'help sheet' to get you any information you may have forgotten or not seen before.

30. SEO Cheat Sheet

Lastly, we have the all mighty SEO cheat sheet, kindly made for us by the guys over at the SEOMoz blog. Most websites could use some SEO once in a while, and this cheat sheet is a nice place to start.

(From www.webhostingsearch.com)

20 Must-Know Websites for Web Developers

temp-thumb

If you are in the Web Development area, you may be busy to catch up the current trend of technology. Modern Internet changes every second and new items are coming up every moment. If you were on holiday for few days, you may start to worry if you were getting behind the current technology news.

Or if you are a newbie, and doesn’t know where to start to develop your programming skills, then the Web Development Magazine online would be the best resources for you to improve your programming skills as well as catching up the current technology trend.

There are a lot of websites and forums providing the web resources and information online including FishintheRiver.com. To start with, I’m going to list 20 must-know websites for web development resources that are quite popular out there (so you may already know some of them). If you found any new, bookmark or subscribe the RSS, and keep yourself updated :-)

Here I found an interesting video (from Youtube) created by Microsoft. Will the future be like this?

Microsoft’s Future Vision Series: Microsoft’s 2019 Future Vision Montage: Envisioning the Future HD

Hope you enjoy this article and if you know any other good websites for Web development, please leave your comment ;-) Get Inspired By FishintheRiver.com!

Smashing Magazine

Smashing Magazine is a weblog dedicated to web-developers and designers.

A List Apart

A List Apart Magazine (ISSN: 1534-0295) explores the design, development, and meaning of web content, with a special focus on web standards and best practices.

Nettuts+

Nettuts+ is a site aimed at web developers and designers offering tutorials and articles on technologies, skills and techniques to improve how you design and build websites.

Web Resources Depot

A collection of free web resources.

Web Appers

Another collection of free web resources.

Webmonkey

Webmonkey is an online resource for web developers. Here, you’ll find tutorials, tips and advice for designing and building websites and programming web applications.

Digital Web Magazine

Digital Web Magazine is an online magazine intended for professional web designers, web developers and information architects. The magazine consists primarily of work contributed by web authors, as well as by others who occasionally delve into the web realm.

Web Jackalope

Creative Web Development Magazine

Technology Magazine

You can read technology news.

InternetNews Realtime News for IT Managers

Another Technology News here.

Treehouse

A Web Development Magazine

Web Developers Handbook

A handbook of CSS, Web Development, Color Tools, SEO, Usability

The Do´s & Don´ts of Modern Web Design

WebD&D offers free top-notch tips, tricks, best practices and resources for your reading pleasure.

Woork

Antonio Lupetti provides information about Web design, tutorials, resources and inspiration.

IBM – developerWork

IBM’s resource for developers and IT professionals.

Think Vitamin

We can get a lot of web information from dev to marketing.

Wake Up Later

Wake Up Later is a website that touches on the subjects of website building, freelancing, blogging, and online entrepreneurship. It covers a variety of topics from freelance tips and programming to SEO and internet marketing.

Ajaxian

It covers various topics like .NET, Andriod and Framework

TutorialBlog

Tutorialblog was started in 2005 to provide Photoshop Tutorials on various techniques and effects. Now it covers some tech areas like resources.


10 điều phải chấp nhận nếu làm ngành IT

“Dương thịnh âm suy”, thường xuyên bị stress, lương tăng chậm, dễ phải lấy người cùng nghề… là những thực tế bạn phải đối mặt nếu muốn theo đuổi nghề IT.

Dưới đây là 10 thống kê vui những “nguy cơ” tiềm ẩn trong ngành IT mà bạn có thể phải đối mặt nếu quyết tâm theo đuổi nghề này, thông qua con mắt của một blogger làm trong nghề.

10 điều phải chấp nhận nếu làm ngành IT

Ảnh minh họa

1. Ở những ngành khác thì nữ vừa nhiều vừa xinh đẹp, ngành IT thì ngược lại

Điều này ai đã và đang học CNTT ở các trường ĐH đều biết rồi. Không riêng gì trong ngành CNTT mà những ngành kỹ thuật, số lượng nữ giới cũng rất thấp. Tuy nhiên so với các ngành như cơ khí, điện tử thì tỉ lệ nữ giới học CNTT cũng còn khá cao. Nhưng khi học xong và đi làm, tỉ lệ nữ giới làm lập trình lại càng giảm, đa số các bạn ấy làm QC, DB, BA… Ở nhóm tôi khoảng 20 người chỉ có mỗi 2 dev, 2 QC là nữ, còn lại toàn “đực rựa”. Tuy nhiên điều an ủi là trong công ty vẫn có nhiều chị em xinh lắm, nhưng không làm ở bộ phận lập trình. Thiếu thốn này thường dẫn đến điều thứ hai.

2. Xác suất phải lập gia đình với người cùng ngành rất cao

Nghe có vẻ như hơi mâu thuẫn, đã ít nữ thì làm sao xác suất này cao được. Thế nhưng với những người làm IT thì kể từ lúc đi làm thường nhìn máy tính nhiều hơn giao tiếp với ngưòi thật nên sẽ ăn nói kém, giao tiếp kém, cơ hội gặp phụ nữ khác ngành cũng ít hơn người làm ở ngành khác nên trời kêu ai nấy dạ. Tuy nhiên chúng ta thường quen nửa cuộc đời của mình từ trong trường ĐH hoặc ở nơi làm việc nên điều này có thể cũng đúng với những người làm ở các ngành khác. Dù những người làm ở ngành IT chúng ta thường được cái thông minh, nhưng hai người thông minh thì sinh con ra chưa chắc thông minh nên đây cũng là một hiểm họa tiềm tàng. Hơn nữa, hai người cùng ngành IT giờ gặp nhau ngoài nói chuyện bug, code thì chán chết. Phải chi chàng kể chuyện bug, nàng hỏi bug là gì hở anh thì có phải thú vị hơn biết bao.

3. Bạn sẽ bị yếu đi

Điều này không có gì phải bàn cãi. Thứ nhất ngồi nhiều… thì bụng và mông sẽ to. Bụng càng to càng khó làm… nhiều thứ và tuổi thọ giảm. Ngồi nhiều còn có thể gây ra nhiều bệnh tế nhị khác. Ngoài hai bệnh đằng trước và đằng sau thì còn bệnh ở mắt do nhìn quá nhiều. Đa số người làm IT xung quanh ta đều bị cận thị. Gõ máy tính thường xuyên sẽ ảnh hưởng đến tim, rê chuột thường xuyên sẽ thoái hóa cổ tay. Ngoài ra cột sống sẽ bị chai hoặc mọc gai do tật ngồi nhiều hơn đứng của công việc này.

Ngoài ra, người làm IT thường có thói quen làm việc, sinh hoạt ban đêm. Cái giờ đáng lẽ những người ở những ngành khác làm cái việc mà ai cũng biết là việc gì thì người trong ngành IT lại gõ gõ, click click và thường gây ra bệnh đau bao tử. Tay chân ít hoạt động nên con người thường cảm thấy mỏi mệt, lười vận động, thậm chí cả lười tắm nên đừng thắc mắc tại sao một số SV ngành IT thường ở dơ. Nói chung làm cái nghề này nếu ko chịu sinh hoạt… điều độ thì đừng mong thọ.

4. Bạn sẽ thường xuyên bị làm phiền bởi người quen

Đây là một trong những điều tệ hại và khó chịu nhất bạn sẽ gặp phải. Những người quen của bạn: bạn bè, bà con, cô dì chú bác, bạn của ba của mẹ sẽ gọi điện nhờ bạn giúp khi họ không nghe nhạc được, máy khởi động chậm, không thấy webcam, không biết đưa hình lên blog. Kiểu hỗ trợ kỹ thuật miễn phí này nên cẩn thận vì nó sẽ thường xuyên lặp đi lặp lại. Một số trường hợp bạn sẽ được trả công nhưng theo tôi, bạn chẳng cần số tiền chả đáng đổ xăng đó làm gì so với thời gian phải chạy đi chạy lại. Đa số người nhờ bạn giúp sẽ mong muốn được hỗ trợ miễn phí và tôi chắc chúng ta sẽ không vui gì về điều đó. Vì vậy hãy tập nói không khi có thể.

5. Bạn sẽ phải thường xuyên về trễ mà không được trả tiền

Đặc thù của ngành IT là công việc thường không thể tính chính xác bằng giờ. Có nghĩa là không phải cứ một lượng thời gian nào đó thì sẽ làm xong một công việc. Thường chúng ta sẽ phải ở lại thêm 1 giờ, 2 giờ để làm nốt công việc của mình nếu bạn là người có trách nhiệm. Nhưng dù có trách nhiệm hay không thì khi công việc chưa xong mà đã gần đến deadline thì bạn vẫn phải ở lại để hoàn thành những gì còn dở dang, tất nhiên không có xu nào cả.

6. Bạn sẽ thường xuyên bị stress

Khi làm việc với những project lớn nhiều người, công việc sẽ theo flow rõ ràng, bạn làm, người khác test, manager gí, và khi đến những ngày cuối cùng là lúc bạn làm việc nhiều nhất. Phải suy nghĩ nhiều, cơ thể mệt mỏi, thiếu ngủ cộng với căng thẳng khi làm việc sẽ khiến nhiều người bị stress. Theo một số điều tra, thủ phạm gây stress nhiều nhất là email. Khi phải đọc khoảng 100 email một ngày thì người hiền lành cũng trở nên gắt gỏng. Bởi vậy những người làm IT thường hay khó chịu đột xuất.

7. Lương bạn sẽ tăng rất chậm

Làm IT lương khởi điểm sẽ khá cao so với một số ngành nhưng tốc độ tăng sẽ chậm và ít đột biến. Thường người làm IT sẽ giải quyết nhu cầu tăng lương bằng cách nhảy sang công ty khác. Cho nên những bạn sinh viên mới ra trường nên tìm một công ty có lương khởi điểm khá tốt, vì thông thường chu kỳ tăng lương sẽ là từng năm và khi lạm phát hai chữ số mà tăng lương dưới 15% cộng với trả lương bằng tiền Việt thì hơi bị đuối. Tốt nhất nên tìm hiểu những anh chị đi trước hoặc xác định mục tiêu của mình để tìm hướng đi khác vì làm lập trình chay khó làm giàu lắm.

8. Không phải lúc nào cũng được làm công việc ưa thích

Bạn từng nghĩ sẽ áp dụng những kỹ thuật tiên tiến nhất của các ngôn ngữ lập trình hiện đại, sẽ học hỏi những công nghệ mới nhất và làm việc với những chuyên gia đầy kinh nghiệm trong lĩnh vực CNTT nhưng thường không phải như vậy. Ở những công ty càng lớn càng có những project kỳ lạ kiểu như chuyển nguyên một chương trình từ VB6 sang C#, hoặc từ một ngôn ngữ rất cổ xưa sang C#.

Tuy đòi hỏi kiến thức lập trình trên hai ngôn ngữ, khả năng đọc hiểu code nhưng nói chung công việc như vậy khá nhàm chán và tôi nghĩ chẳng ai muốn theo đuổi lâu dài. Đối với những project lớn thì chi phí công nghệ mới là một trong những vấn đề quan tâm của khách hàng. Bạn muốn sử dụng SQL 2005 nhưng khách hàng sẽ nói “No” khi họ đã có licence cho SQL 2000 và không muốn bỏ tiền mua thứ mới. Bạn muốn sử dụng ASP.NET để làm website cho khách hàng nhưng họ cho rằng PHP sẽ rẻ hơn vì không tốn nhiều licence cho máy chủ WINDOWS. Bạn muốn dùng ORM tool để tiết kiệm thời gian lập trình nhưng khách hàng nhất quyết bạn phải dùng Store Procedure và viết code gọi bằng C# vì làm vậy nhanh hơn 30 milisecond khi gọi 10.000 query. Nói chung khách hàng là thượng đế và chúng ta phải nghe theo.

9. Khi nhảy việc cũng không đơn giản, có khi phải bắt đầu lại từ đầu

Lương bạn hiện không cao trong khi lương tụi bạn đã gấp hai mình. Đề nghị sếp tăng lương thì sao, liệu sếp có chịu tăng cho mình gấp rưỡi không chứ đừng nói gấp hai. Tại sao không nhảy việc khi vừa có thể có lương cao hơn lại có thể học hỏi nhiều cái mới và làm quen nhiều con người mới. Nhưng khi nhảy việc là lúc bạn phải chấp nhận làm lại từ đầu. Có thể bạn có nhiều kinh nghiệm từ công ty cũ nhưng sang môi trường mới sẽ không có đất để dụng võ. Và khi chưa biết gì hết thì bạn sẽ là một newbie (dân tay mơ) và chấp nhận làm lại từ con số không. Vì vậy, theo tôi, nếu tìm được công việc mới lương gấp rưỡi trở lên thì hãy nhảy, còn không ở lại cho lành và chờ thời cơ.

10. Rất khó để tự kinh doanh riêng về IT

Tỉ lệ thất bại cao của các công ty IT mới thành lập đã nói lên điều này. Nếu bạn làm IT khi muốn mở một công ty làm phần mềm thì rất khó. Một trong những khó khăn lớn nhất là sự cạnh tranh. Bạn sẽ khó kiếm được project từ những khách hàng lớn khi công ty của bạn chưa hề có tên tuổi hoặc không có công ty mẹ đỡ đầu. Nếu chấp nhận làm dự án nhỏ thì có vô khối công ty đã làm như vậy. Những công ty may mắn sống sót nhờ vào dạng những project nhỏ này họ có thể thực hiện website trong một tuần nhờ tái sử dụng những cái đã có từ project cũ và chúng ta sẽ khó cạnh tranh mỗi khi kinh nghiệm tổ chức và kinh doanh là con số 0. Giỏi lập trình không có nghĩa là giỏi quản lý, và càng không có nghĩa là giỏi kinh doanh nên làm công ty về IT không hề đơn giản. Và khi không có project nào trong khi phải nuôi đội quân cỡ năm người, cộng với trả tiền điện, tiền mặt bằng trong ba tháng là bạn phải nghĩ đến chuyện giải tán.

Đó là 10 trong khá nhiều những khó khăn, thiệt thòi, gian khổ của ngành IT. Làm IT không đơn giản và không sướng chút nào, càng không dễ làm giàu. Thế nên những ai nghĩ làm IT sướng và lương cao thì nên xem lại và cân nhắc nếu như đang chọn nghề cho mình. Đây là những ý kiến chủ quan của tôi, có thể có nhiều ý kiến trái ngược và bổ sung khác nên rất mong được sự chia sẻ từ các bạn. Mọi comment khen ngợi, chửi bới đều hoan nghênh.

Theo Tuổi trẻ/Blogger Thoại Nguyễn