Programmer !? What are the goals?

Source: Internet
Author: User

It is very important for programmers to challenge themselves, either by constantly innovating or by stagnant technology. At the beginning of the new year, I sorted out my 12-month goals. Each goal is a challenge to technology or individual abilities and can be used repeatedly year after year.

  

01. Become Patient

  

02. Stay healthy

  

03. Adapting to changes

  

04. Learning a new Programming Language

  

05. Automation

  

06. Learn more about mathematics

  

07. Focus on Security

  

08. Back up your data

  

09. Learn more theoretical knowledge

  

10. Contact with arts and humanities

  

11. New software learning

  

12. Complete a project

  

 Next, I will introduce these suggestions one by one.

  

Become Patient

  

Programmers will worry that the effort to exercise patience will not get the expected reward. In fact, as long as you make a small investment to cultivate patience, you will be able to gain a great deal. The following is a list of tests you can try to get started. As long as you fully devote yourself to any of these items, you can leave the outsourcers (to become experienced beginners) for a month or so:

  

Cooking, hiking, skiing, astronomy, jogging, woodworking, martial arts, dance

  

 Stay healthy

  

Programmers usually sit for less time, so they face health problems in their daily work, but they are often ignored by us. It takes a whole month to adjust your living habits, diet, and environment. This will encourage you to develop lasting and healthy living habits. Go to a clinic every year to check for blood pressure, cholesterol, and blood sugar and see how these indicators have changed recently. If your wrist is getting sore or it has been hurting for a long time, immediately stop your hand and start fighting with the mouse hand (repetitive strain. Pay attention to your sitting posture, especially the shoulders and neck. I used a pose tool to help with the treatment.

  

Track your weight, intake, and burning calories. If necessary, you can change your lifestyle to develop healthy eating habits and lose weight.

  

  Programmer's common health problems embrace the discomfort of changes

  

When I was in my early s, by observing older partners, I found that some people were stuck while others were energetic. I tried to find the reasons behind them. The answer is comfort. Comfort will lead to technological stagnation. When we find a system that can be used for me, we will always use it. But the technology is constantly improving, and those staying in the comfort zone will never realize that these advances can bring them benefits. Make yourself uncomfortable.

  

The items listed below may make you feel uncomfortable at the beginning:

  

Use the dwaxak keyboard

  

Replace emacs with vim, and vice versa.

  

Do not use the mouse

  

Use different Window managers

  

Clear coffee without cream or sugar or tea

  

Try "popular and boring new things" for a month"

  

One day in a week

  

Learning to use a single-handed device

  

Try a different operating system

  

Do not access the Internet one day in a week

  

Try to limit your diet: Try vegetarian food, become a pure vegetarian, do not eat dairy products, and so on.

  

Eat a kind of food you don't like every day

  

Attach your arm to a bandage

  

Learn to write with the hand you are not used

  

Start a blog

  

Participate in public speeches

  

Listen to a music you don't like

  

Volunteer in hospital or retired home care

  

One day in a week

  

Traveling to a country different from your own culture or language

  

Read a well-received but not your favorite novel.

  

Watch a movie or show that is well received but not in your favorite style

  

Learn to drive with shift lever (manual)

  

 Opposed to something you believe

  

After a month's attempt, you can decide whether to continue using the new method, or find a combination of good experiences and original methods in the new method. For example, when I switched from emacs for 10 years to vim, I would set the emacs style shortcut key for the insert mode to continue using vim.

  

 Learning a new Programming Language

  

Programming Languages start and fall. If you only know one language, the programmer's problem-solving skills and career prospects will be limited. Spend a whole month absorbing a new language or a new programming paradigm and using it to write a small program.

  

  Below are some programming languages that can be learned but are not very popular:

  

Racket, Haskell, Scala, Erlang, Clojure, SML/NJOCaml, Squeak, Prolog, and Datalog.

  

If you do not know anything, you can implement a new programming language.

  

 Automation

  

Programmers have the most powerful skills to be developed, namely the ability to automate virtual and reality. If you have never created a robot, do it. At least learn to use Lego Mindstorms or play with an Arduino board.

  

Check your daily tasks to see which ones can be completely or partially automated. Automation has made great strides in the family life, and can even DIY the system like Insteon.

  

One month of investment for automation:

  

Adjust your email filter or set procmail

  

Write automated shell scripts for frequent work

  

Write shell scripts to help write

  

Learn how to use the cron Tool

  

Modify cabinet lamp by Induction Control

  

Try to replace wired network with Wireless Network

  

Stop manual synchronization: save information to the cloud

  

Install a remote control audio system

  

Control the air conditioner at home through your server

  

Install a digital surveillance camera

  

Install a digital internal call system and a children's monitoring system

  

Enable the coffee machine automatically

  

Automatically install a sink for pets

  

Install an automatic door for pets

  

Transform Roomba into a personal messenger

  

:

  

Procmail: The procmail package contains an automatic mail manager that can filter and sort emails.

  

Cron: a scheduled execution tool in linux.

  

Roomba: Roomba is a timed intelligent robot produced by iRobo.

  

 Learn more about mathematics

  

Computer science is essentially a discipline of mathematics. Good mathematicians generate excellent programmers. Do not let your mathematical abilities be exhausted.

  

Consider spending one month each year reviewing one of the items in the list:

  

Logic, discrete mathematics, Calculus, probability theory, statistics, abstract algebra, number theory, model theory, and partial order Theory

  

 Focus on Security

  

Few programmers have good security habits. If you care about your digital security, you will be more concerned about the security of your written code. Make sure that you use a unique high-security password on each site. Use the encrypted password manager to manage your password, such as PasswordSafe or KeePassX. If you have not encrypted the entire disk, set aside time to complete it.

  

Every year, the first 10 security vulnerabilities in the past 12 months are investigated. How did they happen? How can we avoid these vulnerabilities in your code during programming?

  

  Here are some other security tasks you need to try:

  

Add SSL verification to Apache

  

Use RSA or AES to implement a cryptographic system

  

Try to crack your wireless network password

  

Use WireShark to listen on your network communication

  

Set key-based ssh login without a password

  

Run nmap by yourself; configure your firewall

  

Create a Port Scan

  

Encrypt a USB drive

  

Monitoring Log File

  

Set a cron task to regularly update your program

  

:

  

Nmap: network scanning and sniffing toolkit in linux

  

 Back up your data

  

Spend some time checking your backup policy every year.

  

It takes one month to minimize the backup time.

  

Using cloud-based backup services, such as Mozy and Carbonite, it is easy to establish seamless automatic backup.

  

For more comprehensive defense, you can choose to distribute hard disks to everyone and back up each computer using an automatic backup tool such as Time Machine.

  

Use Remote warehouses to control versions of important files.

  

 Learn more theoretical knowledge

  

Computer science has a wealth of theoretical foundations. While keeping abreast of the latest developments, we also need to strengthen our understanding of classical development theories.

  

Spend one month on the following topics every year:

  

  Formal Language

  

Automatic Mechanism and Computability Theory

  

Computing complexity theory

  

Formal Method

  

Semantics

  

Algorithm and Data Structure

  

:

  

Formal Language: a finite or infinite set of sentences or symbol strings based on certain rules.

  

Automatic Machine: a mathematical model of a wired state machine (FSM.

  

Computational Theory: studies the feasibility of computing and the theory of function algorithms. Also known as algorithm theory. It is the basis of algorithm design and analysis, and also the theoretical basis of computer science.

  

Computing complexity theory: computing complexity theory is a branch of computer science. It uses Mathematical Methods to quantitatively analyze the consumption of various computing resources, it is also the theoretical basis of algorithm analysis to study the relationship and basic nature of various problems in computing complexity.

  

Formal Method: In logical science, it refers to analyzing and studying the formal structure of thinking.

  

Semantics: a discipline that studies the meaning of words in natural language. It can also be a study of symbolic interpretations in a logical form system.

  

For beginners, you can take a look at the following articles:

  

Use Haskell to write a CEK-style Parser (or semantic analyzer)

  

  Syntax Parsing through Derivation

  

Lost method: how to delete the red/black tree of Okasaki

  

Use Scheme for Regular Expression Pattern Matching through Derivation

  

Convert regular expression to non-deterministic automatic machine (NFA)

  

:

  

CEK: The CEK machine is a mechanical model of λ-calculus developed by Matthias Felleisen and Dan Friedman.

  

Haskell: a pure functional programming language named after American mathematician Haskell Brooks Curry.

  

 Contact with arts and humanities

  

Engineers often despise art. They do not realize that art and humanities are important factors for basic sublimation. Steve Jobs is willing to point out the importance of combining technology with humanity, but that is also true.

  

The principles of art and design also apply to interactions between people and computers. Do not ignore these principles. The training of arts and humanities makes intuition more acute, and this exercise is hard to be measured by numbers. Engineers need to know how to measure things they cannot measure, rather than just counting what they can.

  

Learn the topics listed below for at least one month each year:

  

Industrial Design

  

Philosophy

  

Photography

  

Painting

  

Sketch

  

Music and Music Theory

  

Movie

  

Literature

  

Social science will also be of great help to computer scientists, especially economics and philosophy.

  

New software learning

  

A good way to find inspiration for your software is to learn from new or new applications. For example, if you have never tried 3D modeling software, you can try Blender. Or, if you have never touched LaTeX before, please try to understand it with sincerity.

  

During the learning process, pay attention to what you like and what you hate. Sincerely ask yourself whether the observed content exists in your software. It is difficult to see your shortcomings at work, but it is easy to find others' shortcomings. No parent in the world thinks that their children are ugly. Learn to see the shortcomings of your work.

  

Complete a project

  

If you write code for others all day long, writing programs for yourself can help you remember why you became a programmer. Allocate one month to your selected project each year to complete core functions and release the project open source. (Transfer)

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.