The previous article shared all cutting-edge knowledge and technologies such as DevOps, automated testing, and new technology trends. Only a few developers and testers can fully master these new technologies. After all, most of them are still focusing on their work. There is less time for upgrading and learning new technologies, and many recent trends have not yet been maturely applied to the industry. Therefore, there is no need to worry about this. There is always some constant in the rapid change. The ability to stick to those foundations, and embrace change with a positive attitude, is a sustainable and stable growth path. This issue will share some principles that do not depend on new technologies but can be followed as programmers. You can choose and practice according to your situation.
Update the task list in time
When the functional point is to be implemented, it is best to split larger tasks into smaller and more precise functions that are relatively separate logical units that can be tested separately. Make a list of smaller tasks that can be completed and checked, updated after completion. This creates self-motivation and prompts you to accomplish more small tasks constantly.
At present, the mainstream project management software is often built-in task decomposition and update functions. For example, in the Zentao project management software, the development leader conducts systematic analysis, disassembled into relatively independent tasks and assigned to individuals. Developers can clearly see the number of tasks and the remaining hours on their own pages, and the progress will be updated simultaneously after completion. This kind of continuous positive feedback will bring a great sense of achievement.
Follow the appropriate version control
Follow the appropriate versioning policy by creating development, features, master branches, and setting the appropriate access rights. Whenever encoding begins, make sure to get the latest version of the codebase before starting. Continue submitting/pushing the code after the logical part or function is completed, and do not leave the code base unsubmitted for a long time. Always test the code on the local machine before submitting it to the version control. No matter how subtle the changes are, check for modified file differences when entering the code, which will help to trace unexpected changes and effectively avoid an unnecessary Bug.
Code reconstruction is the process of changing the source code without changing the functional behavior of the source code, aiming to improve the readability and maintainability by improving the scalability and reducing the complexity of the code. Failure to perform the remodeling could lead to the accumulation of technical debt that developers will pay at a later time. You know that no developer is willing to be in this situation, and they often refuse to access the code that has been working for a long time. The problem arises when the existing features need to be enhanced.
If the form of code is not suitable for simple extension, it will be hell for developers. Therefore, to avoid this, you always need to look at the code to be improved. If you can't yourself, ask the team for help.
Write the code before tapping it
Develop the habit of handwritten algorithms/pseudo-code before actually converting the solution into code. Handwriting also helps you plan your code before moving it to your computer. Writing out the functions and classes needed and how they interact can help you saves a lot of time afterward. Although it will take more time than tapping the code directly, this specification will give you a solid foundation and achieve more robust growth later.
Comment on your own code
Make a good use of search engines and forums
Not all the problems you can find obvious solutions by yourself. So remember to use search engines. There are millions of developers who have the same issues as you and have found a solution. So, don't spend too much time looking for solutions alone. Many developers have underestimated the importance of search as part of a programmer's work.
Google is a good choice for the search engine, as for the forum, Stack Overflow is recommended. Sometimes the job requires more about knowing how to get knowledge and solutions than actual programming.
Seek help from others
Programming is actually a social activity. My programmer friends all have outstanding advantages in certain aspects, so whenever I have a question, I know which one to ask. When they have problems, I will also help them. This is really an excellent way to accomplish the task.
Cooperation can follow pair programming for Agile development: two programmers work together on one computer. One person enters the code, while the other reviews each line of code that he enters. The two often swap roles and work alternately. In pair programming, the role of the review needs to simultaneously consider the strategic direction of the work, suggest improvements, or identify possible future problems to handle.
While there is no full human cost for full paired programming, seemingly unchangeable mistakes or unlearning topics when seeking advice can be quickly alleviated by new thinking or new explanations of the topic. So don't program in the silo, discuss and advance very typically. Access to multiple ideas and ways of thinking will help you start your own again.
Remember that technology is always changing
I regard myself as a programmer first, and a programming language expert second. Since one day all the programming languages we use now will no longer be used. Like some forms of assembly code, I used since in the 80s most of which no longer exist today. This will happen in any technology, for good or bad. There will be a day when no one will use Java.
On the other hand, the programming language has a broad paradigm, with similar family profiles present. So, if you know a language similar to another, it is easy to learn it.
For example, Python and Ruby are almost the same programming language. Although there are huge differences in culture between the two, they are almost identical, so it is very easy to learn one when you know the other. So do not bind yourself to any technology or programming language, but see them only as tools to help yourself solve the problem at hand.
Face up to and accept the presence of the Bug
Programmers often see a lot of Bug reported in their own developed features, which means that most of the time, the task fails. But if all of our programs are fully functional without any Bug, then the programming is not programmed at all. The fact is, we are in the programming process, which means we either lack a lot of functionality or the software has Bug. So, in some ways, you always fail as a programmer because there is always a Bug. It may be strange, but you do need to keep a good mindset about things that are imperfect and don’t work, because that's exactly what we do.
Programming is a long-term process in which you will always be facing new obstacles. Getting the habit of recording mistakes so you don't make the same mistakes later shows that you are constantly learning and improving yourself as a developer.
Automate the repetitive tasks
There are always some tasks that need to be repeated. For example, running a set of commands or performing certain activities that involve switching between multiple applications and screens, which can take up most of your time. It is recommended that these time-consuming daily activities be converted to be somehow automated through a script or a simple program (which can be run by clicking or command). If the test execution for repeated units and interfaces, the automatic test can be carried out. This will save your time, allowing you to focus on more meaningful tasks without having to worry about daily tedious tasks.
Do well according to the above ten points, I believe you can change from a qualified programmer to an excellent programmer. The embrace of new technology and new knowledge will be a matter of course. "Your duty is to level the land, not to worry about the time, you work hard in March and April and you will have your own answer in August and September.”
Chen Qi, a senior agile test consultant, as a team member of ZenTao, a well-known domestic project management software, is mainly responsible for the open-source automated test management framework- the development of ZTF. With more than ten years of practical experience in the agile process, he is now committed to the practice and research in test automation and DevOps.