Tang youhua: 12 Goals tailored for programmers

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 mathematical knowledge

07. Focus on Security

08. Back up your data

09. Learn more theoretical knowledge

10. Engage in Arts and Humanities

11. New software learning

12. Complete a project of your own.

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.

Common health problems for programmers

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:

1. Use the vro keyboard

2. Replace emacs with vim, and vice versa.

3. Do not use the mouse

4. Use different Window managers

5. Drink coffee without cream or sugar, or clear tea.

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

7. Do not open your phone one day in a week

8. learning to use a device that can be input by one hand

9. Try a different operating system

10. do not access the Internet one day in a week

11. Try to limit your diet: Try vegetarian food, become a pure vegetarian, do not eat dairy products, etc.

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

13. Attach your arm to a bandage

14. Learn to write with the hand you are not used

15. start a blog

16. participate in public speeches

17. Listen to a music you don't like in a month

18. Volunteer in hospital or retired home care

19. One day of life in a week

20. traveling to a country different from your own culture or language

21. Read a well-received but not your favorite novel.

22. Watch a well-received but not your favorite style movie or performance.

23. Learn to drive with shift lever (manual)

24. oppose some things 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, 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:

1. Adjust your email filter or set procmail

2. Compile an automated shell script for frequent work

3. Write shell scripts to help with writing

4. Learn how to use the cron Tool

5. Modify cabinet lights to be controlled by induction

6. Try to replace wired network with Wireless Network

7. Stop manual synchronization: Save the information to the cloud

8. Install a remote control audio system

9. Control the air conditioner at home through your server

10. Install a digital surveillance camera

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

12. Enable the coffee machine automatically.

13. automatically install the sink for pets

14. install an automatic induction door for pets

15. 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. (It can be done easily on Mac)

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:

1. Add SSL verification to Apache

2. Use RSA or AES to implement the password system

3. Try to decrypt your wireless network password

4. Use WireShark to listen for your network communication

5. Set key-based password-less ssh Login

6. Run nmap on your own; configure your firewall

7. Create a Port Scan

8. USB drive Encryption

9. Monitoring log files

10. Set the 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:

1. Formal Language

2. Theory of automation and Computability

3. computing complexity theory

4. Formal Method

5. Semantics

6. algorithms and data structures

:

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:

1. Industrial Design

2. Philosophy

3. Photography

4. Painting

5. Sketch

6. Music and Music Theory

7. Movies

8. 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.

Original article: mattmight Compilation: bole online-Tang Yuhua

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.