To Be A Good Programmer? All it takes is these 10 habits !

Posted 禅与计算机程序设计艺术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了To Be A Good Programmer? All it takes is these 10 habits !相关的知识,希望对你有一定的参考价值。

In this world, there are millions of people who are passionate about software development and they have many names such as Software Engineer, Programmer, Coder, Developer. After a while, these people may be able to become a good coder and they will be very familiar with how to do their job in a computer language. 

However, if you want to become a good programmer, you can also need to have a few things you need to pay attention to, if you can make the following ten entries become your habit, then you can really be considered a good programmer.

The original content of this article came from phil’s blog online, but unfortunately the original link is no longer open. The following content comes from my experience in the process of practice and redescribes the 10 articles in my own words.

1. There is no end to learning.

Even if you have more than 10 years of experience as a programmer, you still have to make the effort to learn, because you are in the field of computers, which is full of a creativity, there are many, many new things appearing every day. You need to keep up with the times. You need to get to know new programming languages, as well as learn about programming languages that are in development, and some programming frameworks. You also need to read up on industry news and participate in online discussions in popular communities so that you can understand and appreciate the overall trends in software development. In China, some famous communities such as CSDN, ITPUB, CHINAUINX, etc. In foreign countries, it is recommended that you often go to digg.com to see the aggregation of various BLOGs.

2. Mastering multiple languages.

Programming languages always have areas for which they are best suited. When you are faced with problems that need to be solved, you need to find a language that is best suited to solve those problems. For example, if you need performance, C/C++ may be the first choice, if you need cross-platform, Java may be the first choice, if you want to write a development program on the Web, php, ASP, Ajax, JSP may be your choice, if you want to handle some text and interact with other applications, Perl, Python may be the best. So spend some time exploring other programming languages that you are familiar with to broaden your horizons, because you are better armed and you think more holistically, which will be good for yourself and your project.

3. Be rational about the different operating systems or technologies.

Programmers always have their own incomparable technologies and operating systems in mind, some prefer Ubuntu, some prefer Debian, others prefer Windows, and FreeBSD, MacOSX or Solaris, etc. Only some of the best programmers understand the advantages and strengths and weaknesses of different operating systems so that they can be truly objective and fair when it comes to system selection without letting their emotions get the better of them. The same goes for languages. too many programmers always like to dwell on the comparison of languages, such as Java and Perl. which freshly minted programmer has not argued to similar topics? For example, VC++ and Delphi and so on. Arguing about these things only shows one’s superficiality and flakiness. A good program doesn’t stick to these, but can analyze and face them rationally so as to make the right choice objectively.

4. Don’t box yourself into a single development environment.

Again, as mentioned above, every programmer has their own favorite tools and technologies, some like the old ones (I like Vi for editing programs), while some like the new ones like gedit or Emacs. Some like to use GUI debuggers like VC++, while I prefer GDB command line modulators. And so on and so forth. Is there much debate about what tools programmers use? It’s all over the place. It doesn’t matter what tool you use, as long as you can achieve your goals better and faster. But there is one thing that good programmers should know — that is, they should try other work environments. Without comparison, you’ll never know who’s good and who’s not, and you’ll never know what you don’t know.

5. Don’t tell me you don’t know about source code versioning.

If your team is developing source code without a versioning system, then I’m telling you that your software development is still in the stone age. CVS is a bland-looking versioning tool, but it is the most widely used versioning system, Subversion is an updated version of CVS that is starting to take over CVS territory, and Git is a different kind of versioning tool. There’s also Visual SourceSafe and others. Depending on the size and geography of your team, you may be using the most or least efficient tool to manage your source code. But a good programmer will always use a source code versioning tool to manage his or her code. If you want me to recommend one, I recommend the open source git.

6. Be a good team player.

Unless you like to play solo, unless you’re a lone wolf. But I want you to know that today, there may be no proven software that you can do alone, and you may be the biggest bully on your team, but that doesn’t mean you’re a good team player. Your abilities can only be put to use if you put them into a team. Do you have manners in your communication with your team members? Do you communicate with them regularly, and does everyone enjoy being with you to discuss issues? Think about a soccer team, are you a good member of that team? When others see you running down the field, when others see your passes and catches and snaps, can your group members be inspired by your actions?

7. Turn your work into documentation.

This entry certainly includes writing comments in your code, but that’s not enough, you need to do more. Well-commented code is the foundation of a document that makes it easy for you and your team to understand your intentions and ideas. Writing down documentation is not just a way to communicate offline as a team for fear of forgetting what we were thinking, but also a way to transfer knowledge. It’s a good habit to write down everything you know. Because, I’m sure you don’t want people always interrupting you to ask questions when you’re at your busiest, or getting calls from the company asking you questions when you’re on vacation. And if you yourself are always keeping to yourself, the result is only likely to be that you will keep yourself deep within the piece for a long time, and you will be even less able to do more. Including upward promotion. You may think that “teaching the disciple can starve the master”, but I’m telling you, your conservatism will make you lose more and better things, please believe me, I’m not sensationalizing here.

8. Take care of backups and security.

Maybe you think this is a “crap shoot” and you already understand the importance of backups. But I’m here to point out that losing things is part of our life, you will always lose things, you can never avoid it. For example: your laptop is stolen, your hard drive is damaged, your computer gets a virus, your system is hacked, or even the whole building is burned, etc., etc. So, it is very, very important to do a good backup job. Hard drives are not trustworthy, so burning CDs or tapes on a regular basis might be a good way to go, and the internet is not trustworthy, so beware of viruses and hackers, and not only use a security strategy in terms of software, but you need a sound management system. Also, try to keep your data in as many different places as possible and have a regular (daily, weekly, monthly) backup strategy.

9. The design should be flexible enough.

Maybe your requirements will only ask you to implement a dead thing, but, as a good program, you should always be thinking whether this dead thing can have a flexible side, such as making some parameters configurable, forming some common things into your function library for later reuse, whether to provide plug-in aspects of the function? Do your modules have to be assembled like building blocks? If there are modifications, can your design cope with them immediately? Of course, flexible design may not mean reinventing the wheel, but rather using standardized things whenever possible. The so-called spirit talk design is to let let consider more things beyond the requirements, to take into account all the problems of this category in the requirements, rather than just dealing with that particular thing stated in the requirements. For example, if the required screen resolution is 800×600, can your design be flexible to other resolutions? Programming always requires us to deal with different environments, as well as future trends. We need to think about things with a dynamic perspective, rather than carving out a path. Maybe one day, the program you write today will be ported to another environment, and then you can really understand what is flexible design.

A little look into the future says that maybe one day you who are reading the article will design a system yourself, and if you can see things from a system perspective, then flexibility is even more important. For more information on the design principles of system architecture, refer to this article of mine, Recommended System Architecture Principles, on Medium.

10. Don’t pick up a stone and break your own feet.

Programmers always have a bad habit of trying to finish their work quickly. But the situation is often the opposite of what you want. The more you want to do fast, the more likely it is to go wrong, the more you want to do fast, the more likely it is to miss the problem, and ultimately, the program changed over to change the past, press the gourd up the ladybug, and finally spend more time and effort. The desire for speed is not achieved. A good programmer’s habit is to spend more time up front doing more research, experimenting with different solutions, and if time allows, a good habit is that for every 4 hours of programming, you need an hour of rest, followed by another 4 hours of coding. Of course, this varies from person to person, but its purpose is to make you look back from time to time and make you think about three such questions: 1) Is it right to do so? 2) Is it right to do so taking into account all the circumstances? 3) Is there a better way? Think about it, look back from time to time to see how far you have come, from time to time to summarize the past events, will help you a lot.

These are ten habits or behavioral norms of good programmers, I hope its can be helpful to you.

(end)


【更多阅读:禅与计算机程序设计艺术】

  1. 清洁代码之道:一份实用关于如何编写和维护干净整洁的好代码的的方法 The Art Of Clean Code

  2. 来自软件架构大师的 4 个真理

  3. 程序员架构修炼之道:软件架构设计的37个一般性原则

  4. 软件架构设计的核心:抽象与模型、“战略编程”

  5. 软件架构的本质

  6. 快看软件架构风格总结: 各种历史和现代软件架构风格的快速总结

  7. 软件架构师成长之路: Master Plan for becoming a Software Architect

  8. 软件架构设计杂记:  好作品是改出来的,好的代码是不断重构打磨出来的, 心性是历经艰难困苦修炼出来的


Qualities of Good Programmer 

Coding is easy to learn but good code is rare. At least good code in the first draft is hard to find. After working with hundreds of developers, we able to identify major qualities to learn if you want to know what is good code. We understand that it is very important for the developer to write good code to make it more maintainable, readable, extensible and bugs-free.

Every great programmer follows few good-to-have practices;

1. Eager to Learn

2. Regular Communication

3. Time and Task Management

4. Broad Technical Experience

5. Team Dedication

6. Product Vision

1. Eager to Learn

Technology is an ever-changing domain. There is always one or the other innovations that keep happening. New programming languages get the limelight with improved syntax and better practices. New frameworks and libraries are introduced to improve the development process. Knowing all these innovations and picking the important features to help developers to improve their code. It leads to a bug-free and maintainable code. There are many ways to know the latest improved trends in the tech world, for example joining tech communities, attending tech events, talking to leads and regular discussions.

2. Regular Communication

Product development is a very dynamic process. You never know when everything is going smooth and when everything can be blocked. One very nice quality of a good programmer is that they let every stakeholder know the situation of code, be is smooth or blocked. Regular communication is key for great products. This is actually one quality that is rare in developers as most programmers are introvert and like communicating with other programmers only. But after understanding each stakeholder and their expectations, helps programmers to empathize with the importance of their communications. Tools like Jira, Trello helps every stakeholder to be aware of the status of each feature in the product.

3. Time and Task Management

Tech can be very complex if not maintained and tracked well. A good programmer keeps everyone updated with what stage the code reached and what features are left. Breaking down the business requirement in tech requirement is also an art that great programmers can achieve. Tools like Jira helps in tracking tech features. Also, coding is one thing that needs time and effort. Good Coders know that it is good to balance between coding and playing time. Thus they manage their time well to balance between work and play!!

4. Broad Technical Experience

Just knowing one tech or one programming language is a very basic talent. Good programmers always attain efficiency in one tech and then be aware of other technologies. This helps them to be aware of how the whole system work. For example, good frontend developers are eager to know who is using the data which user is inputting and how the backend processing this data. Many companies know the importance of this depth and breadth of technologies, thus many companies believe in the regular rotation of programmers. For individual learnings, programmers follow having the pet-projects to practice tech of their choices and maintaining their git profile. In the end, it is the code that speaks on the developers' behalf!!

5. Team Dedication

Programmers are lone wolves and believe to be the best individual contributors. Good programmers know the value of a team and thus try learning and discussing tech within the team. Good developers train others with their learnings and experiences. They encourage junior developers to ask questions and share their learnings. Tools like confluence are used to make the team level documentations. Apart from professional relations, online games and team outings are really great ways to build team level bonding.

6. Product Vision

Programmers own the code but it is not enough if they don't know the bigger picture. To add the magic salt to the tech work, it is always good to understand the purpose of the product, who are the users and different user personas. This helps good programmers to suggest improvement in the product and be emotionally involved with the other stakeholders.


15 Characteristics of a Good Programmer

By John Rampton

December 16, 2014

Opinions expressed by Entrepreneur contributors are their own.

Business leaders are often challenged to find talented, experienced programming staff, especially if salaries must fit within certain budget guidelines. The fact that most of a programmer’s work is conducted in front of a screen makes the hiring process even more complicated. Over the past few months I've been hiring a bit of tech talent for my latest startup Hostt.com.  This has been a big challenge as I live in the heart of Silicon Valley and talent is hard to persuade to leave big companies with large paychecks to work for a new, hip startup.

With everything I've been going through, I decided to write a post about some of the characteristics in the best programming talent that I've been able to attract to my startup. Beyond knowing the programming languages necessary to do the job, there are certain requirements that are essential in hiring the right programmer.Here are 15 characteristics that can signal an applicant would make a great addition to your programming team.

1、Impressive technical skills

One mistake many hiring managers make is hiring from a checklist of requirements. Instead of requiring three years of C++ and one year of Java, look at the big picture. A programmer who has worked mostly in an older language but has recently added a new language to his certifications may be the perfect fit, since his years of experience give him a great foundation in other areas of programming.

Sample interview question: Describe your experience with different programming languages.

2、Willingness to learn

Technology is always evolving and the skills and abilities a programmer has today will likely be outdated in a few years. It’s important to find a programmer who has an interest in following the latest trends and is eager to participate in any continuing education opportunities that are available.

Sample interview question: What do you do to keep your programming skills current?

Related: 5 Effective Hiring Tips for Early-Stage Startups

3、Debugging skills

Creating code is only part of a programmer’s job. When software doesn’t work as expected, a programmer is expected to get to the root of the problem quickly and effectively. Instead of spending hours blindly making changes, search for a programmer who prefers to carefully investigate his code and research possible issues until an answer is found.

Sample interview question: How do you handle bugs in your code? (next, I would give them a trial run to debug code)

4、Work environment match

Some programmers require complete silence to concentrate, while others thrive in chaos. A worker’s personal preferences are an important part of his productivity, so it’s best to be clear about your office environment up front to avoid problems after the person is hired.

Sample interview question: Describe your ideal work environment.

5、Problem-solving skills

For those who have never attempted to create an application from scratch, programming can best be compared to solving an extremely difficult math equation. A good programmer thrives on finding ways to make something work, despite the odds. Otherwise, you may be hearing the phrase, “That can’t be done,” every time you propose an innovative new project.

Sample interview question: How would you create (insert near impossible task for your organization)?

6、Passion for the work

While some programming staff can simply serve as nine-to-fivers, many hiring managers are interested in finding someone who will gladly put in long hours when the situation merits it. Often these employees can be found during the interview process by their outside interests. True programmers are self-proclaimed “computer geeks,” spending their time gaming, building servers, or creating apps for friends. While this passion isn’t a necessity, it’s often a way to find top-shelf candidates.

Sample interview question: What are your hobbies?

7、Grace under fire

It may not seem like it to the outsider, but programming can be an extremely stressful profession. When deadlines are tight and nothing seems to be working, it’s easy to freeze up. The ideal programming candidate will be able to handle even the most stressful situations calmly and, most importantly, be able to continue working.

Sample interview question: Describe a time when you were under extreme pressure and your application wasn’t working. What did you do?

Related: 10 Signs Not to Hire the Person You're Interviewing

8、People skills

Programmers generally aren’t expected to have heavy-duty customer service talents. It seems to be understood at the outset that they’ll mostly be sitting in front of a computer all day. Yet programmers are regularly expected to interact with managers, co-workers, and clients, so the ability to work well with others is a must. This is especially true if your programmers are occasionally asked to participate in client meetings and explain how a system works.

Sample interview question: Explain how your favorite application works in a way a layman would understand.

9、Laziness

Larry Wall, the original author of, The Perl Programming Languages, describes three good qualities in a good programmer: laziness, impatience and hubris. Laziness may sound like a bad trait for any employee to have, but IT managers have said that if you want to find the best way to do something, ask a lazy person. Chances are, that person will have found the quickest, most efficient way to do it. A company’s programming staff can often find a way to automate processes, saving time and money.

Sample interview question: Tell us about a time when you saved time by automating a process.

10、A business perspective

It’s easy to lose sight of the big picture while focusing on creating one piece of software. The ideal programmer has a business focus that allows him to move beyond the current application. A business-focused programmer will suggest ideas for new applications that can improve operations.

Sample interview question: Have you ever made a suggestion that improved a business’s processes?

11、Ability to plan

Rather than jumping into a new assignment, a good addition to your programming staff will first learn as much as possible about the desired end product. Once he’s completed that analysis, the programmer will first design the program structure before typing the first line of code.

Sample interview question: Explain your approach to a new design. What do you do first?

12、Ability to handle failure

Programmers rarely get everything right on the first try. In fact, failure is almost a certainty. It’s important to find programming staff that sees errors and bugs as a challenge rather than a sign of defeat. Persistence is important, as well as the ability to start over if necessary, even after hours of work.

Sample interview question: Have you ever spent hours on a code, only to find it was the wrong approach? What did you do?

13、Teamwork mentality

A programmer rarely works alone, even if he’s the only developer in a company. The ability to work with programmers, business users, marketing and sales staff, and fellow programmers is essential.

Sample interview question: Share a rewarding team experience.

14、Willingness to research

A programmer’s language is only part of the picture. A good developer must learn about specific industries in order to design programs that work for its employees or customers.

Sample interview question: Tell us about a time you had to learn about a particular business? How did you do your research?

15、Respect for deadlines

Most programmers work on projects with deadlines. While it’s important that managers understand a reasonable turnaround time for coding a new application or repairing an existing one, programmers should also show respect for deadlines. It’s important to determine that an applicant will do everything possible to meet assigned deadlines.

Sample interview question: Describe a time when you had to meet a tight deadline.

It isn’t easy to find the right programmer, especially if your knowledge of programming is limited. One way to improve your hiring experience is to invite a member of your programming staff to participate in the interviews. They help to ask the questions that you won't know how to ask.

Related: 10 Questions to Ask When Hiring Your Company's First IT Support Person

以上是关于To Be A Good Programmer? All it takes is these 10 habits !的主要内容,如果未能解决你的问题,请参考以下文章

To Be A Good Programmer? All it takes is these 10 habits !

To Be A Good Programmer? All it takes is these 10 habits !

why does it suck to be an in-house programmer?

______more time ,the scientists will be able to work out a good solution to the problem

[转]Clean Code Principles: Be a Better Programmer

c语言 very good