Làm thế nào trở thành Hacker ?

How To Become A Hacker

Eric Steven Raymond

Thyrsus Enterprises


Copyright © 2001 Eric S. Raymond

Revision History
Revision 1.5203 Jasnuary 2020esr
Go makes a place as a plausible learning language, displacing Java.
Revision 1.5106 October 2017esr
Link to “Things Every Hacker Once Knew.” Mention USB-stick distros. Many updated translation links.
Revision 1.5019 July 2015esr
Added link to “Let’s Go Larval”.
Revision 1.4921 November 2014esr
Added link to “How To Learn Hacking”.
Revision 1.4819 June 2014esr
freshmeat/freecode is dead, alas.
Revision 1.4720 May 2014esr
Fix up various stale links. Join a hackerspace!
Revision 1.4625 Sep 2013esr
Add micropatronage explanation and gittip link. Why you should not ask me for advice on how to get started.
Revision 1.4512 May 2013esr
Open Solaris isn’t, and Unity screwed the pooch.
Revision 1.4420 May 2012esr
Updated the critique of Java.
Revision 1.4307 Feb 2011esr
Python passed Perl in popularity in 2010.
Revision 1.4222 Oct 2010esr
Added “Historical note”.
Revision 1.403 Nov 2008esr
Link fixes.
Revision 1.3914 Aug 2008esr
Link fixes.
Revision 1.388 Jan 2008esr
Deprecate Java as a language to learn early.
Revision 1.374 Oct 2007esr
Recommend Ubuntu as a Unix distro for newbies.

Table of Contents

Why This Document?

What Is a Hacker?

The Hacker Attitude

1. The world is full of fascinating problems waiting to be solved.

2. No problem should ever have to be solved twice.

3. Boredom and drudgery are evil.

4. Freedom is good.

5. Attitude is no substitute for competence.

Basic Hacking Skills

1. Learn how to program.

2. Get one of the open-source Unixes and learn to use and run it.

3. Learn how to use the World Wide Web and write HTML.

4. If you don’t have functional English, learn it.

Status in the Hacker Culture

1. Write open-source software

2. Help test and debug open-source software

3. Publish useful information

4. Help keep the infrastructure working

5. Serve the hacker culture itself

The Hacker/Nerd Connection

Points For Style

Historical Note: Hacking, Open Source, and Free SoftwareOther Resources

Frequently Asked Questions

Why This Document?

As editor of the Jargon File and author of a few other well-known documents of similar nature, I often get email requests from enthusiastic network newbies asking (in effect) “how can I learn to be a wizardly hacker?”. Back in 1996 I noticed that there didn’t seem to be any other FAQs or web documents that addressed this vital question, so I started this one. A lot of hackers now consider it definitive, and I suppose that means it is. Still, I don’t claim to be the exclusive authority on this topic; if you don’t like what you read here, write your own.

If you are reading a snapshot of this document offline, the current version lives at http://catb.org/~esr/faqs/hacker-howto.html.

Note: there is a list of Frequently Asked Questions at the end of this document. Please read these—twice—before mailing me any questions about this document.

Numerous translations of this document are available: Arabic Belorussian Bulgarian Chinese, Czech. Danish Dutch Estonian French German, Greek Hungarian, Italian Hebrew, Japanese Lithuanian Norwegian, Persian Polish Portuguese (Brazilian), Romanian Spanish, Turkish, and Swedish. Note that since this document changes occasionally, they may be out of date to varying degrees.

The five-dots-in-nine-squares diagram that decorates this document is called a glider. It is a simple pattern with some surprising properties in a mathematical simulation called Life that has fascinated hackers for many years. I think it makes a good visual emblem for what hackers are like — abstract, at first a bit mysterious-seeming, but a gateway to a whole world with an intricate logic of its own. Read more about the glider emblem here.

If you find this document valuable, please support me on Patreon or SubscribeStar. And consider also supporting other hackers who have produced code that you use and value via Loadsharers. Lots of small but continuing donations add up quickly, and can free the people who have given you gifts of their labor to create more value.

What Is a Hacker?

The Jargon File contains a bunch of definitions of the term ‘hacker’, most having to do with technical adeptness and a delight in solving problems and overcoming limits. If you want to know how to become a hacker, though, only two are really relevant.

There is a community, a shared culture, of expert programmers and networking wizards that traces its history back through decades to the first time-sharing minicomputers and the earliest ARPAnet experiments. The members of this culture originated the term ‘hacker’. Hackers built the Internet. Hackers made the Unix operating system what it is today. Hackers make the World Wide Web work. If you are part of this culture, if you have contributed to it and other people in it know who you are and call you a hacker, you’re a hacker.

The hacker mind-set is not confined to this software-hacker culture. There are people who apply the hacker attitude to other things, like electronics or music — actually, you can find it at the highest levels of any science or art. Software hackers recognize these kindred spirits elsewhere and may call them ‘hackers’ too — and some claim that the hacker nature is really independent of the particular medium the hacker works in. But in the rest of this document we will focus on the skills and attitudes of software hackers, and the traditions of the shared culture that originated the term ‘hacker’.

There is another group of people who loudly call themselves hackers, but aren’t. These are people (mainly adolescent males) who get a kick out of breaking into computers and phreaking the phone system. Real hackers call these people ‘crackers’ and want nothing to do with them. Real hackers mostly think crackers are lazy, irresponsible, and not very bright, and object that being able to break security doesn’t make you a hacker any more than being able to hotwire cars makes you an automotive engineer. Unfortunately, many journalists and writers have been fooled into using the word ‘hacker’ to describe crackers; this irritates real hackers no end.

The basic difference is this: hackers build things, crackers break them.

If you want to be a hacker, keep reading. If you want to be a cracker, go read the alt.2600 newsgroup and get ready to do five to ten in the slammer after finding out you aren’t as smart as you think you are. And that’s all I’m going to say about crackers.

The Hacker Attitude

1. The world is full of fascinating problems waiting to be solved.

2. No problem should ever have to be solved twice.

3. Boredom and drudgery are evil.

4. Freedom is good.

5. Attitude is no substitute for competence.

Hackers solve problems and build things, and they believe in freedom and voluntary mutual help. To be accepted as a hacker, you have to behave as though you have this kind of attitude yourself. And to behave as though you have the attitude, you have to really believe the attitude.

But if you think of cultivating hacker attitudes as just a way to gain acceptance in the culture, you’ll miss the point. Becoming the kind of person who believes these things is important for you — for helping you learn and keeping you motivated. As with all creative arts, the most effective way to become a master is to imitate the mind-set of masters — not just intellectually but emotionally as well.

Or, as the following modern Zen poem has it:

    To follow the path:
    look to the master,
    follow the master,
    walk with the master,
    see through the master,
    become the master.

So, if you want to be a hacker, repeat the following things until you believe them:

1. The world is full of fascinating problems waiting to be solved.

Being a hacker is lots of fun, but it’s a kind of fun that takes lots of effort. The effort takes motivation. Successful athletes get their motivation from a kind of physical delight in making their bodies perform, in pushing themselves past their own physical limits. Similarly, to be a hacker you have to get a basic thrill from solving problems, sharpening your skills, and exercising your intelligence.

If you aren’t the kind of person that feels this way naturally, you’ll need to become one in order to make it as a hacker. Otherwise you’ll find your hacking energy is sapped by distractions like sex, money, and social approval.

(You also have to develop a kind of faith in your own learning capacity — a belief that even though you may not know all of what you need to solve a problem, if you tackle just a piece of it and learn from that, you’ll learn enough to solve the next piece — and so on, until you’re done.)

2. No problem should ever have to be solved twice.

Creative brains are a valuable, limited resource. They shouldn’t be wasted on re-inventing the wheel when there are so many fascinating new problems waiting out there.

To behave like a hacker, you have to believe that the thinking time of other hackers is precious — so much so that it’s almost a moral duty for you to share information, solve problems and then give the solutions away just so other hackers can solve new problems instead of having to perpetually re-address old ones.

Note, however, that “No problem should ever have to be solved twice.” does not imply that you have to consider all existing solutions sacred, or that there is only one right solution to any given problem. Often, we learn a lot about the problem that we didn’t know before by studying the first cut at a solution. It’s OK, and often necessary, to decide that we can do better. What’s not OK is artificial technical, legal, or institutional barriers (like closed-source code) that prevent a good solution from being re-used and force people to re-invent wheels.

(You don’t have to believe that you’re obligated to give all your creative product away, though the hackers that do are the ones that get most respect from other hackers. It’s consistent with hacker values to sell enough of it to keep you in food and rent and computers. It’s fine to use your hacking skills to support a family or even get rich, as long as you don’t forget your loyalty to your art and your fellow hackers while doing it.)

3. Boredom and drudgery are evil.

Hackers (and creative people in general) should never be bored or have to drudge at stupid repetitive work, because when this happens it means they aren’t doing what only they can do — solve new problems. This wastefulness hurts everybody. Therefore boredom and drudgery are not just unpleasant but actually evil.

To behave like a hacker, you have to believe this enough to want to automate away the boring bits as much as possible, not just for yourself but for everybody else (especially other hackers).

(There is one apparent exception to this. Hackers will sometimes do things that may seem repetitive or boring to an observer as a mind-clearing exercise, or in order to acquire a skill or have some particular kind of experience you can’t have otherwise. But this is by choice — nobody who can think should ever be forced into a situation that bores them.)

4. Freedom is good.

Hackers are naturally anti-authoritarian. Anyone who can give you orders can stop you from solving whatever problem you’re being fascinated by — and, given the way authoritarian minds work, will generally find some appallingly stupid reason to do so. So the authoritarian attitude has to be fought wherever you find it, lest it smother you and other hackers.

(This isn’t the same as fighting all authority. Children need to be guided and criminals restrained. A hacker may agree to accept some kinds of authority in order to get something he wants more than the time he spends following orders. But that’s a limited, conscious bargain; the kind of personal surrender authoritarians want is not on offer.)

Authoritarians thrive on censorship and secrecy. And they distrust voluntary cooperation and information-sharing — they only like ‘cooperation’ that they control. So to behave like a hacker, you have to develop an instinctive hostility to censorship, secrecy, and the use of force or deception to compel responsible adults. And you have to be willing to act on that belief.

5. Attitude is no substitute for competence.

To be a hacker, you have to develop some of these attitudes. But copping an attitude alone won’t make you a hacker, any more than it will make you a champion athlete or a rock star. Becoming a hacker will take intelligence, practice, dedication, and hard work.

Therefore, you have to learn to distrust attitude and respect competence of every kind. Hackers won’t let posers waste their time, but they worship competence — especially competence at hacking, but competence at anything is valued. Competence at demanding skills that few can master is especially good, and competence at demanding skills that involve mental acuteness, craft, and concentration is best.

If you revere competence, you’ll enjoy developing it in yourself — the hard work and dedication will become a kind of intense play rather than drudgery. That attitude is vital to becoming a hacker.

Basic Hacking Skills

1. Learn how to program.

2. Get one of the open-source Unixes and learn to use and run it.

3. Learn how to use the World Wide Web and write HTML.

4. If you don’t have functional English, learn it.

The hacker attitude is vital, but skills are even more vital. Attitude is no substitute for competence, and there’s a certain basic toolkit of skills which you have to have before any hacker will dream of calling you one.

This toolkit changes slowly over time as technology creates new skills and makes old ones obsolete. For example, it used to include programming in machine language, and didn’t until recently involve HTML. But right now it pretty clearly includes the following:

1. Learn how to program.

This, of course, is the fundamental hacking skill. If you don’t know any computer languages, I recommend starting with Python. It is cleanly designed, well documented, and relatively kind to beginners. Despite being a good first language, it is not just a toy; it is very powerful and flexible and well suited for large projects. I have written a more detailed evaluation of Python. Good tutorials are available at the Python web site; there’s an excellent third-party one at Computer Science Circles.

I used to recommend Java as a good language to learn early, but this critique has changed my mind (search for “The Pitfalls of Java as a First Programming Language” within it). A hacker cannot, as they devastatingly put it “approach problem-solving like a plumber in a hardware store”; you have to know what the components actually do. Now I think it is probably best to learn C and Lisp first, then Java.

There is perhaps a more general point here. If a language does too much for you, it may be simultaneously a good tool for production and a bad one for learning. It’s not only languages that have this problem; web application frameworks like RubyOnRails, CakePHP, Django may make it too easy to reach a superficial sort of understanding that will leave you without resources when you have to tackle a hard problem, or even just debug the solution to an easy one.

A better alternative to Java is to learn Go. This relatively new language is pretty easy to move to from Python, and learning it give you a serious leg up on the possible next step, which is learning C. Additionally, one of the unknowns about the next few years is to what extent Go might actually displace C as a systems-programming language. There is a possible future in which that happens over much of C’s traditional range.

If you get into serious programming, you will eventually have to learn C, the core language of Unix. C++ is very closely related to C; if you know one, learning the other will not be difficult. Neither language is a good one to try learning as your first, however. And, actually, the more you can avoid programming in C the more productive you will be.

C is very efficient, and very sparing of your machine’s resources. Unfortunately, C gets that efficiency by requiring you to do a lot of low-level management of resources (like memory) by hand. All that low-level code is complex and bug-prone, and will soak up huge amounts of your time on debugging. With today’s machines as powerful as they are, this is usually a bad tradeoff — it’s smarter to use a language that uses the machine’s time less efficiently, but your time much more efficiently. Thus, Python.

Other languages of particular importance to hackers include Perl and LISP. Perl is worth learning for practical reasons; it’s very widely used for active web pages and system administration, so that even if you never write Perl you should learn to read it. Many people use Perl in the way I suggest you should use Python, to avoid C programming on jobs that don’t require C’s machine efficiency. You will need to be able to understand their code.

LISP is worth learning for a different reason — the profound enlightenment experience you will have when you finally get it. That experience will make you a better programmer for the rest of your days, even if you never actually use LISP itself a lot. (You can get some beginning experience with LISP fairly easily by writing and modifying editing modes for the Emacs text editor, or Script-Fu plugins for the GIMP.)

It’s best, actually, to learn all five of Python, C/C++, Perl, and LISP. Besides being the most important hacking languages, they represent very different approaches to programming, and each will educate you in valuable ways. Go is not quite to the point where it can be included among the most important hacking languages, but it seems headed for that status.

But be aware that you won’t reach the skill level of a hacker or even merely a programmer simply by accumulating languages — you need to learn how to think about programming problems in a general way, independent of any one language. To be a real hacker, you need to get to the point where you can learn a new language in days by relating what’s in the manual to what you already know. This means you should learn several very different languages.

I can’t give complete instructions on how to learn to program here — it’s a complex skill. But I can tell you that books and courses won’t do it — many, maybe most of the best hackers are self-taught. You can learn language features — bits of knowledge — from books, but the mind-set that makes that knowledge into living skill can be learned only by practice and apprenticeship. What will do it is (a) reading code and (b) writing code.

Peter Norvig, who is one of Google’s top hackers and the co-author of the most widely used textbook on AI, has written an excellent essay called Teach Yourself Programming in Ten Years. His “recipe for programming success” is worth careful attention.

Learning to program is like learning to write good natural language. The best way to do it is to read some stuff written by masters of the form, write some things yourself, read a lot more, write a little more, read a lot more, write some more … and repeat until your writing begins to develop the kind of strength and economy you see in your models.

I have had more to say about this learning process in How To Learn Hacking. It’s a simple set of instructions, but not an easy one.

Finding good code to read used to be hard, because there were few large programs available in source for fledgeling hackers to read and tinker with. This has changed dramatically; open-source software, programming tools, and operating systems (all built by hackers) are now widely available. Which brings me neatly to our next topic…

2. Get one of the open-source Unixes and learn to use and run it.

I’ll assume you have a personal computer or can get access to one. (Take a moment to appreciate how much that means. The hacker culture originally evolved back when computers were so expensive that individuals could not own them.) The single most important step any newbie can take toward acquiring hacker skills is to get a copy of Linux or one of the BSD-Unixes, install it on a personal machine, and run it.

Yes, there are other operating systems in the world besides Unix. But they’re distributed in binary — you can’t read the code, and you can’t modify it. Trying to learn to hack on a Microsoft Windows machine or under any other closed-source system is like trying to learn to dance while wearing a body cast.

Under Mac OS X it’s possible, but only part of the system is open source — you’re likely to hit a lot of walls, and you have to be careful not to develop the bad habit of depending on Apple’s proprietary code. If you concentrate on the Unix under the hood you can learn some useful things.

Unix is the operating system of the Internet. While you can learn to use the Internet without knowing Unix, you can’t be an Internet hacker without understanding Unix. For this reason, the hacker culture today is pretty strongly Unix-centered. (This wasn’t always true, and some old-time hackers still aren’t happy about it, but the symbiosis between Unix and the Internet has become strong enough that even Microsoft’s muscle doesn’t seem able to seriously dent it.)

So, bring up a Unix — I like Linux myself but there are other ways (and yes, you can run both Linux and Microsoft Windows on the same machine). Learn it. Run it. Tinker with it. Talk to the Internet with it. Read the code. Modify the code. You’ll get better programming tools (including C, LISP, Python, and Perl) than any Microsoft operating system can dream of hosting, you’ll have fun, and you’ll soak up more knowledge than you realize you’re learning until you look back on it as a master hacker.

For more about learning Unix, see The Loginataka. You might also want to have a look at The Art Of Unix Programming.

The blog Let’s Go Larval! is a window on the learning process of a new Linux user that I think is unusually lucid and helpful. The post How I Learned Linux makes a good starting point.

To get your hands on a Linux, see the Linux Online! site; you can download from there or (better idea) find a local Linux user group to help you with installation.

During the first ten years of this HOWTO’s life, I reported that from a new user’s point of view, all Linux distributions are almost equivalent. But in 2006-2007, an actual best choice emerged: Ubuntu. While other distros have their own areas of strength, Ubuntu is far and away the most accessible to Linux newbies. Beware, though, of the hideous and nigh-unusable “Unity” desktop interface that Ubuntu introduced as a default a few years later; the Xubuntu or Kubuntu variants are better.

You can find BSD Unix help and resources at www.bsd.org.

A good way to dip your toes in the water is to boot up what Linux fans call a live CD, a distribution that runs entirely off a CD or USB stick without having to modify your hard disk. This may be slow, because CDs are slow, but it’s a way to get a look at the possibilities without having to do anything drastic.

I have written a primer on the basics of Unix and the Internet.

I used to recommend against installing either Linux or BSD as a solo project if you’re a newbie. Nowadays the installers have gotten good enough that doing it entirely on your own is possible, even for a newbie. Nevertheless, I still recommend making contact with your local Linux user’s group and asking for help. It can’t hurt, and may smooth the process.

3. Learn how to use the World Wide Web and write HTML.

Most of the things the hacker culture has built do their work out of sight, helping run factories and offices and universities without any obvious impact on how non-hackers live. The Web is the one big exception, the huge shiny hacker toy that even politicians admit has changed the world. For this reason alone (and a lot of other good ones as well) you need to learn how to work the Web.

This doesn’t just mean learning how to drive a browser (anyone can do that), but learning how to write HTML, the Web’s markup language. If you don’t know how to program, writing HTML will teach you some mental habits that will help you learn. So build a home page.

But just having a home page isn’t anywhere near good enough to make you a hacker. The Web is full of home pages. Most of them are pointless, zero-content sludge — very snazzy-looking sludge, mind you, but sludge all the same (for more on this see The HTML Hell Page).

To be worthwhile, your page must have content — it must be interesting and/or useful to other hackers. And that brings us to the next topic…

4. If you don’t have functional English, learn it.

As an American and native English-speaker myself, I have previously been reluctant to suggest this, lest it be taken as a sort of cultural imperialism. But several native speakers of other languages have urged me to point out that English is the working language of the hacker culture and the Internet, and that you will need to know it to function in the hacker community.

Back around 1991 I learned that many hackers who have English as a second language use it in technical discussions even when they share a birth tongue; it was reported to me at the time that English has a richer technical vocabulary than any other language and is therefore simply a better tool for the job. For similar reasons, translations of technical books written in English are often unsatisfactory (when they get done at all).

Linus Torvalds, a Finn, comments his code in English (it apparently never occurred to him to do otherwise). His fluency in English has been an important factor in his ability to recruit a worldwide community of developers for Linux. It’s an example worth following.

Being a native English-speaker does not guarantee that you have language skills good enough to function as a hacker. If your writing is semi-literate, ungrammatical, and riddled with misspellings, many hackers (including myself) will tend to ignore you. While sloppy writing does not invariably mean sloppy thinking, we’ve generally found the correlation to be strong — and we have no use for sloppy thinkers. If you can’t yet write competently, learn to.

Status in the Hacker Culture

1. Write open-source software

2. Help test and debug open-source software

3. Publish useful information

4. Help keep the infrastructure working

5. Serve the hacker culture itself

Like most cultures without a money economy, hackerdom runs on reputation. You’re trying to solve interesting problems, but how interesting they are, and whether your solutions are really good, is something that only your technical peers or superiors are normally equipped to judge.

Accordingly, when you play the hacker game, you learn to keep score primarily by what other hackers think of your skill (this is why you aren’t really a hacker until other hackers consistently call you one). This fact is obscured by the image of hacking as solitary work; also by a hacker-cultural taboo (gradually decaying since the late 1990s but still potent) against admitting that ego or external validation are involved in one’s motivation at all.

Specifically, hackerdom is what anthropologists call a gift culture. You gain status and reputation in it not by dominating other people, nor by being beautiful, nor by having things other people want, but rather by giving things away. Specifically, by giving away your time, your creativity, and the results of your skill.

There are basically five kinds of things you can do to be respected by hackers:

1. Write open-source software

The first (the most central and most traditional) is to write programs that other hackers think are fun or useful, and give the program sources away to the whole hacker culture to use.

(We used to call these works “free software”, but this confused too many people who weren’t sure exactly what “free” was supposed to mean. Most of us now prefer the term “open-source” software).

Hackerdom’s most revered demigods are people who have written large, capable programs that met a widespread need and given them away, so that now everyone uses them.

But there’s a bit of a fine historical point here. While hackers have always looked up to the open-source developers among them as our community’s hardest core, before the mid-1990s most hackers most of the time worked on closed source. This was still true when I wrote the first version of this HOWTO in 1996; it took the mainstreaming of open-source software after 1997 to change things. Today, “the hacker community” and “open-source developers” are two descriptions for what is essentially the same culture and population — but it is worth remembering that this was not always so. (For more on this, see the section called “Historical Note: Hacking, Open Source, and Free Software”.)

2. Help test and debug open-source software

They also serve who stand and debug open-source software. In this imperfect world, we will inevitably spend most of our software development time in the debugging phase. That’s why any open-source author who’s thinking will tell you that good beta-testers (who know how to describe symptoms clearly, localize problems well, can tolerate bugs in a quickie release, and are willing to apply a few simple diagnostic routines) are worth their weight in rubies. Even one of these can make the difference between a debugging phase that’s a protracted, exhausting nightmare and one that’s merely a salutary nuisance.

If you’re a newbie, try to find a program under development that you’re interested in and be a good beta-tester. There’s a natural progression from helping test programs to helping debug them to helping modify them. You’ll learn a lot this way, and generate good karma with people who will help you later on.

3. Publish useful information

Another good thing is to collect and filter useful and interesting information into web pages or documents like Frequently Asked Questions (FAQ) lists, and make those generally available.

Maintainers of major technical FAQs get almost as much respect as open-source authors.

4. Help keep the infrastructure working

The hacker culture (and the engineering development of the Internet, for that matter) is run by volunteers. There’s a lot of necessary but unglamorous work that needs done to keep it going — administering mailing lists, moderating newsgroups, maintaining large software archive sites, developing RFCs and other technical standards.

People who do this sort of thing well get a lot of respect, because everybody knows these jobs are huge time sinks and not as much fun as playing with code. Doing them shows dedication.

5. Serve the hacker culture itself

Finally, you can serve and propagate the culture itself (by, for example, writing an accurate primer on how to become a hacker :-)). This is not something you’ll be positioned to do until you’ve been around for while and become well-known for one of the first four things.

The hacker culture doesn’t have leaders, exactly, but it does have culture heroes and tribal elders and historians and spokespeople. When you’ve been in the trenches long enough, you may grow into one of these. Beware: hackers distrust blatant ego in their tribal elders, so visibly reaching for this kind of fame is dangerous. Rather than striving for it, you have to sort of position yourself so it drops in your lap, and then be modest and gracious about your status.

The Hacker/Nerd Connection

Contrary to popular myth, you don’t have to be a nerd to be a hacker. It does help, however, and many hackers are in fact nerds. Being something of a social outcast helps you stay concentrated on the really important things, like thinking and hacking.

For this reason, many hackers have adopted the label ‘geek’ as a badge of pride — it’s a way of declaring their independence from normal social expectations (as well as a fondness for other things like science fiction and strategy games that often go with being a hacker). The term ‘nerd’ used to be used this way back in the 1990s, back when ‘nerd’ was a mild pejorative and ‘geek’ a rather harsher one; sometime after 2000 they switched places, at least in U.S. popular culture, and there is now even a significant geek-pride culture among people who aren’t techies.

If you can manage to concentrate enough on hacking to be good at it and still have a life, that’s fine. This is a lot easier today than it was when I was a newbie in the 1970s; mainstream culture is much friendlier to techno-nerds now. There are even growing numbers of people who realize that hackers are often high-quality lover and spouse material.

If you’re attracted to hacking because you don’t have a life, that’s OK too — at least you won’t have trouble concentrating. Maybe you’ll get a life later on.

Points For Style

Again, to be a hacker, you have to enter the hacker mindset. There are some things you can do when you’re not at a computer that seem to help. They’re not substitutes for hacking (nothing is) but many hackers do them, and feel that they connect in some basic way with the essence of hacking.

  • Learn to write your native language well. Though it’s a common stereotype that programmers can’t write, a surprising number of hackers (including all the most accomplished ones I know of) are very able writers.
  • Read science fiction. Go to science fiction conventions (a good way to meet hackers and proto-hackers).
  • Join a hackerspace and make things (another good way to meet hackers and proto-hackers).
  • Train in a martial-arts form. The kind of mental discipline required for martial arts seems to be similar in important ways to what hackers do. The most popular forms among hackers are definitely Asian empty-hand arts such as Tae Kwon Do, various forms of Karate, Kung Fu, Aikido, or Ju Jitsu. Western fencing and Asian sword arts also have visible followings. In places where it’s legal, pistol shooting has been rising in popularity since the late 1990s. The most hackerly martial arts are those which emphasize mental discipline, relaxed awareness, and precise control, rather than raw strength, athleticism, or physical toughness.
  • Study an actual meditation discipline. The perennial favorite among hackers is Zen (importantly, it is possible to benefit from Zen without acquiring a religion or discarding one you already have). Other styles may work as well, but be careful to choose one that doesn’t require you to believe crazy things.
  • Develop an analytical ear for music. Learn to appreciate peculiar kinds of music. Learn to play some musical instrument well, or how to sing.
  • Develop your appreciation of puns and wordplay.

The more of these things you already do, the more likely it is that you are natural hacker material. Why these things in particular is not completely clear, but they’re connected with a mix of left- and right-brain skills that seems to be important; hackers need to be able to both reason logically and step outside the apparent logic of a problem at a moment’s notice.

Work as intensely as you play and play as intensely as you work. For true hackers, the boundaries between “play”, “work”, “science” and “art” all tend to disappear, or to merge into a high-level creative playfulness. Also, don’t be content with a narrow range of skills. Though most hackers self-describe as programmers, they are very likely to be more than competent in several related skills — system administration, web design, and PC hardware troubleshooting are common ones. A hacker who’s a system administrator, on the other hand, is likely to be quite skilled at script programming and web design. Hackers don’t do things by halves; if they invest in a skill at all, they tend to get very good at it.

Finally, a few things not to do.

  • Don’t use a silly, grandiose user ID or screen name.
  • Don’t get in flame wars on Usenet (or anywhere else).
  • Don’t call yourself a ‘cyberpunk’, and don’t waste your time on anybody who does.
  • Don’t post or email writing that’s full of spelling errors and bad grammar.

The only reputation you’ll make doing any of these things is as a twit. Hackers have long memories — it could take you years to live your early blunders down enough to be accepted.

The problem with screen names or handles deserves some amplification. Concealing your identity behind a handle is a juvenile and silly behavior characteristic of crackers, warez d00dz, and other lower life forms. Hackers don’t do this; they’re proud of what they do and want it associated with their real names. So if you have a handle, drop it. In the hacker culture it will only mark you as a loser.

Historical Note: Hacking, Open Source, and Free Software

When I originally wrote this how-to in late 1996, some of the conditions around it were very different from the way they look today. A few words about these changes may help clarify matters for people who are confused about the relationship of open source, free software, and Linux to the hacker community. If you are not curious about this, you can skip straight to the FAQ and bibliography from here.

The hacker ethos and community as I have described it here long predates the emergence of Linux after 1990; I first became involved with it around 1976, and, its roots are readily traceable back to the early 1960s. But before Linux, most hacking was done on either proprietary operating systems or a handful of quasi-experimental homegrown systems like MIT’s ITS that were never deployed outside of their original academic niches. While there had been some earlier (pre-Linux) attempts to change this situation, their impact was at best very marginal and confined to communities of dedicated true believers which were tiny minorities even within the hacker community, let alone with respect to the larger world of software in general.

What is now called “open source” goes back as far as the hacker community does, but until 1985 it was an unnamed folk practice rather than a conscious movement with theories and manifestos attached to it. This prehistory ended when, in 1985, arch-hacker Richard Stallman (“RMS”) tried to give it a name — “free software”. But his act of naming was also an act of claiming; he attached ideological baggage to the “free software” label which much of the existing hacker community never accepted. As a result, the “free software” label was loudly rejected by a substantial minority of the hacker community (especially among those associated with BSD Unix), and used with serious but silent reservations by a majority of the remainder (including myself).

Despite these reservations, RMS’s claim to define and lead the hacker community under the “free software” banner broadly held until the mid-1990s. It was seriously challenged only by the rise of Linux. Linux gave open-source development a natural home. Many projects issued under terms we would now call open-source migrated from proprietary Unixes to Linux. The community around Linux grew explosively, becoming far larger and more heterogenous than the pre-Linux hacker culture. RMS determinedly attempted to co-opt all this activity into his “free software” movement, but was thwarted by both the exploding diversity of the Linux community and the public skepticism of its founder, Linus Torvalds. Torvalds continued to use the term “free software” for lack of any alternative, but publicly rejected RMS’s ideological baggage. Many younger hackers followed suit.

In 1996, when I first published this Hacker HOWTO, the hacker community was rapidly reorganizing around Linux and a handful of other open-source operating systems (notably those descended from BSD Unix). Community memory of the fact that most of us had spent decades developing closed-source software on closed-source operating systems had not yet begun to fade, but that fact was already beginning to seem like part of a dead past; hackers were, increasingly, defining themselves as hackers by their attachments to open-source projects such as Linux or Apache.

The term “open source”, however, had not yet emerged; it would not do so until early 1998. When it did, most of the hacker community adopted it within the following six months; the exceptions were a minority ideologically attached to the term “free software”. Since 1998, and especially after about 2003, the identification of ‘hacking’ with ‘open-source (and free software) development’ has become extremely close. Today there is little point in attempting to distinguish between these categories, and it seems unlikely that will change in the future.

It is worth remembering, however, that this was not always so.

Other Resources

Paul Graham has written an essay called Great Hackers, and another on Undergraduation, in which he speaks much wisdom.

Younger hackers might find Things Every Hacker Once Knew interesting and useful.

I have also written A Brief History Of Hackerdom.

I have written a paper, The Cathedral and the Bazaar, which explains a lot about how the Linux and open-source cultures work. I have addressed this topic even more directly in its sequel Homesteading the Noosphere.

Rick Moen has written an excellent document on how to run a Linux user group.

Rick Moen and I have collaborated on another document on How To Ask Smart Questions. This will help you seek assistance in a way that makes it more likely that you will actually get it.

If you need instruction in the basics of how personal computers, Unix, and the Internet work, see The Unix and Internet Fundamentals HOWTO.

When you release software or write patches for software, try to follow the guidelines in the Software Release Practice HOWTO.

If you enjoyed the Zen poem, you might also like Rootless Root: The Unix Koans of Master Foo.

Frequently Asked Questions

Q: How do I tell if I am already a hacker?Q: Will you teach me how to hack?Q: How can I get started, then?Q: When do you have to start? Is it too late for me to learn?Q: How long will it take me to learn to hack?Q: Is Visual Basic a good language to start with?Q: Would you help me to crack a system, or teach me how to crack?Q: How can I get the password for someone else’s account?Q: How can I break into/read/monitor someone else’s email?Q: How can I steal channel op privileges on IRC?Q: I’ve been cracked. Will you help me fend off further attacks?Q: I’m having problems with my Windows software. Will you help me?Q: Where can I find some real hackers to talk with?Q: Can you recommend useful books about hacking-related subjects?Q: Do I need to be good at math to become a hacker?Q: What language should I learn first?Q: What kind of hardware do I need?Q: I want to contribute. Can you help me pick a problem to work on?Q: Do I need to hate and bash Microsoft?Q: But won’t open-source software leave programmers unable to make a living?Q: Where can I get a free Unix?

Q:How do I tell if I am already a hacker?
A:Ask yourself the following three questions:Do you speak code, fluently?Do you identify with the goals and values of the hacker community?Has a well-established member of the hacker community ever called you a hacker?If you can answer yes to all three of these questions, you are already a hacker. No two alone are sufficient.The first test is about skills. You probably pass it if you have the minimum technical skills described earlier in this document. You blow right through it if you have had a substantial amount of code accepted by an open-source development project.The second test is about attitude. If the five principles of the hacker mindset seemed obvious to you, more like a description of the way you already live than anything novel, you are already halfway to passing it. That’s the inward half; the other, outward half is the degree to which you identify with the hacker community’s long-term projects.Here is an incomplete but indicative list of some of those projects: Does it matter to you that Linux improve and spread? Are you passionate about software freedom? Hostile to monopolies? Do you act on the belief that computers can be instruments of empowerment that make the world a richer and more humane place?But a note of caution is in order here. The hacker community has some specific, primarily defensive political interests — two of them are defending free-speech rights and fending off “intellectual-property” power grabs that would make open source illegal. Some of those long-term projects are civil-liberties organizations like the Electronic Frontier Foundation, and the outward attitude properly includes support of them. But beyond that, most hackers view attempts to systematize the hacker attitude into an explicit political program with suspicion; we’ve learned, the hard way, that these attempts are divisive and distracting. If someone tries to recruit you to march on your capitol in the name of the hacker attitude, they’ve missed the point. The right response is probably “Shut up and show them the code.”The third test has a tricky element of recursiveness about it. I observed in the section called “What Is a Hacker?” that being a hacker is partly a matter of belonging to a particular subculture or social network with a shared history, an inside and an outside. In the far past, hackers were a much less cohesive and self-aware group than they are today. But the importance of the social-network aspect has increased over the last thirty years as the Internet has made connections with the core of the hacker subculture easier to develop and maintain. One easy behavioral index of the change is that, in this century, we have our own T-shirts.Sociologists, who study networks like those of the hacker culture under the general rubric of “invisible colleges”, have noted that one characteristic of such networks is that they have gatekeepers — core members with the social authority to endorse new members into the network. Because the “invisible college” that is hacker culture is a loose and informal one, the role of gatekeeper is informal too. But one thing that all hackers understand in their bones is that not every hacker is a gatekeeper. Gatekeepers have to have a certain degree of seniority and accomplishment before they can bestow the title. How much is hard to quantify, but every hacker knows it when they see it.
Q:Will you teach me how to hack?
A:Since first publishing this page, I’ve gotten several requests a week (often several a day) from people to “teach me all about hacking”. Unfortunately, I don’t have the time or energy to do this; my own hacking projects, and working as an open-source advocate, take up 110% of my time.Even if I did, hacking is an attitude and skill you basically have to teach yourself. You’ll find that while real hackers want to help you, they won’t respect you if you beg to be spoon-fed everything they know.Learn a few things first. Show that you’re trying, that you’re capable of learning on your own. Then go to the hackers you meet with specific questions.If you do email a hacker asking for advice, here are two things to know up front. First, we’ve found that people who are lazy or careless in their writing are usually too lazy and careless in their thinking to make good hackers — so take care to spell correctly, and use good grammar and punctuation, otherwise you’ll probably be ignored. Secondly, don’t dare ask for a reply to an ISP account that’s different from the account you’re sending from; we find people who do that are usually thieves using stolen accounts, and we have no interest in rewarding or assisting thievery.
Q:How can I get started, then?
A:The best way for you to get started would probably be to go to a LUG (Linux user group) meeting. You can find such groups on the LDP General Linux Information Page; there is probably one near you, possibly associated with a college or university. LUG members will probably give you a Linux if you ask, and will certainly help you install one and get started.Your next step (and your first step if you can’t find a LUG nearby) should be to find an open-source project that interests you. Start reading code and reviewing bugs. Learn to contribute, and work your way in.The only way in is by working to improve your skills. If you ask me personally for advice on how to get started, I will tell you these exact same things, because I don’t have any magic shortcuts for you. I will also mentally write you off as a probable loser – because if you lacked the stamina to read this FAQ and the intelligence to understand from it that the only way in is by working to improve your skills, you’re hopeless.Another interesting possibility is to go visit a hackerspace. There is a burgeoning movement of people creating physical locations – maker’s clubs – where they can hang out to work on hardware and software projects together, or work solo in a cogenial atmosphere. Hackerspaces often collect tools and specialized equipment that would be too expensive or logistically inconvenient for individuals to own. Hackerspaces are easy to find on the Internet; one may be located near you.
Q:When do you have to start? Is it too late for me to learn?
A:Any age at which you are motivated to start is a good age. Most people seem to get interested between ages 15 and 20, but I know of exceptions in both directions.
Q:How long will it take me to learn to hack?
A:That depends on how talented you are and how hard you work at it. Most people who try can acquire a respectable skill set in eighteen months to two years, if they concentrate. Don’t think it ends there, though; in hacking (as in many other fields) it takes about ten years to achieve mastery. And if you are a real hacker, you will spend the rest of your life learning and perfecting your craft.
Q:Is Visual Basic a good language to start with?
A:If you’re asking this question, it almost certainly means you’re thinking about trying to hack under Microsoft Windows. This is a bad idea in itself. When I compared trying to learn to hack under Windows to trying to learn to dance while wearing a body cast, I wasn’t kidding. Don’t go there. It’s ugly, and it never stops being ugly.There is a specific problem with Visual Basic; mainly that it’s not portable. Though there is a prototype open-source implementations of Visual Basic, the applicable ECMA standards don’t cover more than a small set of its programming interfaces. On Windows most of its library support is proprietary to a single vendor (Microsoft); if you aren’t extremely careful about which features you use — more careful than any newbie is really capable of being — you’ll end up locked into only those platforms Microsoft chooses to support. If you’re starting on a Unix, much better languages with better libraries are available. Python, for example.Also, like other Basics, Visual Basic is a poorly-designed language that will teach you bad programming habits. No, don’t ask me to describe them in detail; that explanation would fill a book. Learn a well-designed language instead.One of those bad habits is becoming dependent on a single vendor’s libraries, widgets, and development tools. In general, any language that isn’t fully supported under at least Linux or one of the BSDs, and/or at least three different vendors’ operating systems, is a poor one to learn to hack in.
Q:Would you help me to crack a system, or teach me how to crack?
A:No. Anyone who can still ask such a question after reading this FAQ is too stupid to be educable even if I had the time for tutoring. Any emailed requests of this kind that I get will be ignored or answered with extreme rudeness.
Q:How can I get the password for someone else’s account?
A:This is cracking. Go away, idiot.
Q:How can I break into/read/monitor someone else’s email?
A:This is cracking. Get lost, moron.
Q:How can I steal channel op privileges on IRC?
A:This is cracking. Begone, cretin.
Q:I’ve been cracked. Will you help me fend off further attacks?
A:No. Every time I’ve been asked this question so far, it’s been from some poor sap running Microsoft Windows. It is not possible to effectively secure Windows systems against crack attacks; the code and architecture simply have too many flaws, which makes securing Windows like trying to bail out a boat with a sieve. The only reliable prevention starts with switching to Linux or some other operating system that is designed to at least be capable of security.
Q:I’m having problems with my Windows software. Will you help me?
A:Yes. Go to a DOS prompt and type “format c:”. Any problems you are experiencing will cease within a few minutes.
Q:Where can I find some real hackers to talk with?
A:The best way is to find a Unix or Linux user’s group local to you and go to their meetings (you can find links to several lists of user groups on the LDP site at ibiblio).(I used to say here that you wouldn’t find any real hackers on IRC, but I’m given to understand this is changing. Apparently some real hacker communities, attached to things like GIMP and Perl, have IRC channels now.)
Q:Can you recommend useful books about hacking-related subjects?
A:I maintain a Linux Reading List HOWTO that you may find helpful. The Loginataka may also be interesting.For an introduction to Python, see the tutorial on the Python site.
Q:Do I need to be good at math to become a hacker?
A:No. Hacking uses very little formal mathematics or arithmetic. In particular, you won’t usually need trigonometry, calculus or analysis (there are exceptions to this in a handful of specific application areas like 3-D computer graphics). Knowing some formal logic and Boolean algebra is good. Some grounding in finite mathematics (including finite-set theory, combinatorics, and graph theory) can be helpful.Much more importantly: you need to be able to think logically and follow chains of exact reasoning, the way mathematicians do. While the content of most mathematics won’t help you, you will need the discipline and intelligence to handle mathematics. If you lack the intelligence, there is little hope for you as a hacker; if you lack the discipline, you’d better grow it.I think a good way to find out if you have what it takes is to pick up a copy of Raymond Smullyan’s book What Is The Name Of This Book?. Smullyan’s playful logical conundrums are very much in the hacker spirit. Being able to solve them is a good sign; enjoying solving them is an even better one.
Q:What language should I learn first?
A:HTML if you don’t already know it. There are a lot of glossy, hype-intensive bad HTML books out there, and distressingly few good ones. The one I like best is HTML: The Definitive Guide.But HTML is not a full programming language. When you’re ready to start programming, I would recommend starting with Python. You will hear a lot of people recommending Perl, but it’s harder to learn and (in my opinion) less well designed.C is really important, but it’s also much more difficult than either Python or Perl. Don’t try to learn it first.Windows users, do not settle for Visual Basic. It will teach you bad habits, and it’s not portable off Windows. Avoid.
Q:What kind of hardware do I need?
A:It used to be that personal computers were rather underpowered and memory-poor, enough so that they placed artificial limits on a hacker’s learning process. This stopped being true in the mid-1990s; any machine from an Intel 486DX50 up is more than powerful enough for development work, X, and Internet communications, and the smallest disks you can buy today are plenty big enough.The important thing in choosing a machine on which to learn is whether its hardware is Linux-compatible (or BSD-compatible, should you choose to go that route). Again, this will be true for almost all modern machines. The only really sticky areas are modems and wireless cards; some machines have Windows-specific hardware that won’t work with Linux.There’s a FAQ on hardware compatibility; the latest version is here.
Q:I want to contribute. Can you help me pick a problem to work on?
A:No, because I don’t know your talents or interests. You have to be self-motivated or you won’t stick, which is why having other people choose your direction almost never works.
Q:Do I need to hate and bash Microsoft?
A:No, you don’t. Not that Microsoft isn’t loathsome, but there was a hacker culture long before Microsoft and there will still be one long after Microsoft is history. Any energy you spend hating Microsoft would be better spent on loving your craft. Write good code — that will bash Microsoft quite sufficiently without polluting your karma.
Q:But won’t open-source software leave programmers unable to make a living?
A:This seems unlikely — so far, the open-source software industry seems to be creating jobs rather than taking them away. If having a program written is a net economic gain over not having it written, a programmer will get paid whether or not the program is going to be open-source after it’s done. And, no matter how much “free” software gets written, there always seems to be more demand for new and customized applications. I’ve written more about this at the Open Source pages.
Q:Where can I get a free Unix?
A:If you don’t have a Unix installed on your machine yet, elsewhere on this page I include pointers to where to get the most commonly used free Unix. To be a hacker you need motivation and initiative and the ability to educate yourself. Start now…

Source : http://catb.org/~esr/faqs/hacker-howto.html#basic_skills

The US’s top 15 emerging jobs of 2020, according to LinkedIn

The US’s top 15 emerging jobs of 2020, according to LinkedIn

— Read on bluesyemre.com/2020/01/13/the-uss-top-15-emerging-jobs-of-2020-according-to-linkedin/

Datree announces $8M Series A as it joins Y Combinator

Datree announces $8M Series A as it joins Y Combinator

— Read on feedproxy.google.com/~r/techcrunch/startups/~3/SZY5F8aylz8/

Phát hiện lỗi bảo mật của Sudo giúp leo thang đặc quyền trên MacOS và Linux

Chuyên gia bảo mật Joe Vennix của Apple đã tìm thấy một lỗ hổng khá nghiêm trọng trong Sudo. Ở một cấu hình nhất định, lỗi này cho phép người dùng thấp quyền (low privileged users) hoặc các chương trình độc hại chạy các lệnh tùy ý với đặc quyền quản trị (root) trên các hệ điều hành Linux hoặc MacOS. 

Sudo là một trong những tiện ích quan trọng, hữu ích và phổ biến nhất, thường được cài đặt sẵn như một lệnh quan trọng (core command) trên MacOS và hầu hết các hệ điều hành dựa trên UNIX hay Linux. 

Sudo được thiết kế để cho phép người dùng chạy các ứng dụng hoặc lệnh với các đặc quyền của người dùng khác mà không cần chuyển đổi môi trường. 

Lỗ hổng Sudo (CVE-2019-18634)

Lỗ hổng leo thang đặc quyền mới được phát hiện được đặt tên là CVE-2019-18634, bắt nguồn từ sự nghi ngờ về vấn đề tràn bộ nhớ đệm (stack-based buffer overflow) trong tất cả các phiên bản Sudo trước bản 1.8.26. 

Theo Vennix, lỗi này chỉ có thể bị khai thác khi tùy chọn “pwfeedback” được bật trong file cấu hình sudoers. Đây là tính năng phản hồi trực quan khi người dùng nhập mật khẩu vào terminal, mật khẩu sẽ hiện lên màn hình dưới dạng dấu hoa thị (*). 

Cần lưu ý là tính năng pwfeedback không được bật sẵn theo mặc định trong phiên bản Sudo trở về trước hoặc các packages khác. Tuy nhiên, một số bản phân phối Linux như Linux Mint và Elementary OS thì tính năng pwfeedback được mặc định bật sẵn. 

Bên cạnh đó, khi pwfeedback bật, lỗ hổng có thể bị khai thác bởi bất kỳ người dùng nào, kể cả những người dùng không được cấp quyền sudo. 

Nhà phát triển Sudo, ông Todd C. Miller, giải thích

“Lỗi có thể được tái hiện bằng cách đưa một dữ liệu đầu vào lớn vào Sudo khi nó nhắc nhập mật khẩu”. Ông cũng nói thêm “Kẻ tấn công có toàn quyền kiểm soát dữ liệu được sử dụng để tràn bộ nhớ đệm, vậy nên khả năng khai thác dữ liệu là khá cao.” 

Cách kiểm tra xem bạn có bị ảnh hưởng không

Để kiểm tra cấu hình sudoers có bị lỗi hay không, bạn có thể chạy lệnh “sudo -l” trong terminal của Linux hoặc macOS để tìm và kiểm tra xem “pwfeedback” có được bật không, và có được liệt kê trong output “Matching Defaults entries” hay không.

Nếu pwfeedback bật, bạn có thể tắt nó bằng cách thay đổi “Defaults pwfeedback” thành “Defaults !pwfeedback” trong file cấu hình sudoers để ngăn chặn việc khai thác lỗ hổng leo thang đặc quyền.

Vennix có trách nhiệm báo cáo về lỗ hổng cho nhân viên bảo trì của Sudo và cuối tuần trước họ đã phát hành phiên bản sudo 1.8.31 đã vá lỗi. 

Miller cho biết “Mặc dù các phiên bản Sudo 1.8.26 đến 1.8.30 cũng có các lỗi logic nhưng chúng là những lỗi không khai thác được do sự thay đổi trong xử lý EOF được ra mắt trong bản Sudo 1.8.26”. 

Apple cũng đã phát hành bản cập nhật vá lỗi cho macOS High Sierra 10.13.6, macOS Mojave 10.14.6, macOS Catalina 10.15.2 vào tuần trước. Năm ngoái, Joe Vennix cũng báo cáo về một lỗ hổng tương tự trong Sudo có thể đã bị kẻ tấn công khai thác để chạy các lệnh dưới quyền quản trị chỉ bằng cách chỉ định ID người dùng là “-1” hoặc “4294967295”.

Quỳnh Thảo, theo THNSecuritydaily

Bài gốc: https://thehackernews.com/2020/02/sudo-linux-vulnerability.html

Run a custom Linux shell in Windows Terminal with WSL

Run a custom Linux shell in Windows Terminal with WSL

— Read on msftstack.wordpress.com/2020/01/01/run-a-custom-linux-shell-in-windows-terminal-with-wsl/

Cẩm nang công việc ngành Công nghệ thông tin – Information Technology

Trong thời đại công nghệ bùng nổ và len lỏi vào từng ngóc ngách của cuộc sống như hiện nay, việc theo đuổi ngành Công nghệ thông tin đang dần trở thành lựa chọn phổ biến của rất nhiều bạn trẻ. Hầu hết các tổ chức, doanh nghiệp dù hoạt động trong lĩnh vực gì cũng cần một đội ngũ kỹ thuật có chuyên môn liên quan đến ngành này. Hơn nữa, phạm vi của ngành này cũng rất rộng nên các bạn trẻ hoàn toàn có khả năng lựa chọn những hướng đi phù hợp cho bản thân. Vậy thì ngành Công nghệ thông tin có những công việc gì? Cơ hội việc làm hấp dẫn như thế nào? Xin việc ngành công nghệ thông tin ra sao? Tất cả sẽ được TopCV giải đáp ở bài viết này.


Sự phát triển của ngành công nghệ thông tin ngày nay

Công nghệ thông tin (Information Technology – IT) là ngành sử dụng máy tính và phần mềm máy tính để lưu trữ, chuyển đổi, thu thập, xử lý, bảo vệ và truyền thông tin. Mục đích của khối khoa học tổng hợp liên ngành này là nhằm phát triển khả năng tạo mới, sửa chữa và sử dụng hệ thống các thiết bị, máy tính bao gồm phần cứng, phần mềm để cung cấp giải pháp xử lý thông tin trên nền công nghệ cá nhân hoặc tổ chức có yêu cầu.
Ngày nay, bất cứ ngành nghề, lĩnh vực nào cũng cần sự góp mặt và hỗ trợ của Công nghệ thông tin. Nhu cầu xã hội đối với sản phẩm của ngành rất đa dạng, từ những ứng dụng của một chiếc điện thoại cá nhân cho đến phần mềm quản lý của một trường học, một ngân hàng, một công ty bất động sản, một hãng hàng không hay toàn bộ hệ thống an ninh quốc phòng của một quốc gia.
Công nghệ thông tin là một trong những ngành hot nhất hiện nay
Theo thống kê của Bộ Thông tin – Truyền thông về hướng quy hoạch nhân lực quốc gia tới năm 2020, Việt Nam cần một triệu lao động trong lĩnh vực công nghệ thông tin, nhu cầu nhân lực của ngành mỗi năm tăng 13%. Có thể nói, công nghệ thông tin hiện đang là ngành dẫn đầu về cơ hội việc làm dồi dào và mức thu nhập hấp dẫn. Xin việc ngành công nghệ thông tin không khó, miễn là bạn đủ năng lực.


Nhắc đến IT chắc hẳn bạn sẽ nghĩ ngay đến các cụm từ như “lập trình viên”, “website”, “an ninh mạng”… Tuy nhiên không chỉ có web, ngành công nghệ thông tin còn bao gồm cả lập trình game, ứng dụng điện thoại… và tất tần tật những thứ liên quan đến máy tính và dữ liệu. Do đó lựa chọn công việc trong ngành này khá phong phú. Sau đây là 8 công việc ngành công nghệ thông tin phổ biến nhất hiện nay để các bạn tham khảo.

1. Lập trình web (Web developer)

Công việc chính của một chuyên viên lập trình website là xây dựng, duy trì web và ứng dụng web. Đa phần họ tập trung vào phần mềm và cơ sở dữ liệu của web (back-end), nhưng cũng có một số nhà lập trình làm việc với giao diện và thiết kế hình ảnh web (front-end) hoặc kết hợp cả hai (full stack).
Người lập trình web có thể làm việc cho một công ty (agency) hoặc nhận việc tự do (freelance). Công việc của họ rất đa dạng với vô vàn dự án có thể làm cùng lúc và nhiều cuộc gặp với khách hàng. Tuy nhiên dù thế nào thì nhiệm vụ cơ bản của một nhà lập trình/phát triển web là tạo ra những sản phẩm đáng tin cậy, dễ dàng tiếp cận và đáp ứng nhu cầu khách hàng.
Cơ hội thăng tiến của công việc này rất rộng mở. Bạn có thể bắt đầu từ một chuyên viên phát triển web nhỏ, tiến dần lên chuyên viên cấp cao và nếu làm tốt có thể làm đến trưởng phòng phát triển, giám đốc kỹ thuật hay phó chủ tịch công nghệ.

– Một số công việc cụ thể:
  + Viết code bằng một hay nhiều ngôn ngữ lập trình hay lệnh (như PHP, JavaScript…)
  + Thiết kế nền tảng cho thành phần của một ứng dụng
  + Giải quyết lỗi trong lúc kiểm thử hay từ người dùng phản hồi lại
  + Kiểm tra các tính năng mới nhằm đảm bảo chúng thực hiện đúng nhiệm vụ trong mọi trường hợp
  + Phối hợp, đóng góp cho các dự án mã nguồn mở (Open Source)
  + Xây dựng lại câu trúc và tối ưu hóa code đang tồn tại
  + Xây dựng, duy trì cơ sở dữ liệu, cập nhật xu hướng và cải tiến mới trong phát triển web…
– Kiến thức, kỹ năng cần có:
  + Kiến thức kỹ thuật trong các lĩnh vực như ngôn ngữ máy chủ, hệ thống quản lý cơ sở dữ liệu, nền tảng ứng dụng website, bảo mật web và mã hóa.
  + Bằng cấp chuyên môn về tin học, khoa học máy tính, kỹ sư phần mềm, thiết kế và phát triển web.
  + Kỹ năng cần thiết: chú trọng vào chi tiết, tư duy logic, khả năng làm việc độc lập và làm việc nhóm, chịu được áp lực cao để hoàn thành đúng deadline…

2. Lập trình viên front-end (Front-end developer)

Kiến thức bắt buộc của ngành công nghệ thông tin

Lập trình viên front-end là những người lập trình code nhằm tạo nên giao diện (bộ mặt) của website, duy trì mọi thứ được kết nối đúng đắn để thuận tiện cho người dùng và đảm bảo giao diện có thể chạy trên bất kỳ nền tảng, trình duyệt nào.
Con đường phát triển sự nghiệp của công việc này cũng từ những nhà lập trình nhỏ cho đến chuyên viên cao cấpgiám đốc phát triển.

– Một số trách nhiệm chính:
  + Quản lý những gì người dùng thấy đầu tiên trên trình duyệt
  + Phân tích code, thiết kế, gỡ rối cho ứng dụng, đảm bảo trải nghiệm của người dùng được liên tục
  + Kiểm thử và sửa chữa lỗi
  + Chịu trách nhiệm về thiết kế cuối cùng của web…
– Kiến thức, kỹ năng cần có:
  + Kiến thức chuyên môn về HTML (Hyper Text Markup Language – ngôn ngữ đánh dấu siêu văn bản), CSS (Cascading Style Sheets – tập tin định kiểu theo tầng), ngôn ngữ lập trình Javascript, Javascript frameworks, jQuery…
  + Kỹ năng cần thiết: trình độ ngoại ngữ tốt, kỹ năng giải quyết vấn đề, phân tích thông tin, kết hợp ăn ý với bộ phận back-end…
Thành thạo các ngôn ngữ lập trình là điều bắt buộc với ngành IT

3. Chuyên viên quản trị an ninh mạng (Cyber security specialist)

Một chuyên viên an ninh mạng phải luôn hiểu được những mối nguy hại đến an ninh thông tin hay dữ liệu của một hay nhiều hệ thống phụ trách. Nhiệm vụ chính của họ là phân tích những sai phạm an ninh có thể xảy ra hoặc đang xảy ra để sửa chữa, hay còn gọi là vá lỗ hổng.
Con đường sự nghiệp: Chuyên viên an ninh mạng => Chuyên gia phân tích an ninh mạng (Cybersecurity Analyst)/ Kiểm thử bảo mật (Penatration Tester)/ Kiểm thử lỗ hổng (Vulnerability Tester)… => Quản trị an ninh mạng (Cybersecurity Administrator)/ Kỹ sư an ninh mạng (Cyber Security Engineer)…

– Một số trách nhiệm chính:
   + Hỗ trợ tiền tuyến mạng lưới, bảo vệ thông tin khỏi xâm phạm thông qua phân tích nguy cơ tiềm tàng
   + Phát triển kế hoạch đối đầu với sự cố, đưa ra phương thức đo lường như tường lửa và mật mã hóa (encryption)
   + Thử nghiệm thâm nhập, tiến hành các kiểm tra sơ hở, đề xuất giải pháp vá lỗi
   + Thăm dò và kiểm tra lại hệ thống khi có dấu hiệu bất thường
   + Phối hợp với cảnh sát, cơ quan thực thi bảo mật để tiến hành bao vây, đánh trả tội phạm…
– Kiến thức, kỹ năng cần có:
   + Bằng cấp công nghệ thông tin như Khoa học máy tính, An ninh và quản trị mạng, Pháp y máy tính, Network và an ninh…
   + Một số chứng chỉ chuyên môn: CompTIA Security+, Chứng chỉ chuyên gia bảo mật hệ thống thông tin (CISSP), Chứng chỉ thực hành an toàn hệ thống (SSCP), Chứng chỉ quản lý an ninh thông tin (CISM), Chứng chỉ kiểm toán viên hệ thống thông tin (CISA), Cisco Certified Network Associate (CCNA), Chứng chỉ hacker đạo đức (CEH)…
   + Kỹ năng cần thiết: Tỉ mỉ, khả năng phân tích, nhận biết xu hướng, tư duy logic, khả năng tiếp cận chủ động, tổ chức tốt công việc, sáng tạo và kiên nhẫn, hiểu biết về các vấn đề bảo mật…

4. Kỹ sư kiểm định/ kiểm soát chất lương (QA/QC Engineer)

Kiểm định chất lượng (Quality Assurance – QA) là hoạt động quản lý chủ động được sử dụng để đảm bảo chất lượng cho một sản phẩm công nghệ thông tin. QA bao gồm mọi kỹ thuật, hoạt động vận hành được dùng để hoàn thành các yêu cầu chất lượng chấp thuận bởi khách hàng hay bên liên quan trước khi dự án bắt đầu.
Kiểm soát chất lượng (Quality Control – QC) là việc kiểm tra hoạt động xuất ra nhằm đạt mức chất lượng được ấn định, quy trình phù hợp với dự án và được tiến hành đúng đắn, bên cạnh đó là test và kiểm tra code để đảm bảo giải pháp đáp ứng đòi hỏi đã chấp thuận.

– Một số công việc cụ thể:
  + Kiểm tra hằng ngày phạm vi đánh giá và đặc tính cần thiết để đạt yêu cầu trong bản vẽ và thông số kỹ thuật cho tất cả công trình theo hợp đồng thực hiện ON hoặc OFF site
  + Phối hợp với đại diện bên tư vấn và Site En-charge để kiểm tra và xem xét các khó khăn trong chất lượng, bao gồm cả báo cáo sai phạm về quy trình thực hiện
Xử lý các tài liệu QA/QC của toàn bộ dự án bao gồm hiệu chuẩn, các chứng nhận, kết quả test, chịu trách nhiệm cho các báo cáo về sai phạm trong quy trình và Site Instruction
  + Phát triển phương pháp thi công trong hoạt động, bao gồm tiếp cận rủi ro và phân tích an toàn môi trường, kế hoạch và bảng test kiểm định dựa trên đặc trưng dự án…
– Kiến thức, kỹ năng cần có:
  + Kiến thức chuyên môn về các quy trình phát triển phần mềm, công nghệ phần mềm (Software Engineering), công nghệ kiểm tra phần mềm (Software Testing), kiến thức nghiệp vụ chuyên ngành như Thương mại điện tử (E-Commerce), Tiếp thị số (Digital Marketing), Hệ quản trị doanh nghiệp (ERP)…
  + Kỹ năng cần thiết: phân tích vấn đề, tư duy logic, tỉ mỉ, cẩn thận, kỹ năng giao tiếp, khả năng code…
Làm việc trong ngành công nghệ thông tin luôn cần sự tỉ mỉ và sáng tạo

5. Kỹ sư cầu nối (Bridge System Engineer)

Kỹ sư cầu nối thường là người quản lý dự án hoặc quản lý phát triển, công việc chủ yếu tập trung vào tương tác giữa khách hàng và đội ngũ kỹ thuật, chịu trách nhiệm truyền đạt yêu cầu và dung hòa cách làm việc giữa các quốc gia có văn hóa khác nhau. Đây là công việc đặc trưng chỉ có ở các công ty thuê ngoài (outsourcing), và tùy vào tính chất của dự án để tham gia vào những giai đoạn khác nhau của sản phẩm.

– Một số công việc cụ thể:
  + Liên hệ khách hàng, lên kế hoạch, phân tích yêu cầu, code và thử nghiệm sản phẩm mẫu để chào hàng
  + Khi dự án chính thức triển khai: nắm nội dung chính về yêu cầu từ khách hàng, phân chia và giám sát công việc để báo cáo cho khách, đưa ra phương án xử lý, giải pháp tiếp cận của hai bên
– Kiến thức, kỹ năng cần có:
   + Kiến thức: các chứng chỉ chuyên môn về kỹ sư phần mềm chính quy của các trường đại học, cao đẳng
   + Kỹ năng: giao tiếp tốt, code giỏi, sự kiên nhẫn, nhạy bén, khả năng chịu áp lực cao, biết càng nhiều ngoại ngữ càng tốt (đặc biệt là tiếng Anh và tiếng Nhật)…

6. Nhà khoa học dữ liệu (Data scientist)

Đây là một nhánh mới của chuyên gia phân tích dữ liệu. Gọi là “nhà khoa học” nhưng không phải làm việc trong phòng thí nghiệm. Công việc của họ là đào sâu và khai thác “mỏ” dữ liệu khổng lồ, hỗn độn thông qua phân tích, xử lý và tạo ra giá trị từ dữ liệu thành các insight.
Đây là ngành rất hấp dẫn và thu hút nhân lực, nhưng không hề đơn giản để ai cũng có thể làm được. Bản chất của ngành này là sự kết hợp giữa kinh tế và khoa học, người nào nhạy bén và nắm bắt tốt sẽ thành công.

– Một số công việc cụ thể:
  + Thu thập lượng dữ liệu lớn và chuyển đổi thành format có thể sử dụng được
  + Làm việc với nhiều ngôn ngữ lập trình đa dạng như SAS, R và Python
  + Tìm kiếm cho thứ tự trong dữ liệu, tìm ra xu hướng mấu chốt cho doanh nghiệp
  + Sử dụng kỹ thuật điều khiển dữ liệu để giải quyết các vấn đề liên quan đến doanh nghiệp
– Kiến thức, kỹ năng cần có:
  + Hiểu biết vững chắc về thống kê, machine learning, deep learning, data mining, ngôn ngữ lập trình (SAS, R, Python…), báo cáo kỹ thuật, data visualization, Hadoop, MapReduce, MySQL, Postgres,
  + Kỹ năng cần có: ngoại ngữ tốt, khả năng giải quyết vấn đề, giao tiếp, sự kiên nhẫn, nhạy bén, lập trình giỏi…

7. Chuyên viên phát triển ứng dụng (App developer)

Công việc chính của chuyên viên phát triển ứng dụng là chuyển các yêu cầu phần mềm thành ngôn ngữ lập trình có thể làm việc được để duy trì và phát triển các chương trình sử dụng trong doanh nghiệp.
Đa phần chuyên môn của các chuyên viên phát triển ứng dụng tập trung vào một lĩnh vực cụ thể như ứng dụng điện thoại, phần mềm tính toán, phần mềm đồ họa, phần mềm tiện ích văn phòng. Các app có thể được viết cho một hệ điều hành cụ thể (Windows, Android…) hay cho nhiều nền tảng khác như máy tính và thiết bị điện thoại.

– Một số công việc cụ thể:
  + Xây dựng chi tiết chương trình làm việc thông qua thảo luận với khách hàng
  + Đề ra những giải pháp thích hợp với các vấn đề phát sinh
  + Vận hành, kiểm tra, ứng dụng chương trình vào sản xuất
  + Đơn giản hóa các đặc tả, dịch logic thành ngôn ngữ lập trình
  + Tiến hành đánh giá, tăng độ hiệu quả của chương trình
  + Viết tư liệu sử dụng, vận hành cho người dùng và nhà điều hành máy tính
  + Cập nhật, sửa chữa, điều chỉnh, phát triển các phần mềm sẵn có và ứng dụng thông thường
– Kiến thức, kỹ năng cần có:
  + Kiến thức chuyên môn và một số chứng chỉ liên quan như kỹ sư phần mềm/ khoa học máy tính, Toán – Tin, Công nghệ thông tin, Quản trị kinh doanh…
  + Nếu không có bằng cấp chính quy, bạn hoàn toàn có thể tham gia các khóa học online để được đào tạo sâu hơn và chứng minh trình độ
  + Kỹ năng cần thiết: lập trình tốt, sự tỉ mỉ, nhanh nhạy, sáng tạo, tư duy logic, phân tích, giải quyết vấn đề, làm việc tốt dưới áp lực, thành thạo ít nhất một ngoại ngữ…
Thành thạo ngoại ngữ cũng là điều cần thiết đối với các kỹ sư IT

8. Lập trình game (Game developer)

Công việc của một chuyên viên lập trình game là tham gia vào quá trình sáng tạo, sản xuất game trên nền tảng máy tính cá nhân, máy chơi game, điện thoại di động, máy tính bảng và các thiết bị cầm tay khác, hoặc các trò chơi online, trò chơi được cài đặt trong các máy ở trung tâm thương mại (arcade game).
Việc sản xuất game phải trải qua rất nhiều bước từ lên ý tưởng, sáng tạo cách chơi, thiết kế giao diện đến tạo hình nhân vật, đồ vật, hiệu ứng âm thanh, chuyển biến ngôn ngữ, test… Vì vậy, để có một game thành công, cần rất nhiều thời gian và một đội sản xuất giỏi.

– Một số công việc cụ thể:
  + Thiết kế ý tưởng ban đầu cho game, bao gồm cả gameplay
  + Truyền tải cốt truyện và bảng vẽ lại câu chuyện kể ra (storyboard)
  + Thiết kế hình ảnh game sử dụng 2D/3D và phần mềm đồ họa
  + Tạo các hiệu ứng âm thanh trong trò chơi
  + Lập trình game sử dụng sử dụng ngôn ngữ lập trình như C++
  + Test chất lượng và giải quyết các vấn đề xảy ra, sửa chữa lỗi
  + Phổ biến lại cách dùng, kiến thức cho khách hàng, người chơi game
– Kiến thức, kỹ năng cần có:
  + Có càng nhiều kiến thức, bằng cấp sau đây, cơ hội xin việc càng cao: phát triển trò chơi máy tính, họa sĩ hoạt hình, thiết kế đồ họa, khoa học máy tính, kỹ sư phần mềm, thiết kế đa phương tiện…
  + Kỹ năng: thành thạo các ngôn ngữ lập trình, các gói phần mềm, khả năng làm việc độc lập lẫn kết hợp nhóm, sự tâm huyết, sáng tạo, khả năng giải quyết vấn đề…


Có thể kể đến các trường đại học hàng đầu Việt Nam về đào tạo ngành công nghệ thông tin như:
– Trường Đại học Bách khoa Hà Nội (HUST)
– Đại học Công nghệ (UET) – Đại học Quốc gia Hà Nội
– Đại học Khoa học Tự nhiên – Đại học Quốc gia TP. Hồ Chí Minh
– Đại học FPT
– Đại học Công nghệ thông tin (UIT) – Đại học Quốc gia TP. Hồ Chí Minh
– Học viện Công nghệ Bưu chính viễn thông
– Học viện Kỹ thuật Quân sự
– Học viện Kỹ thuật Mật mã
– Đại học Hà Nội
– Đại học Khoa học và Công nghệ Hà Nội (USTH)
– Đại học Khoa học tự nhiên – Đại học Quốc gia Hà Nội
– Đại học Công nghệ TP. Hồ Chí Minh (HUTECH)
– Đại học Giao thông Vận tải
– Đại học Mỏ địa chất
– Đại học Kỹ thuật – Hậu cần Công an nhân dân
– Đại học Điện lực…
Bên cạnh đó còn một số trường cao đẳng có đào tạo chuyên về công nghệ – kỹ thuật như Cao đẳng Công nghệ Thông tin TP. Hồ Chí Minh (ITC), Cao đẳng Công nghệ Thông tin (CIT), Cao đẳng Kinh tế Công nghiệp Hà Nội, Cao đẳng Công nghệ Hà Nội, Cao đẳng thực hàng FPT Polytechnic…


Lựa chọn xin việc ngành công nghệ thông tin rất đa dạng

Sau khi tốt nghiệp, bạn có thể xin việc ngành công nghệ thông tin tại:
– Các công ty, tập đoàn về công nghệ thông tin của Việt Nam như FPT, Viettel, VNPT, Trung tâm công nghệ thông tin (EVN), Tổng công ty truyền thông đa phương tiện – VTC… hoặc các tập đoàn đa quốc gia như Google, Apple…Có rất nhiều lựa chọn công việc cho sinh viên công nghệ thông tin sau tốt nghiệp
– Các công ty cung cấp giải pháp tích hợp như HPT Vietnam, SAVIS, iNET Solutions, Tinhvan Group, CMC, TMA Solutions, GCS, KMS, Logigear Vietnam, FSOFT, Sunrise Software Solutions…
– Các công ty cung cấp giải pháp về mạng và an ninh mạng tại Việt Nam như BKAV, Trung tâm an ninh mạng Viettel, VNCS, CMC, Security Box, VSEC… hoặc các tập đoàn đa quốc gia như Avira, Kaspersky Antivirus…
– Các công ty sản xuất, lắp ráp, sửa chữa trang thiết bị phần cứng.
– Bộ phận Quản trị, IT tại các công ty trong hoặc ngoài lĩnh vực Công nghệ như giáo dục, y tế, thương mại điện tử, ngân hàng, giải trí…
– Giảng viên tại các trường đại học, học viện, cao đẳng, trung tâm đào tạo Công nghệ thông tin.


Cơ hội xin việc ngành công nghệ thông tin không khó

Hiện nay có rất nhiều trang web, diễn đàn về Công nghệ thông tin nổi tiếng ở Việt Nam như forum.bkav.com.vn, tinhte.vn, genk.vn, sinhvienit.net, techz.vn, thongtincongnghe.com, securitybox.vn, techtalk.vn, techmaster.vn… Hoặc fanpage, group facebook như Cộng đồng IT, Cộng đồng tester Việt Nam… Nếu khá tiếng Anh, bạn có thể tham khảo các tạp chí, trang web nước ngoài như theverge.com, tech2.com, techcrunch.com, digitaltrends.com, pcworld.com, mashable.com, engadget.com, cnet.com, wired.com, thenextweb.com, hackforums.net, securityforum.org…
Ngoài ra đối với các Front-end developer thì Pinterest là một địa chỉ rất đáng để tham khảo và học hỏi về thẩm mỹ, sắp xếp bố cục cũng như giao diện.Xin việc ngành công nghệ thông tin không khó, quan trọng là phải có năng lực
Để tìm việc, bạn có thể vào website, fanpage của các công ty mình thích để cập nhật tin tuyển dụng, hoặc vào các trang đăng tin chuyên nghiệp để tìm kiếm công việc ngành IT như timviecnhanh.com, careerlink.vn, topcv.vn,…


Có thể nói cơ hội xin việc công nghệ thông tin vô cùng đa dạng, trải rộng trên tất cả các lĩnh vực nên để xin việc không phải quá khó, quan trọng là bạn đủ năng lực và kiến thức cần thiết.
Trong bộ hồ sơ xin việc ngành công nghệ thông tin (hay bất cứ ngành nào khác) thì CV là thứ quan trọng nhất vì nó đem lại cái nhìn tổng quát về tính cách cũng như khả năng của bạn cho nhà tuyển dụng. Nếu chưa biết viết một bản CV xin việc ngành IT ấn tượng như thế nào, hãy tham khảo các mẫu CV theo ngành nghề cụ thể như Lập trình viên, Quản trị hệ thống, Quản trị mạng, IT Support/Helpdesk, Front-end/Back-end Developer, Tester, QA/QC… tại đây.

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

Theo TopCV

Tất Cả Những Điều Bạn Cần Nằm Lòng Về Các Vị Trí – Công Việc Trong Lĩnh Vực Công Nghệ Thông Tin

I. Cyber Security Specialist (Chuyên Viên Quản Trị An Ninh Mạng)

Chiều một ngày cuối tháng 7 năm 2017, những hành khách đến sân bay Nội Bài và Tân Sơn Nhất không khỏi bàng hoàng khi nhìn thấy màn hình thông tin chuyến bay cùng hệ thống phát thanh ở sân bay bị chèn những nội dung kích động liên quan đến Biển Đông. Người dùng khi truy cập vào website của Vietnam Airline cũng thấy trang bị hack. Tại sao một hệ thống lớn của quốc gia lại có thể bị xâm phạm như vậy? Lúc ấy, vai trò của những chuyên viên an ninh mạng được nhắc đến.

  1. Mô tả công việc
  • Là một chuyên viên an ninh thông tin, công việc của họ là hiểu được những mối nguy hại đến an ninh thông tin hay dữ liệu;
  • Họ sẽ phân tích những sai phạm an ninh có thể xảy ra hay đang xảy ra và sửa sao cho hệ thống không bị lỗi nữa. Điều này liên đối đến hệ thống và mạng lưới sử dụng bởi công ty và tổ chức để quản lý thông tin của họ và CNTT;
  • Hỗ trợ phòng tuyến tiền tuyến mạng lưới, bảo vệ thông tin khỏi xâm phạm thông qua phân tích và tiếp cận nguy cơ tiềm tàng;
  • Phát triển kế hoạch để đối đầu với sự cố bằng cách đưa phương thức đo lường như tường lửa và mật mã hóa (encryption);
  • Thăm dò và kiểm tra hệ thống khi có dấu hiệu bất thường;
  • Thử nghiệm thâm nhập (hacker mũ trắng): tiến hành các kiểm tra các sơ hở trong bảo mật, đề xuất các giải pháp vá lỗi;
  • Thử nghiệm và “đánh trả” tội phạm, phối hợp với cảnh sát, cơ quan luật và thực thi bảo mật (bao gồm phục hồi các tập tin đã được xóa, phân tích và trình bày dữ liệu liên quan đến tội phạm; phân tích các nhật ký điện thoại di động, phát hiện mối quan hệ giữa các sự kiện, các nhóm và cá nhân thông qua các điểm tham quan của các tuyến đường dữ liệu,…).

  1. Kiến thức, kinh nghiệm, kỹ năng cần có

Kinh nghiệm

Tùy vào nơi tuyển dụng, có những nơi yêu cầu kinh nghiệm tối thiểu là 2 năm với sinh viên đã ra trường.

Chuyên môn

Có những chuyên gia không có bằng cấp hay bắt đầu vị trí mới vào trong CNTT, như hỗ trợ trong văn phòng (help-desk support), và làm việc lên vai trò bảo mật thông tin.

Hiện nay, đầu vào cho những chuyên gia là sinh viên mới tốt nghiệp với bằng cấp liên quan đến các ngành CNTT:

  • Khoa học máy tính;
  • An ninh mạng và quản trị mạng;
  • Pháp y máy tính;
  • CNTT;
  • Toán – Tin;
  • Kỹ sư network;
  • Network và an ninh.

Nếu bạn hứng thú với lĩnh vực này và không có bằng cấp đại học/cao đẳng/trung cấp liên quan đến CNTT, tìm đến các chương trình dành cho sinh viên tốt nghiệp bất cứ lĩnh vực nào.

Hay, bạn có thể chọn liên kết thạc sĩ về ngành này (hiện tại trường đại học FPT đang liên kết với bên Mỹ nhằm cung cấp chương trình đào tạo quản trị an ninh mạng chuyên nghiệp.

Kỹ năng

  • Tỉ mỉ, khả năng phân tích và nhận biết xu hướng trong dữ liệu;
  • Sáng tạo và kiên nhẫn;
  • Tính logic và khách quan;
  • Khả năng tiếp cận chủ động, có phương pháp và tổ chức tốt công việc;
  • Khả năng làm việc dưới áp lực và gặp deadline;
  • Kỹ năng giao tiếp và khả năng tương tác hiệu quả với nhiều người;
  • Hiểu biết về các vấn đề bảo mật, các điều luật liên quan.
  1. Rèn luyện kỹ năng này ở đâu?

Ngoại ngữ: Tội phạm an ninh mạng có thể từ trong nước hay ngoài nước, nên việc biết nhiều ngoại ngữ là lợi thế cực kỳ lớn. Vụ việc lớn ở hai sân bay Nội Bài và Tân Sơn Nhất, các hacker thủ phạm đến từ Trung Quốc, nên ngoài tiếng Anh là ngôn ngữ cơ bản, học thêm những ngôn ngữ được sử dụng nhiều trên thế giới. CÀNG BIẾT NHIỀU NGÔN NGỮ, CƠ HỘI LÀM VIỆC CÀNG CAO.

Kỹ năng mềm

  • Kỹ năng mềm gồm giao tiếp, quản lý thời gian và quan trọng nhất là KỸ NĂNG GIẢI QUYẾT VẤN ĐỀ. Giao tiếp và trình bày là điều đặc biệt quan trọng ở một người làm công nghệ thông tin, còn kỹ năng giải quyết vấn đề phản ánh sự logic và tư duy;
  • Bạn có thể tham gia khóa học online miễn phí về giao tiếp ở Toastmasters.

Học thêm các khóa hay tự tìm tòi nghiên cứu về luật pháp: Là chuyên viên quản trị an ninh mạng, bạn chẳng khác gì so với một cảnh sát – vừa bảo vệ phòng chống tội phạm và bắt giữ tội phạm, nên hiểu biết đúng về luật nhằm đảm bảo an toàn cho doanh nghiệp, nắm bắt được lỗi sai của tội phạm là điều tất yếu.

  1. Tích lũy kiến thức thực tế từ đâu?

Phát triển chuyên môn

Bạn có thể tham gia các khóa học trên Udemy hay Coursera hoặc tham gia khóa học bảo mật An ninh mạng của chuyên gia Bùi Quang Minh tại Security Box VN.

Một số chứng chỉ giúp nhiều trong công việc của bạn

  • Chứng chỉ thực hành an toàn hệ thống (SSCP) – chứng chỉ đầu vào phù hợp cho người thực hành ít hơn một năm kinh nghiệm;
  • CompTIA Security+ – nhắm vào chuyên gia hơn 2 năm kinh nghiệm trong an ninh thông tin hoặc an ninh mạng;
  • Chứng chỉ chuyên gia bảo mật hệ thống thông tin (CISSP) – khoảng 4 năm kinh nghiệm cần để có được chứng chỉ này. Đó là chứng chỉ thường thấy nhiều trong lĩnh vực và được cho là điều kiện tiên quyết để phát triển sự nghiệp;
  • Chứng chỉ kiểm toán viên hệ thống thông tin (CISA) –  người thực hành phải có 5 năm kinh nghiệm trong kiểm toán, an ninh, kiểm soát hệ thống thông tin để đạt chứng chỉ này;
  • Chứng chỉ quản lý an ninh thông tin (CISM) – dành cho người ít nhất 5 năm làm việc kinh nghiệm trong lĩnh vực;
  • Cisco Certified Network Associate (CCNA): chứng chỉ CNTT chung, nắm giữ bởi các vai trò kỹ sư network công nghệ cao. Cisco cũng cung cấp các chứng chỉ chuyên môn, như an ninh CCNA;
  • Chứng chỉ hacker đạo đức (CEH) – thường nắm giữ bởi chuyên gia làm trong kiểm định thâm nhập hay phân tích an ninh.

Một số tổ chức, group cộng đồng tiêu biểu

  • Facebook Page
    • Dịch vụ An ninh mạng – Security Box
    • Diễn đạt Tin học- Phần mềm- An ninh mạng
    • Quản Trị & Bảo Mật Hệ Thống
  • Website
    • Diễn đàn và trang chủ của BKAV
    • Blog: securitybox.vn/blog
    • genk.vn
    • thongtincongnghe.com
    • sinhvienit.net
  • Diễn đàn uy tín trên thế giới
    • Forums.windowsecurity.com
    • Hackforums.net
    • Wilderssecurity.com
    • Bleepingcomputer.com
    • Spywarewarrior.com
    • Forums.hackerscenter.com
    • Forums.comodo.com
    • Forums.spybot.info
    • Securityforum.org
    • forums.whatthetech.com

Đi thực tập

Nếu là sinh viên năm 2, năm 3, bạn có để đăng ký thực tập một số công ty lớn sau:

  • BKAV (Bach Khoa Anti Virus): Tập đoàn công nghệ hoạt động trong các lĩnh vực an ninh mạng, phần mềm, chính phủ điện tử, nhà sản xuất smartphone và các thiết bị điện tử thông minh, cung cấp dịch vụ Cloud Computing (điện toán đám mây). BKAV đã từng nổi tiếng trong năm 2009, vì Bkis (Trung tâm an ninh Bách khoa) giúp Mỹ và Hàn Quốc, hai cường quốc thế giới về công nghệ, truy tìm ra được thủ phạm của vụ tấn công DDoS vào các web site của hai quốc gia này.
  • Trung tâm An ninh mạng Viettel: Công ty CP Công nghệ An ninh Không gian mạng Việt Nam (VNCS).
  1. Công ty, tập đoàn tiêu biểu trong ngành

Trong nước

  • Trung tâm an ninh mạng Bách khoa (BKAV) – Bách Khoa Antivirus: Nghiên cứu và tư vấn thiết kế các phần mềm, các sản phẩm trong lĩnh vực diệt virus, rà quét lỗ hổng virus trong máy tính và hỗ trợ việc cứu hộ  các máy tính trong khu vực;
  • Công ty An ninh mạng Security Box: Cung cấp dịch vụ an ninh mạng cho doanh nghiệp;
  • Công ty Cổ phần An ninh An toàn thông tin CMC: Bảo mật từ cá nhân, gia đình, doanh nghiệp và mobile;
  • Công ty Cổ phần An ninh mạng VSEC;
  • Công ty Cổ phần Công nghệ An ninh không gian mạng Việt Nam (VNCS).

Đa quốc gia

  • Kaspersky Antivirus;
  • Avira.
  1. Con đường sự nghiệp
  • Khởi đầu: Chuyên viên/kỹ thuật viên an ninh mạng;
  • Bậc trung: Cybersecurity Analyst (chuyên gia phân tích an ninh mạng),  Cybersecurity consultant (tư vấn viên về an ninh mạng), Penatration Tester (kiểm thử bảo mật), Vulnerability Tester (kiểm thử lỗ hổng);
  • Cao nhất: Cybersecurity Manager/ Administrator (quản lý/ quản trị an ninh mạng), Cyber Security Engineer (Kỹ sư an ninh mạng).
  1. Công việc liên quan
  • Chuyên viên kiểm thử;
  • Nhân viên an toàn hệ thống;
  • Nhân viên quy hoạch thiết kế mạng bảo mật.

II. Front-End Developer (Lập Trình Viên Front-End)

Bạn đã bao giờ nhìn vào trang web bạn yêu thích và thắc mắc tại sao bạn cứ phải click chuột hoài vào mà không chán không? Bạn có thấy cách nó được trình bày, cách mà các nút hoạt động khi bạn bấm vào, hay những yếu tố như âm thanh, hiệu ứng và tự hỏi: “Ẩn sâu trong giao diện đó là gì, làm sao nhà thiết kế web lại có thể làm nên một trang web tuyệt vời và xuất sắc đến thế?”, hay bạn thầm mơ ước mình làm được như họ. Đó là tất cả những công việc về lập trình front-end. Trong khi thiết kế web là để cho trang web nhìn sao cho đẹp, công việc của một front-end developer là làm sao những thiết kế đó được hiện hữu trên web đúng như ý muốn.

  1. Mô tả công việc

Theo định nghĩa Techopedia: Front-end developer là người lập trình code (mật mã) nhằm sáng tạo nên những yếu tố front-end cho một phần mềm, ứng dụng hay website.

Nghĩ đơn giản như thế này: Lập trình viên back end như một kỹ sư thiết kế và tạo ra hệ thống làm cho một thành phố hoạt động (điện, nước và hệ thống nước thải,…), trong khi lập trình viên front-end là người bày biện gây dựng những con đường và đảm bảo mọi thứ được kết nối đúng đắn để mọi người có thể sống cuộc sống của họ, nghĩa là tạo nên bộ mặt của thành phố. Họ cũng phụ trách cam đoan rằng không có sai sót ở hệ thống front-end, đồng thời đảm bảo rằng giao diện có thể chạy được trên bất kỳ nền tảng và trình duyệt nào.

Trách nhiệm

  • Tập trung vào những thứ nhắm vào phát triển về phía khách hàng;
  • Phân tích code, thiết kế và gỡ rối cho ứng dụng cùng với đảm bảo trải nghiệm của người dùng được liên tục;
  • Quản lý những gì người dùng thấy được đầu tiên ở trình duyệt;
  • Kiểm thử và sửa lỗi;
  • Chịu trách nhiệm cho thiết kế cuối cùng của trang web.

  1. Kiến thức, kinh nghiệm và kỹ năng cần có

Kinh nghiệm

Ít nhất từ 2-3 năm trong lĩnh vực.

Kiến thức

  • HTML (Hyper Text Markup Language – ngôn ngữ đánh dấu siêu văn bản) và CSS (Cascading Style Sheets – tập tin định kiểu theo tầng) là nền tảng cơ bản nhất cho coding web. Thiếu hai kiến thức và kỹ năng về 2 thứ này, chắc chắn bạn không thể tạo ra một giao diện web, và tất cả những gì bạn thấy được là mớ văn bản không chưa được định dạng trên màn hình. Thậm chí bạn không thể chèn hình vào web mà không có  HTML;
  • Ngôn ngữ lập trình JavaScript: Cho phép bạn bổ sung nhiều yếu tố tương tác cho trang web. Các trang như Pinterest sử dụng JavaScript cực kỳ nhiều để giao diện người dùng cực kỳ dễ sử dụng (trang Pinterest không bao giờ phải tải lại bất cứ khi nào bạn “pin” thứ gì đó – nhờ JavaScript cả đấy!);
  • jQuery: Một bộ gồm các plugin và phần mở rộng giúp việc lập trình với JavaScript nhanh hơn và dễ dàng hơn. Thay vì phải code mọi thứ từ đầu jQuery cho phép bạn thêm vào các thành phần đã được tạo sẵn cho dự án của bạn, và bạn có thể tùy chỉnh khi cần thiết;
  • JavaScript Frameworks (Nền tảng JavaScript): Tăng tốc lập trình trong mật mã hóa JavaScript, và có thể được sử dụng với những thư viện như jQuery để giảm bớt việc phải mật mã hóa từ đầu (from-scratch coding);
  • CSS Preprocessors (Bộ tiền xử lý CSS): Bổ sung chức năng phụ cho CSS nhằm giữ cho CSS có khả năng mở rộng và làm việc dễ dàng hơn;
  • ESTful Services và APIs: Kiến trúc nhẹ làm đơn giản hóa giao tiếp mạng lưới trên web, giúp web thể hiện tốt hơn, mở rộng tốt hơn, làm việc đáng tin cậy hơn, và dễ dàng sửa đổi hay di chuyển;
  • Responsive Design: Thay đổi bố cục trang web (đôi khi cả mặt chức năng và nội dung) thay đổi dựa trên kích cỡ màn hình và thiết bị ai đó đang sử dụng;
  • Hệ thống quản lý nội dung (Content Management Systems) và Thương mại điện tử (E-commerce Platforms): Phổ biến hiện nay là WordPress, Joomla, Drupal, và Magento.

Kỹ năng

  • Khả năng giao tiếp và ngoại ngữ tốt;
  • Kỹ năng giải quyết vấn đề;
  • Phân tích thông tin, tìm ra cách tiến hành một thiết kế tốt nhất, cách khắc phục lỗi phát triển, làm sao để mã front-end ăn ý với mã backend đang được tiến hành, lập trình;
  • Giải quyết vấn đề một cách sáng tạo.
  1. Rèn luyện những kỹ năng đó ở đâu?
  • Giao tiếp: Học các khóa đào tạo về kỹ năng giao tiếp hay học online miễn phí trên Toastmasters;
  • Ngoại ngữ: Một trang giao diện web có thể tiếp cận được với nhiều người là khi định dạng trang web có nhiều ngôn ngữ khác nhau. Đồng thời học tốt ngoại ngữ giúp bạn tiếp thu nhiều thuật ngữ chuyên ngành khó nhằn mà tiếng Việt khó diễn tả được. Chứng chỉ IELTS từ 6.5 trở lên, TOEFL, hay chứng chỉ Cambridge như FCE, CAE có thể giúp bạn tăng cơ hội được nhận việc.
  1. Tích lũy kiến thức thực tế từ đâu?
  • Tham khảo các khóa học online sau đây:
  • Tự thiết kế các trang web đơn giản: Không điều gì có thể khiến bạn trở thành một front-end developer giỏi ngoài việc thực hành. Vì khi chính mình làm mình mới biết mình sai chỗ nào, đồng thời rèn luyện sự sáng tạo;
  • Đi thực tập ở các công ty: Hiện tại rất nhiều công ty từ bé đến lớn đều tuyển vị trí này (nhu cầu website quá nhiều rồi). Đi thực tập vào năm 3 hoặc năm 4, thậm chí có thể sớm hơn vì bản chất công việc này tự học là chính;
  • Tham gia các diễn đàn lớn như Techtalk, Techmaster, itviec.com.
  1. Công ty tiêu biểu trong ngành

Pinterest: Kết hợp giữa pin (những chiếc ghim để gắn ảnh hay ghi chú trên bảng) và interest (yêu thích): là một trang web chia sẻ hình ảnh với giao diện lấy cảm hứng từ chiếc bảng truyền thống và những chiếc đinh ghim, bao gồm những hình ảnh đẹp tuyệt mà người dùng không thể rời mắt được. Pinterest chính là công ty luôn được liệt kê đầu bảng về mảng Front-End

  1. Con đường nghề nghiệp

Fresher/Junior Developer → Senior Developer → Lead Developer/Architect → Developer/ Product Manager → Senior Leadership

Tham khảo chi tiết về con đường tiến triển

  1. Công việc liên quan
  • Chuyên viên thiết kế web: Mảng back-end developer, full-stack developer;
  • Chuyên viên thiết kế UI/UX là chuyên viên lập trình front-end tập trung vào giao diện người dùng và trải nghiệm người dùng.

III. App Developer (Chuyên Viên Phát Triển Ứng Dụng)

Một dịp nóng như chảo dầu, cả đám có ý trốn nóng ở Đà Lạt. Cơ mà chả ai từng đi Đà Lạt trước đó, mà mùa này sợ bị chặt chém. Nguyên bọn tính sơ sơ chi phí: phương tiện đi lại, khách sạn, chỗ ăn uống, mua sắm đâu, eo ôi nhức cả đầu. Không biết khách sạn này tốt không, khu nào sống ảo đẹp, nơi nào rẻ mà ăn no căng. Tự dưng đứa sáng dạ nhất cả đám nói: máy tao có ứng dụng đặt đi xe tàu giá rẻ nè, Foody và Địa điểm ăn uống có cả chục bài review chỉ kinh nghiệm này, sợ gì. Cả đám thở thào nhẹ nhõm, nếu không có ứng dụng là còn tung hỏa mù tiếp. Qua ví dụ này, bạn nghĩ rằng một chuyên viên ứng dụng cần phải có kỹ năng và kiến thức gì để tạo nên những ứng dụng tuyệt vời như vậy?

  1. Mô tả công việc

Chuyên viên phát triển ứng dụng chuyển tải các yêu cầu phần mềm thành ngôn ngữ lập trình có thể làm việc được và duy trì và phát triển chương trình sử dụng trong doanh nghiệp.

Đa phần chuyên môn ở một lĩnh vực phát triển cụ thể: ứng dụng điện thoại di động, phần mềm tính toán, phần mềm tiện ích văn phòng hay phần mềm đồ họa, có hiểu biết sâu tận ít nhất một ngôn ngữ máy tính.

Các app có thể được viết cho một hệ điều hành cụ thể, như Windows và Android, hay cho nhiều nền tảng khác, cho máy tính và thiết bị điện thoại.

Công việc cụ thể của một chuyên viên phát triển ứng dụng bao gồm:

  • Xây dựng chương trình làm việc chi tiết thông qua thảo luận với khách hàng;
  • Đơn giản hóa các đặc tả và dịch logic thành ngôn ngữ lập trình;
  • Đề ra các giải pháp thích hợp với các vấn đề gặp phải;
  • Vận hành kiểm tra và cài đặt chương trình vào sản xuất;
  • Phản ứng với các vấn đề và chỉnh sửa chương trình khi cần thiết;
  • Đánh giá và tăng độ hiệu quả của chương trình;
  • Thực hiện kiểm tra chấp thuận người dùng (user-acceptance) đảm bảo chương trình  có thể được sử dụng dễ dàng, nhanh chóng và chính xác;
  • Viết các tư liệu chi tiết cho vận hành chương trình của người sử dụng và nhà điều hành máy tính;
  • Tham khảo các hướng dẫn sử dụng, báo cáo định kỳ và báo cáo kỹ thuật để học hỏi hướng mới phát triển chương trình và củng cố chương trình hiện tại và kiến thức;
  • Cập nhật, sửa chữa, điều chỉnh và phát triển phần mềm sẵn có và ứng dụng thông thường.

  1. Kiến thức, Kỹ năng & Kinh nghiệm cần có

Kinh nghiệm

  • Thành thục với máy tính và phần mềm tiêu chuẩn là điều cơ bản, thêm kinh nghiệm làm việc thực tế thông qua các kỳ thực tập, công việc bán thời gian trong lĩnh vực CNTT;
  • Bạn cũng có thể thử tham gia dự án tại trường, các doanh nghiệp địa phương hay tổ chức từ thiện liên quan đến phát triển chương trình, lập trình, ngôn ngữ máy tính;
  • Tự thiết kế các ứng dụng của riêng mình, và mời mọi người dùng thử. Hiện nay, các ứng viên thường được yêu cầu nộp bản dùng thử, đặc biệt khi vào ngành công nghiệp trò chơi.

Một số chứng chỉ liên quan như:

  • Quản trị kinh doanh;
  • Kỹ sư phần mềm/ khoa học máy tính;
  • Công nghệ thông tin;
  • Toán – Tin;
  • Nếu bạn không có bằng cấp liên quan, có thể bù đắp bằng các khóa học IT bên ngoài. Mấu chốt ở đây là bạn cần thể hiện tâm huyết và đam mê với ứng dụng CNTT, điều này sẽ thuyết phục được nhà tuyển dụng mà bạn mơ ước.

Các khóa học online cũng là lựa chọn “ngon, bổ, rẻ”, bạn có thể tham khảo tại các website nổi tiếng tại đây:

Kỹ năng

  • Kỹ năng lập trình tốt và kỹ thuật liên quan;
  • Óc nhanh nhạy và sáng tạo;
  • Giải quyết vấn đề một cách logic;
  • Khả năng phân tích, chi tiết;
  • Làm việc tốt dưới áp lực;
  • Kinh nghiệm về phương thức phát triển như waterfall và agile;
  • Kỹ năng giao tiếp – truyền đạt thông tin đến những đồng nghiệp không làm trong công nghệ thật chính xác và dễ hiểu;
  • Hiểu biết về quy trình và ràng buộc doanh nghiệp.
  1. Rèn luyện những kỹ năng này ở đâu?
  • Ngoại ngữ: Học online qua các ứng dụng như Duolingo, Coursera,… (hãy nhớ một ứng dụng xuất sắc là khi ứng dụng đó tồn tại với nhiều phiên bản ngôn ngữ khác nhau);
  • Kỹ năng mềm: Toastmasters;
  • Kỹ năng giao tiếp: Tham gia các câu lạc bộ, đội nhóm tại trường, các hoạt động ngoại khóa sẽ giúp bạn tự tin và diễn đạt tốt hơn ý tưởng của mình trong tương lai.
  1. Tích luỹ kiến thức thực tế ở đâu?

IT là một lĩnh vực luôn khoác lên mình màu áo mới, nên bạn luôn phải chạy kịp với phát triển của ngành công nghiêp này. Những chuyên viên phát triển ứng dụng phải liên tục cập nhật kiến thức và kỹ năng bằng cách tham gia các khóa học tài trợ bởi nơi tuyển dụng họ hay qua nhà cung cấp phần mềm (software vendor).

Một số nhà tuyển dụng lớn cho các chương trình tốt nghiệp theo khung – nơi bạn sẽ gặt hái kinh nghiệm thông qua các dự án liên quan đến nhóm trong các lĩnh vực làm việc khác nhau.

Một số công ty còn cho các buổi huấn luyện liên tục, thậm chí các khóa học trong nhà hay ở ngoài, dù bạn là người tự làm chủ hay làm cho một nhà tuyển dụng nhỏ, bạn cần suy xét giá cả và thời gian cho việc chịu trách nhiệm với khóa huấn luyện.

Cập nhật thông tin mới nhất và các chứng chỉ liên quan đến ngành công nghiệp: Trung tâm Phân tích và lập trình (IAP); Tổ chức SFIA: công cụ phát triển kỹ năng và nhận biết cơ hội phát triển sự nghiệp.

Một số khóa huấn luyện có cấp bằng cho chuyên viên ứng dụng bao gồm:

  • Microsoft Certified Solutions Developer (MCSD): Chuyên viên phát triển giải pháp chứng nhận bởi Microsoft;
  • Oracle Certified Associate/Professional/Master Java: Chứng nhận tương đương của Oracle/ Master Java;
  • Oracle PL/SQL Developer Certified Associate/Professional.
  1. Con đường sự nghiệp

Lập trình viên (phân tích hệ thống hay thiết kế hệ thống) → Chuyên viên phát triển ứng dụng cấp cao hay giám sát → Chuyên viên phân tích hệ thống, hay được thăng chức đến vị trí quản lý ứng dụng.

  1. Công ty, tập đoàn tiêu biểu
  • Apple
  • Ovi Store (Nokia)
  • Android Market (Google)
  1. Công việc liên quan
  • Phát triển ứng dụng Android;
  • Phát triển ứng dụng iOS;
  • Phát triển game di động.

IV. Data Scientist (Nhà Khoa Học Dữ Liệu)

Nhà khoa học dữ liệu là sự kết hợp của một nhà toán học, nhà khoa học máy tính và người phát hiện xu hướng. Nghề này có thể giúp bạn vươn cao trong giới doanh nghiệp và CNTT, được khao khát và săn đón.

  1. Mô tả về công việc

Gọi là nhà khoa học nhưng không làm trong phòng thí nghiệm, các doanh nghiệp cần bạn để giải quyết mớ dữ liệu hỗn độn phức tạp. Data Scientist – nhà khoa học dữ liệu là một nhánh mới của chuyên gia phân tích dữ liệu. Theo đánh giá của Harvard Business Review, đây là ngành sexy nhất của thế kỷ 21. Sexy là vì đây là ngành thực sự hấp dẫn và thu hút người, tuy nhiên không phải ai cũng làm được.

Kể từ khi thuật ngữ “big data” xuất hiện, thông tin trở thành một “mỏ vàng” cần được khai thác giúp đẩy mạnh lợi nhuận. Doanh nghiệp cần một người đào sâu và lật tung những hiểu biết sâu sắc thông qua phân tích, tạo ra giá trị từ dữ liệu, xử lý dữ liệu thành những insight giá trị.

Công việc cụ thể:

  • Thu thập lượng lớn dữ liệu và biến chuyển thành format sử dụng được;
  • Giải quyết những vấn đề liên quan đến doanh nghiệp sử dụng kỹ thuật điều khiển dữ liệu (data-driven technique);
  • Làm việc với nhiều ngôn ngữ lập trình đa dạng, bao gồm SAS, R và Python;
  • Nền tảng vững chắc về thống kê: test và phân bố thống kê;
  • Khả năng phân tích xuất sắc bao gồm: machine learning, deep learning và text analytics;
  • Trao đổi và hợp tác với người trong giới CNTT và doanh nghiệp;
  • Tìm kiếm cho thứ tự và pattern trong dữ liệu, cũng như phát hiện xu hướng mấu chốt cho doanh nghiệp.
  1. Kiến thức, kinh nghiệm cần có

Kinh nghiệm

Data scientist được ví như những chú kỳ lân, đủ để hiểu mức độ “quý hiếm” của họ ra sao rồi đấy. Các doanh nghiệp từ tầm cỡ đến nhỏ đều khao khát data scientist.

Bản chất của ngành này là sự kết hợp giữa kinh tế và khoa học, ai nắm bắt và nhạy bén tốt thì sẽ thành công trong ngành.

Kỹ năng

  • Ngoại ngữ: Tiếng Anh tốt để đọc được thêm nhiều tài liệu chuyên ngành, tham gia các khóa học online và đi du học;
  • Khả năng giải quyết vấn đề tốt;
  • Kiên nhẫn: Mỗi ngày, có một khối lượng dữ liệu lớn luôn chờ đợi bạn. Vì thế phải thực sự kiên nhẫn để gỡ từ từ những mớ rối;
  • Giao tiếp tốt:
    • giao tiếp với đội doanh nghiệp: hiểu rõ về sản phẩm cũng như yêu cầu, từ đó tìm ra mong muốn ẩn sâu của của khách hàng (insight);
    • giao tiếp với đội kỹ sư: áp dụng mô hình của mình vào hệ thống, hoặc để đề xuất họ tổ chức/ hệ thống dữ liệu cho mình sử dụng;
    • trình bày/ giải thích insight cho các bên liên quan hiểu;
  • Sự tò mò không ngừng về cách vận hành mọi thứ: data scientist đòi hỏi các kiến thức liên ngành rất nhiều;
  • Sự nhạy bén: việc khám phá các “mỏ vàng” thông tin chưa cấu trúc để biến giúp công ty thu được lợi nhuận lớn đòi hỏi con mắt tinh tường  vô cùng;
  • Khả năng lập trình phần mềm tốt.

Kiến thức chuyên môn

Vai trò của data scientist cần nền tảng học thuật. Các nhà tuyển dụng cần những người vừa là lập trình viên và là người phối hợp trong đội tốt. Nếu muốn tiến xa hơn trong ngành, bạn có thể học lên thạc sĩ hoặc du học.

Một data scientist cần hiểu biết vững chắc về:

  • Thống kê và machine learning;
  • Ngôn ngữ lập trình  như SAS, R hay Python;
  • Database như MySQL and Postgres;
  • Data visualization và báo cáo kỹ thuật;
  • Hadoop và MapReduce.

Còn ở môi trường đại học cao đẳng thì những môn học cần đầu tư là:

  • Đại số tuyến tính và xác suất thống kê;
  • Đạo hàm tích phân;
  • Machine learning;
  • Datamining;
  • Ngôn ngữ lập trình: tiếp xúc trước với C/C++ và Java;
  • Làm quen với JavaScript, viết được web đơn giản, vẽ được đồ thị, biểu đồ;
  • Hiểu biết về System: Linux, Bash.
  1. Rèn luyện những kỹ năng từ đâu?

Tham gia các khóa học lập trình của Udacity, Treehouse, Codeacademy, Code Avenger…

  1. Tích lũy kiến thức thực tế từ đâu?
  • Tư liệu trong nước: Nếu tiếng Anh bạn ban đầu còn kém, bắt đầu với các trang web và diễn đàn trong nước. Bạn có thể đọc nhiều bài viết hay cụ thể trên Itviecblog;
  • Tài liệu nước ngoài:
    • Datasciencemasters.org: cung cấp các khóa học từ cơ bản đến nâng cao;
    • Khóa học về Machine Learning của Andrew Ng, Stanford;
    • Kaggle.com: không thể bỏ qua nếu bạn muốn áp dụng machine learning vào thực tế;
  • Các group trên Facebook: Al Valley, Artificial Intelligence và Deep Learning;
  • Đọc sách;
  • Thực tập tại các công ty;
  • Tham gia các buổi gặp gỡ những người cùng ngành, học hỏi từ họ.
  1. Công ty tiêu biểu trong ngành

Thực ra vì đây là ngành mới mẻ, nên bài viết chỉ xin liệt kê các công ty và tập đoàn lớn tuyển dụng data scientist, bạn có thể tham khảo đường link dưới đây:


  1. Tiến triển sự nghiệp

Con đường để trở thành một data scientist rất dài, bạn cần nhiều năm để tích lũy dần.

Ở một số nơi, data scientist có thể gộp chung với kỹ sư phần mềm và data analyst, có thể chia nghề này thành 2 nhóm:

  • Nhóm 1: Gần với Data Analyst, phân tích dữ liệu để tìm giá trị ẩn sâu trong đó;
  • Nhóm 2: Gần với Kỹ Sư Phần Mềm, xử lý/ lưu trữ dữ liệu, viết code/ thuật toán cho các sản phẩm dữ liệu của công ty.
  1. Những công việc liên quan
  • Data/Report Analyst;
  • Database Developer (chuyên viên phát triển dữ liệu).

V. QA/QC Engineer (Kỹ Sư Kiểm Định/ Kiểm Soát Chất Lượng)

Chất lượng, chất lượng và chất lượng. Nhiệm vụ của một kỹ sư QA/QC là làm sao để phần mềm sử dụng được tốt và sống được trên thị trường công nghệ thông tin khắc nghiệt này.

  1. Mô tả công việc


  • Phòng ngừa những lỗ hổng ngay từ đầu. QA là hoạt động quản lý chủ động được sử dụng để đảm bảo chất lượng cho một sáng kiến CNTT;
  • Trao đổi với đội ngũ để xem xét những rủi ro của dự án, đồng thời đề ra các biện pháp khắc phục;
  • Kiểm soát chất lượng, quyết định mức độ chất lượng trong các giải pháp ICT đã được chuyển đến (delivered ICT solution).


  • QC bao gồm mọi kỹ thuật và hoạt động vận hành được dùng để hoàn thành các yêu cầu chất lượng được chấp thuận bởi khách hàng hay bên liên quan trước khi công việc dự án được bắt đầu;
  • Kiểm tra hoạt động xuất ra để đạt được mức chất lượng được ấn định, quy trình phù hợp với dự án và được tiến hành đúng đắn;
  • Đối chiếu với yêu cầu của khách hàng trong giai đoạn phát triển dự án gồm kỹ thuật, cấu trúc hướng dẫn, test và kiểm tra code nhằm đảm bảo giải pháp đáp ứng đòi hỏi đã được chấp thuận.

Công việc cụ thể

  • Kiểm tra hằng ngày, test phạm vi đánh giá và đặc tính cần thiết để đạt được yêu cầu trong bản vẽ (drawing) và thông số kỹ thuật cho tất cả các công trình theo hợp đồng thực hiện ON hoặc OFF site;
  • Kiểm tra và đánh giá cho các quy trình liên quan đến chất lượng ở khu vực và đảm bảo mỗi khâu được phê duyệt và kiểm tra các kế hoạch test;
  • Phối hợp với đại diện bên tư vấn và Site En-charge cho kiểm tra và gặp gỡ về các khó khăn trong chất lượng bao gồm cả báo cáo các sai phạm về quy trình thực hiện;
  • Báo cáo với quản lý QA/QC, kiểm soát và thăm dò mọi hoạt động liên quan đến hệ thống quản lý chất lượng;
  • Xử lý các tài liệu QA/QC của toàn bộ dự án bao gồm các chứng nhận, hiệu chuẩn, kết quả test, các báo cáo sai phạm về quy trình thực hiện và hướng dẫn/ quan sát địa điểm, các tài liệu QA/QC và các tư liệu được gửi đến. Quan trọng là chịu trách nhiệm cho các báo cáo về sai phạm trong quy trình và Site Instruction;
  • Chịu trách nhiệm cho chất lượng và tay nghề nhân lực trong mọi hoạt động, kiến thức sâu sắc về mọi khâu trong tương tác với các hoạt động đa ngành;
  • Phát triển phương pháp thi công trong hoạt động gồm tiếp cận rủi ro và phân tích an toàn môi trường, kế hoạch và bảng kiểm test kiểm định dựa trên đặc trưng của dự án;
  • Thực hiện kiểm soát nội bộ ở địa điểm đã được định trong Kế hoạch quản lý dự án;
  • Giữ liên lạc với bên Kỹ sư Kỹ thuật để đệ trình các tài liệu nộp cho bên tư vấn.

Tóm lại, nếu có QA/QC giỏi thì sản phẩm mới có thể sống được, tức là sản phẩm dùng được, nhiều người tin cậy.

  1. Kiến thức & Kinh nghiệm cần có

Kinh nghiệm

4 – 5 năm (vì trước đó có thể bạn phải tập làm kiểm tra phần mềm hay phát triển phần mềm trước).

Kiến thức chuyên môn

Thực ra kỹ sư QA/QC liên quan đến mảng phần mềm, nên chứng chỉ đại học/ cao đẳng liên quan đến Kỹ sư phần mềm là điều đương nhiên.

  • QA
    • Các qui trình phát triển phần mềm: Vì bản chất của QA là kiểm định chất lượng – phòng ngừa những sai sót từ ban đầu, nên phải nắm vững được thì mới tránh được sai phạm;
    • Các chuẩn/chứng chỉ về qui trình phát triển phần mềm;
    • Công nghệ phần mềm.
  • QC
    • Công nghệ kiểm tra phần mềm (Software Testing);
    • Công nghệ phần mềm (Software Engineering).

Kiến thức nghiệp vụ chuyên ngành

Tích luỹ càng nhiều càng tốt như Hệ quản trị doanh nghiệp (ERP), Thương mại điện tử (e-Commerce), Tiếp thị số (Digital Marketing), Nhà băng (Banking)… Những cái này sẽ được tích lũy dần theo kinh nghiệm qua năm tháng: Thực ra quản lý chất lượng là sự kết hợp của nhiều lĩnh vực khác nhau, quan trọng là đảm bảo ĐẦU RA CỦA SẢN PHẨM nên để cam đoan được chất lượng sản phẩm và quảng bá sản phẩm được tốt hơn.

Kỹ năng cần có

  • Trước hết luôn ưu tiên ngoại ngữ tốt và giao tiếp tốt;
  • QA
    • Đặc tả các tiêu chí: Để đưa ra các quy trình, biểu mẫu, tài liệu, hướng dẫn dễ hiểu, dễ thực hiện và hiệu quả, giúp cho đội ngũ CNTT làm việc ăn ý và TRÁNH SAI SÓT, đồng thời sau này dễ kiểm tra đối chiếu;
    • Giao tiếp: Sau khi đưa ra quy trình, hướng dẫn, tài liệu, biểu mẫu để cả đội thực hiện thì QA sẽ phải nhắc nhở, thúc đẩy cả đội hoàn thành công việc. QA mà không biết nói năng sao để mọi người hợp tác thì ắt hẳn là tiêu luôn sản phẩm rồi.
  • QC
    • Phân tích vấn đề: Vì họ phải tìm hiểu về hệ thống, phân tích hướng dẫn, biểu mẫu  về hệ thống; thực hiện các kiểm thử liên quan đến phần mềm, sửa chữa những sai sót trong lúc kiểm tra;
    • Suy nghĩ logic: Tất nhiên vì khi có kiến thức về Công nghệ phần mềm tức là bạn phải có nền tảng logic chắc cú rồi;
    • Tỉ mỉ với các tương tác & dữ liệu;
    • Phân vai: Một sản phẩm không thể hoàn thành tốt được nếu không ai trong nhóm biết được mình phải làm gì;
    • Cẩn thận, kỹ tính;
    • Khả năng code tốt.
  1. Rèn luyện những kỹ năng này ở đâu?
  • Giao tiếp: Học các lắng nghe, đặt câu hỏi và tập cách làm sao có thể nói chuyện với bất kỳ ai. Trong lĩnh vực này, trước khi chuẩn bị gặp gỡ với một bên chuyên môn nào, học hỏi cả những từ ngữ chuyên môn và ngữ cảnh để giao tiếp cho thích hợp;
  • Coding: Tham gia các khóa học online như edX, Udacity, Udemy…
  1. Tích luỹ kiến thức thực tế ở đâu?

Học hỏi từ những QA/QC cấp trên và cả những người đồng đội của mình.

Liên tục làm và khám phá những cái mới: muốn biết được sai lầm của người khác thì chính mình phải tự biết mình từng mắc lỗi sai gì. Liên tục làm và tự sửa lại sai lầm, tự viết cho mình quy trình, tài liệu rồi tự làm để xem thiếu sót.

Các trang học dành cho QA/QC:

  • QA
    • CMMI Wikipedia: Tất tần tật mọi thứ về chứng chỉ CMMI cần thiết cho PQA (CMMI là quy trình quản lý sẵn có) (Process Quality Assurance- Kiểm định Chất lượng quy trình – nhiệm vụ chính của QA);
    • Wibas: Hướng dẫn chi tiết về công việc và tư liệu tham khảo;
    • CMMI Consultant Blog;
    • Isocertsolutions: Bài viết chi tiết 7 bước thực hiện công việc cho QA;
    • Quality Assurance and Measurement.
  • QC
    • Software Testing Help: Kiến thức về testing từ cơ bản đến nâng cao;
    • Tutorials Point: Kiến thức về testing nâng cao;
    • Test this Blog with Eric Jacobson;
    • Automation Beyond: Kiến thức về automation test;
    • Rainforest QA blog;
    • Software QA Test;
    • Software Testing Fundamentals;
    • Testing VN: Diễn đàn về kiểm thử phần mềm bằng tiếng Việt rất hữu ích;
    • Guru 99: Nhiều kiến thức ở các lĩnh vực khác nhau, kể cả testing cho những bạn mới bắt đầu.

Đi thực tập ở các công ty: Bạn có thể xin đi làm thực tập sinh ở các công ty dù ngoài lĩnh vực hay trong lĩnh vực. Đi thực tập ở doanh nghiệp ngoài lĩnh vực vẫn có thể dạy bạn được rất nhiều thứ, đặc biệt là các bạn bên lĩnh vực QC, vì QC là sự kết hợp không những kiến thức trong CNTT, mà còn trong Quản trị doanh nghiệp, Nhà băng, Thương mại điện tử…

  1. Công ty tiêu biểu trong ngành
  • FSOFT;
  • TMA Solutions (công ty tin học Tường Minh);
  • Công ty cổ phần Global Cybersoft Viet Nam (GCS);
  • Công ty TNHH KMS Technology Việt Nam (KMS);
  • Công ty TNHH Lưỡng Toàn Rạng Công (Logigear Vietnam);
  • Công ty Cổ phần Giải Pháp Phần Mềm Bình Minh (Sunrise Software Solutions).
  1. Con đường sự nghiệp

QA: Tester chưa có kinh nghiệm → Test Design → Test Lead/QA Lead, Test Manager/ QA Manager.

Tùy vào hướng đi thì họ có thể chọn làm quản lý hay nếu yêu thích kỹ thuật sẽ chọn làm chuyên gia test và đóng góp nhiều cho sản phẩm.

QC: Có thể bắt đầu từ vị trí chuyên viên phát triển (Developer) và chuyển sang làm QC Engineer (Kỹ sư quản lý chất lượng).

  1. Các công việc liên quan
  • Chuyên viên phát triển phần mềm (Software Developer);
  • Test Project Manager (Quản lý Dự án Test).

VI. Web Developer (Chuyên Viên Phát Triển Web)

Xưa xửa xừa xưa, để kiếm được tư liệu cho công việc hay học tập thật là khó khăn. Nào là phải tìm hết các báo, vào lục tung thư viện. Đi kiếm việc thì ôi thôi, mua hết tờ báo này đến tờ báo nọ, rồi còn phải đu theo mấy cột điện xem có tuyển việc không? Muốn coi phim hay đi học thêm kỹ năng thì phải ra ngoài? Kể từ khi có Internet, “cả nguồn sống thu bé lại vừa bằng một cái click chuột”. Làm sao doanh nghiệp có thể thu hút khách hàng quan tâm và tuyển được nhân lực? Hãy để các chuyên viên phát triển web lo nhé!

  1. Mô tả công việc

Chuyên viên phát triển website xây dựng, duy trì website và ứng dụng web. Dù công việc của họ tập trung đa phần vào phần mềm và cơ sở dữ liệu trong web (back end), một số nhà phát triển web làm việc trên giao diện và thiết kế hình ảnh (front-end), còn lại kết hợp cả 2 (full-stack development).

Khi làm việc ở agency hay làm freelance, công việc của một chuyên viên phát triển web là tạo sản phẩm đáp ứng nhu cầu khách hàng. Công việc có thể đặc biệt đa dạng với vô vàn dự án làm cùng lúc và nhiều cuộc họp với khách hàng thỏa thuận nhu cầu và hoàn thành theo tiến độ. Trong mọi hoàn cảnh thì nhiệm vụ cơ bản của một chuyên viên phát triển web là tạo ra những ứng dụng đáng tin cậy và có độ phản hồi cao, dễ dàng  tiếp cận được. Tùy vào mục đích công việc mà sẽ có vị trí cụ thể cho từng thứ.

Công việc cụ thể bao gồm:

  • Viết code bằng một hay nhiều ngôn ngữ lập trình hay lệnh (như PHP hoặc JavaScript);
  • Lên kế hoạch và làm mẫu thử cho ứng dụng mới;
  • Thiết kế nền tảng cho thành phần của một ứng dụng;
  • Quyết định về công nghệ và ngôn ngữ tốt nhất cho dự án;
  • Kiểm tra trang và ứng dụng trên các trình duyệt và môi trường khác nhau;
  • Giải quyết những lỗi trong lúc kiểm thử hay người dùng phản hồi lại;
  • Sửa chữa lỗi ở những dự án đang tồn tại;
  • Kiểm tra tính năng mới cẩn thận nhằm đảm bảo chúng thực hiện đúng nhiệm vụ trong mọi trường hợp;
  • Chạy các thử nghiệm quản lý kinh doanh;
  • Đánh giá code của đồng nghiệp;
  • Xây dựng và kiểm tra Giao Diện Lập Trình Ứng Dụng (Application Program Interface) cho ứng dụng để trao đổi nghiên cứu dữ liệu;
  • Phối hợp và đóng góp cho các dự án mã nguồn mở (Open Source);
  • Gặp gỡ chuyên viên thiết kế, chuyên viên phát triển và nhân viên dự án để cập nhật tiến trình;
  • Ghi nhận yêu cầu từ khách hàng và người dùng;
  • Học hỏi và kiểm tra công nghệ mới, nền tảng và ngôn ngữ;
  • Cập nhật xu hướng và cải tiến mới trong phát triển web;
  • Xây dựng và duy trì cơ sở dữ liệu;
  • Xây dựng lại câu trúc và tối ưu hóa code đang tồn tại;
  • Soạn thảo mã để những nhà phát triển khác có thể hiểu và đóng góp vào;
  • Tham dự và nói ở các hội nghị phát triển web và workshop;
  • Thiết kế kiến trúc thông tin trong một ứng dụng.

  1. Kiến thức, kỹ năng và kinh nghiệm cần có

Kiến thức chuyên môn

Kiến thức kỹ thuật trong lĩnh vực như bộ phận chăm sóc  khách hàng,ngôn ngữ bộ phận máy chủ, nền tảng ứng dụng web và hệ thống quản lý cơ cở dữ liệu, cũng như kinh nghiệm với hệ thống quản lý phiên bản và hiểu biết sâu rộng và kiến trúc của ứng dụng web, bảo mật web và mật mã hóa (encryption).

Bằng cấp chuyên môn các lĩnh vực:

  • Khoa học máy tính;
  • Tin học;
  • Kỹ sư phần mềm;
  • Thiết kế và phát triển web.

Bạn cũng có thể tích lũy kiến thức qua các khóa học ngắn bền ngoài như phát triển ứng dụng web trong PHP và MySQL, chứng chỉ quốc gia cho môn học như khoa học máy tính.

Kỹ năng

  • Chú trọng vào chi tiết;
  • Tiếp cận logic khi giải quyết vấn đề;
  • Khả năng làm việc độc lập và phối hợp nhóm;
  • Kinh nghiệm về phương pháp phát triển (như agile và waterfall);
  • Khả năng quản lý hàng tá nhiệm vụ phức tạp và đạt được deadline;
  • Kỹ năng giao tiếp tốt.

Kinh nghiệm

Một số nhà tuyển dụng yêu cầu chứng chỉ chuyên nghiệp trong lĩnh vực này. Ví dụ, họ có thể tìm kiếm chứng chỉ Oracle cho người làm việc với cơ sở dữ liệu Oracle hay chứng chỉ Microsoft cho những ai xây dựng ứng dụng web trên .NET.

  1. Rèn luyện những kỹ năng này ở đâu?
  • Tham gia hội nghị, workshop, trại huấn luyện, những sự kiện liên quan đến phát triển web, nền tảng và công nghệ;
  • Tham gia các khóa học online tại Udemy, Udacity hay đi học thêm bên ngoài như học ở trung tâm Green Academy ở TPHCM;
  • Ngoại ngữ: Tiếng Anh tốt để có thể đọc được thêm các tài liệu và sách liên quan, quan trọng hơn là có những từ ngữ chuyên ngành mà tiếng Anh có thể diễn đạt dễ dàng và riêng biệt so với tiếng Việt, và tham gia các khóa học online dễ dàng. Một giao diện web tốt là khi có thể mang nhiều phiên bản ngôn ngữ khác nhau để bất kỳ ai cũng có thể tiếp cận;
  • Kỹ năng giao tiếp: Giao tiếp tốt giúp bạn trao đổi và đáp ứng nhu cầu của khách hàng ở mọi đối tượng, đồng thời tạo cơ hội cho bạn mở rộng mối quan hệ với những người cùng lĩnh vực và các bộ phận khác trong lĩnh vực CNTT.
  1. Tích lũy kiến thức thực tế từ đâu?
  • Cách hay nhất để có được kinh nghiệm chính là chứng nhận về việc đã thực tập một năm trong ngành (ở trường đại học) hay tự đi thực tập và xin nơi đó cấp cho chứng chỉ. Mặt khác, bạn có thể lấy kinh nghiệm qua tình nguyện, xây dựng trang và ứng dụng của riêng mình;
  • Tham gia cộng đồng phát triển web và cộng đồng coding ở đại học;
  • Tham gia vào dịch vụ hay cộng đồng khởi nghiệp ở đại học, khi nơi đó thường có các workshop và sự kiện coding;
  • Tham gia ‘hackathons’, hội nghị và workshop;
  • Tham dự các buổi gặp mặt cho các ngôn ngữ lập trình khác nhau và những nhóm liên quan đến lĩnh vực;
  • Đóng góp vào phần mềm nguồn mở.

Nhớ lưu giữ tất cả những công việc mình từng làm vào một portfolio. Dùng các nhà kho mã (code repositories) như GitHub và Bitbucket để cho thấy bạn làm được những gì.

  1. Công ty tiêu biểu trong ngành

Trong nước

  • TRUST.vn
  • Website 500K: Cung cấp dịch vụ giá trẻ cho các doanh nghiệp nhỏ
  • Công ty Trí Tuệ Việt
  • Công ty V&A
  • Công ty của Đơn vị Nhơn Hòa
  • Công ty URL

Đa quốc gia

Grey Global Group

  1. Con đường sự nghiệp

Chuyên viên phát triển web (vị trí nhỏ) → Chuyên viên cấp bậc trung → Chuyên viên cấp cao (có thể quản lý một số chuyên viên nhỏ) → Chuyên viên phát triển hàng đầu, hoặc technical lead hay trưởng phòng phát triển → Giám đốc kỹ thuật (CTO) hay phó chủ tịch công nghệ.

Một số chuyên viên phát triển web chọn thay đổi sự nghiệp và rời xa công việc phát triển thực hành để đi vào vai trò kỹ thuật chiến lược hơn như phân tích hệ thống, phân tích doanh nghiệp, kiến trúc sư giải pháp hay tư vấn kỹ thuật. Những vai trò này đòi hỏi kỹ năng quản lý dự án, giao tiếp và suy nghĩ chiến lược tốt.

Qua thời gian, các chuyên viên phát triển web thường mở rộng kiến thức lập trình nhưng cải thiện bản thân là chuyên gia trong một hay hai ngoại ngữ, thử nghiệm cải tiến mới và đưa nó vào tổ chức nếu thấy phù hợp.

Bạn có thể giúp bản thân tiến xa hơn trong công việc bằng cách chủ động học ngoại ngữ mới, tham gia giúp đỡ các dự án khác, dẫn đầu các dự án mới, hỗ trợ nhân viên mới và tham dự gặp gỡ khách hàng.

Tiến triển sự nghiệp sẽ nhanh hơn trong một tổ chức nhỏ: chắc hẳn bạn sẽ đương đầu với nhiều trách nhiệm hơn. Tuy nhiên, thăng tiến thì dễ thấy được hơn và ít khuôn khổ hơn.

  1. Các công việc liên quan
  • Front-End Developer;
  • Back-End Developer;
  • Full-Stack Developer;
  • UI/UX Designer: Thiết kế giao diện người dùng/ Thiết kế về trải nghiệm người dùng.

VII. Bridge System Engineer (Kỹ Sư Cầu Nối)

Giả sử địa điểm A là khách hàng và B là một đội ngũ chuyên viên CNTT. Khách hàng thì hầu như không biết gì về kiến thức chuyên môn về CNTT, nhưng họ có nhu cầu – còn những chuyên viên, họ có kinh nghiệm kỹ năng. Vậy ai sẽ là người giúp hai bên đều đạt được mục đích và lợi nhuận? Đó chính là Kỹ sư cầu nối – bridge system engineering – người xây dựng “chiếc cầu” nối giữa hai bên.

  1. Mô tả công việc

Chức năng chính của Kỹ sư cầu nối là kết nối giữa khách hàng và người làm kỹ thuật, chịu trách nhiệm truyền đạt yêu cầu, dung hoà cách làm việc giữa các quốc gia có văn hoá khác nhau.

Trong một số trường hợp khác, kỹ sư cầu nối là người quản lý dự án hoặc quản lý phát triển, nhưng công việc chủ yếu tập trung vào tương tác giữa bên khách hàng và đội ngũ CNTT.

Đây là công việc chỉ có trong các công ty outsourcing, tùy tính chất dự án mà bạn có thể tham gia vào các giai đoạn khác nhau của sản phẩm.

Công việc cụ thể:

  • Giai đoạn chào hàng: Liên hệ khách hàng, phân tích yêu cầu, lên kế hoạch, trực tiếp code và thử nghiệm sản phẩm demo để chào hàng, bảo mật mọi tài liệu liên quan;
  • Khi dự án chính thức triển khai:
  • Business Analyst: Nắm nội dung chính về yêu cầu của khách hàng;
  • Quản lý dự án (Project Manager): Chia việc, giám sát công việc, chịu trách nhiệm chung cả dự án để báo cáo cho khách hàng;
  • Nghiệp vụ kỹ thuật: Đưa ra phương án xử lý, tiếp cận giải pháp của hai bên.

  1. Kinh nghiệm & Kiến thức cần có

Kinh nghiệm

Vì đây là ngành còn khá mới, dù đã được đào tạo bài bản vẫn cần những người lớp trước hướng dẫn và chỉ dạy lại nên trước hết cứ đầu tư vào kỹ năng code tốt và tiếng Nhật trình độ N3. Bình thường thì bạn sẽ mất 2 năm để trở thành kỹ sư cầu nối làm việc độc lập.

Kiến thức

Chứng chỉ về Kỹ sư phần mềm ở trường đại học cao đẳng. Hiện tại trường đại học FPT có Chương trình 10000 kỹ sư cầu nối của FPT Software liên kết với Nhật học tập trong vòng một năm, nhằm hướng đến việc kết nối giữa Việt Nam và Nhật Bản.

Kỹ năng

  • Kỹ năng code: Quan trọng là code giỏi, để theo hết mọi thứ từ đầu đến đuôi trong dự án chào hàng, hiểu rõ và đúng các giải pháp kĩ thuật để truyền đạt đúng, đủ cho cả hai bên. Cần code cứng cho một ngôn ngữ +framework, biết tổng quan một vài ngôn ngữ +framework khác;
  • Kỹ năng ngoại ngữ: Với những nghề khác trong ngành IT, tiếng Anh chiếm ưu thế. Tuy nhiên trong nghề này, ngoài tiếng Anh ra, việc THÀNH THỤC TIẾNG NHẬT là điều có thể bắt buộc, đặc biệt khi hiện nay các công việc về kỹ sư cầu nối đa phần có thị trường bên Nhật. Ngoài IELTS từ 6.5 trở lên thì chứng chỉ tiếng Nhật ít nhất từ N2 trở lên;
  • Kỹ năng giao tiếp: Khi bản thân là người xây cầu gắn kết thì giao tiếp không tốt là hỏng việc. Đặc biệt là khi làm việc với người Nhật, biết lắng nghe là yêu cầu chủ chốt. Chú ý tránh xung đột ngay từ đầu để quá trình chào hàng suôn sẻ. Đồng thời phải biết thu thập thông tin đầy đủ, giải quyết vấn đề ngắn ngọn;
  • Kỹ năng tự học: Vì bản chất của nghề là sự kết hợp của nhiều lĩnh vực khác nhau nên phải chịu khó tìm hiểu, học hỏi từ trên mạng, người trong lĩnh vực, sách vở và  các diễn đàn;
  • Kiên nhẫn và chịu đựng để đáp ứng nhu cầu của khách hàng;
  • Khả năng làm việc tốt dưới áp lực cao, kèm với óc nhạy bén.
  1. Rèn luyện những kỹ năng đó ở đâu?
  • Bạn có thể tham gia các khóa học tiếng Nhật và đầu tư nhiều để biết giao tiếp, email;
  • Đồng thời đọc thêm sách và các trang mạng nói về văn hóa ứng xử của người Việt như quyển “Khuyến học” của Fukuzawa Yukichi,…
  1. Tích luỹ kiến thức thực tế ở đâu?
  • Mỗi dự án dùng một ngôn ngữ, framework khác nhau. Học về javascript knockout (tự mày mò về trang chủ), tự nghiên cứu và tự vọc. Nghiên cứu thêm về các tài liệu Âu Mỹ;
  • Tham khảo kinh nghiệm của người trong ngành: https://itviec.com/blog/ky-su-cau-noi-la-gi/;
  • Học từ đàn anh giỏi trong ngành về tiếng Nhật, kỹ thuật: với tiếng Nhật thì xem cách làm sao người ta giao tiếp với khách hàng Nhật sao cho hiệu quả, phân tích những sai lầm mắc phải do bất đồng trong ngôn ngữ và văn hóa; về kỹ thuật thì xem cách suy luận và quyết định vấn đề của họ;
  • Nếu giỏi code mà chưa giỏi ngoại ngữ, đầu tư vào học ngoại ngữ;
  • Giỏi ngoại ngữ mà chưa giỏi code, học code trong 6 tháng đến 1 năm, làm tester hay BA khoảng 6 tháng để làm quen với quy trình làm phần mềm để đọc hiểu tài liệu kỹ thuật, nắm bắt kỹ thuật, giao tiếp với bên phát triển tốt hơn.
  1. Những công ty tiêu biểu trong ngành

Vì đây là nghề còn khá mới mẻ nên hiện giờ chưa có công ty tiêu biểu nào trong ngành, và đây cũng là nghề mà bất kỳ đơn vị doanh nghiệp CNTT cần có.

  1. Tiến triển sự nghiệp

Theo bài phỏng vấn với anh Nguyễn Văn Trọng, onsite lead tại Hitachi Consulting trên blog itviec, con đường có thể vô cùng.

Chưa làm việc độc lập, cần được chỉ dạy → Làm việc độc lập → Vị trí onsite lead/ PM external (quản lý dự án mảng bề ngoài) → PreSale (gặp gỡ khách hàng bàn định hướng, làm thỏa thuận và ký kết hợp đồng → Tự làm chủ mở công ty riêng.

  1. Công việc liên quan
  • Senior Games Unity Developer (Lập trình game Unity cấp cao);
  • Senior Android Apps Developer (Nhà phát triển ứng dụng Android cấp cao).

VIII. Game Developer (Chuyên Viên Phát Triển Game)

Từ những trò chơi gắp thú, đua xe, ném bóng rổ ở khu trò chơi ở siêu thị đến chiếc máy chơi bé tin hin, trò chơi rắn bò trên điện thoại cục gạch, và rồi Boom Online, Võ Lâm Truyền Kỳ, Audition – một thời huy hoàng của lứa trẻ 9x. Ngày cuối tháng 5 năm 2013, Flappy Bird trên ứng dụng Android của Nguyễn Hà Đông đã trở thành một cơn sốt khắp thế giới. Hễ một xu hướng game nào đó thoái trào, thì một thời gian sau đó một game mới lại gây ra cơn bão trong cộng đồng. Nhưng bây giờ, game không chỉ đơn thuần là trò chơi giải trí, cụ thể là cuộc thi iOE tiếng Anh và Violympic Toán của Bộ Giáo dục với giao diện trò chơi cho mỗi vòng thi. Một công việc thú vị, ai mà chả thích?

  1. Mô tả công việc

Là một chuyên viên phát triển game, bạn sẽ tham gia vào sáng tạo, sản xuất game cho máy tính cá nhân, máy chơi game console, trò chơi trên mạng xã hội/ online, trò chơi được lắp trong các máy ở  các trung tâm thương mại (arcade game), tablet, điện thoại di động và các thiết bị cầm tay khác. Công việc thường liên đới đến thiết kế (mỹ thuật và hoạt hình) hay lập trình.

Làm ra một sản phẩm game hay có thể mất mấy năm và có cả một đội xuất sắc. Có rất nhiều bước, sáng tạo và thiết kế giao diện game và xem cách chơi, tạo hình nhân vật và đồ vật, tạo hiệu ứng âm thanh, lập trình, chuyển biến ngôn ngữ , kiểm định chất lượng trò chơi (test game).

Trách nhiệm

  • Phát triển thiết kế hay thiết kế ý tưởng ban đầu cho game gồm cả gameplay (tất cả những gì người chơi có thể thực hiện trong game);
  • Truyền tải cốt truyện game và bảng vẽ lại câu chuyện kể ra (storyboard);
  • Sáng tạo khía  cạnh hình ảnh của game ở giai đoạn nội dung (concept stage) sử dụng thiết kế 2D hay 3D và phần mềm đồ họa, như Maya ở giai đoạn sản phẩm;
  • Tạo mảng âm thanh cho trò chơi, như giọng nhân vật, nhạc và hiệu ứng âm thanh;
  • Lập trình game sử dụng ngôn ngữ lập trình như C++;
  • Kiểm tra chất lượng game một cách hệ thống và thành thục để tìm ra vấn đề hay lỗi và ghi nhận chính xác vấn đề được phát hiện ở đâu;
  • Giải quyết vấn đề kỹ thuật phức tạp xảy ra ngay trong quá trình sản xuất;
  • Phổ biến kiến thức cho đồng nghiệp, khách hàng, nhà xuất bản và người chơi game;
  • Hiểu được thông tin viết phức tạp, ý tưởng và hướng dẫn;
  • Làm việc thân cận với các thành viên trong đội để đáp ứng yêu cầu của dự án;
  • Soạn ra các nguồn để lấy, quản lý nhóm và quá trình;
  • Hoàn thành hiệu quả dưới áp lực và hoàn tất deadline để đảm bảo game được hoàn thiện đúng thời gian.

  1. Kiến thức, kinh nghiệm cần có

Chuyên môn

Thực ra đây là ngành không đòi hỏi bằng cấp, nhưng bằng cấp về các lĩnh vực sau đây có thể làm tăng cơ hội được chọn của bạn:

  • Họa sĩ hoạt hình (Animation)
  • Phát triển trò chơi máy tính hay thiết kế trò chơi máy tính
  • Khoa học máy tính
  • Thiết kế đồ họa
  • Truyền thông tương tác
  • Toán – Tin
  • Thiết kế đa phương tiện (Multimedia design)
  • Kỹ sư phần mềm

Sự liên tục đổi mới của về xu hướng trò chơi và cải tiến công nghệ, ngành công nghiệp hứa hẹn nhiều cơ hội, nhưng vô cùng cạnh tranh và khốc liệt. Để tồn tại trong ngành, cần có sự tâm huyết vô cùng lớn và đạt được nhiều thành tựu.

Kỹ năng

  • Khả năng về công nghệ, rành và quen thuộc với các gói phần mềm và ngôn ngữ lập trình;
  • Khả năng làm việc nhóm và liên lạc được với những người chuyên nghiệp để hoàn tất các trò chơi phức tạp;
  • Tinh thần cầu tiến và khả năng làm việc độc lập với dự án của riêng bạn;
  • Sự sáng tạo và khả năng giải quyết vấn đề;
  • Kỹ năng giao tiếp;
  • Linh động khi gặp deadline và đòi hỏi của khách hàng;
  • Tâm huyết với ngành công nghiệp game;
  • Bạn cũng cần thể hiện kỹ năng trong kỹ thuật điện ảnh hoặc viết truyện do xu hướng trò chơi gần với phim xét về mặt tiến bộ công nghệ. Đồng thời phải nắm bắt về mặt văn hóa để đảm bảo trò chơi phù hợp với thị trường quốc tế.

Kinh nghiệm làm việc

Việc tạo một portfolio – thể hiện năng lực và kinh nghiệm của bạn – thể hiện năng lực và kinh nghiệm của bạn thông qua những sản phẩm đã thực hiện. Điều này tạo ấn tượng cho nhà tuyển dụng về tài năng và sự sáng tạo của bạn. Khả năng code trong ngôn ngữ lập trình như C++, kinh nghiệm script (một tập các chỉ lệnh dùng để báo cho chương trình biết cách thực hiện một thủ tục quy định, như đăng nhập vào hệ thống thư điện tử chẳng hạn) và hiểu biết về công cụ phần mềm đặc biệt cũng là những kỹ năng hữu ích.

Kinh nghiệm nghề nghiệp liên quan tích lũy được, ví dụ, qua các doanh nghiệp, vốn vô cùng quý giá và có thể giúp bạn xây dựng mạng lưới (network) và có được các mối quan hệ.

  1. Rèn luyện những kỹ năng này ở đâu?

Ngoại ngữ: Những trò chơi hay đều được sáng tạo từ sự học hỏi từ các phiên bản ở nhiều quốc gia khác nhau. Càng biết và rành nhiều ngoại ngữ càng tốt, điều này giúp bạn hiểu được văn hóa, và quan trọng là CHƠI ĐƯỢC GAME. Chơi được thì mới nghiên cứu tài liệu và phát triển thêm được.

Điều cốt yếu nhất vẫn là niềm đam mê mãnh liệt với game và kiến thức trong ngành công nghiệp này. Điều đó có nghĩa là: ĐỂ LÀM ĐƯỢC GAME, TRƯỚC HẾT PHẢI BIẾT CHƠI GAME. Chơi càng nhiều thì càng tích lũy càng nhiều kinh nghiệm, đồng thời phát hiện những cái hay, cái dở của các trò chơi để phát triển cho trò chơi của mình.

  1. Tích lũy những kiến thức thực tế từ đâu?
  • Làm được game thì trước hết phải HỌC LẬP TRÌNH. Phát triển game là một mảng trong phát triển phần mềm;
  • Tự đọc và nghiên cứu các tài liệu về game;
  • Ngoài khả năng phân tích và lập trình, bạn cần có thêm tố chất của một nghệ sĩ. Tham gia các khóa học về  thiết kế, hiệu ứng âm thanh hoạt hình. Các khóa học về thiết kế trên Color ME, Green Academy. Hay các khóa học trên Udemy và Coursera cũng là đề xuất hay;
  • Tham gia các diễn đàn online nhằm tăng kiến thức về ngành công nghiệp hiện tại, các chủ đề hot và đọc về các game liên quan và các tạp chí phát triển trò chơi, như:Gamasutra, 3D World;
  • Tham gia thực tập ở các công ty.
  1. Các công ty tiêu biểu trong ngành

Trong nước

  • VinaGame: Một phần tuổi trẻ của thế hệ 8x, 9x gắn liền với các game bom tấn như Boom Online, Võ Lâm Truyền Kỳ, Kiếm thế;
  • VTC Game: Với game Audition mà 9x nhắc lại đều nhung nhớ;
  • VietNam Esports: Với game Liên Minh Huyền Thoại và Fifa Online 3 và cả kênh truyền hình về thể thao điện tử (Vietnam Esports TV);
  • Game Loft: Chuyên thiết kế các game dựa trên các nhân vật hoạt hình như Minion, Ice Age,.. Đây là công ty đa quốc gia với nhiều trụ sở;
  • Soha Game.

Ngoài nước

  • Nintendo;
  • Ubisoft;
  • Konami;
  • Microsoft Studios (ứng dụng trò chơi trên XBOX);
  • Sony Computer Entertainment.
  1. Con đường sự nghiệp

Người kiểm thử chất lượng (Quality Assurance Tester) → Nhóm trưởng kiểm định chất lượng → Thiết kế hay sản xuất hay quản lý.

Ở vai trò thiết kế hay hoạ sĩ, đường vào sẽ bằng phẳng hơn nhiều nhưng cần kinh nghiệm trước đó.

Nhìn chung, quá trình thăng tiến sự nghiệp trong ngành công nghiệp game thường rất nhanh. Nhiều người ở vị trí nhỏ, đến vị trí lead trong vòng 5 đến 7 năm và đến vị trí cấp cao trong 10 năm đầu. Vị trí cấp cao: chỉ đạo kỹ thuật, quản lý phát triển, quản lý sản xuất, quản lý nhóm.

  1. Công việc liên quan
  • 2D Games Artist (Họa sĩ Game 2D);
  • QC Engineer (game) – kỹ sư kiểm soát chất lượng game;
  • Game operation manager – chuyên viên quản lý vận hành game.

Theo 4sv.vn,ybox

Future Scope Of Python Programming

Future Scope Of Python Programming
— Read on simpliv.wordpress.com/2019/06/28/future-scope-of-python-programming/