1. "Object-Oriented" is much harder than you think
Maybe I only have this idea, but I once thought that the "Object-Oriented" that I learned in computer science is very simple. I mean, how difficult is it to create classes to simulate the real world? In fact, it is really difficult.
Ten years later, I was still learning how to model properly. I regret that I didn't spend more time learning object-oriented and design patterns before. Excellent modeling technology is of great value to every development team.
2. The difficulty of software development lies in Communication
Communication here refers to communication with people, rather than socket programming. Sometimes you may encounter difficult technical problems, but this situation is not common at all. The common problems are the misunderstandings between you and the Project Manager, between you and the customer, and between you and other developers. Cultivate your soft skills.
3. Learn to reject
When I first started my work, I was very eager to please others. That is to say, I almost cannot reject the requirements of others. I added a lot of classes, but I still cannot complete everything they told me. As a result, they said they were not satisfied, and I also said they were about to crash.
If you never reject others, your promise is meaningless. If someone else does not stop assigning more things to you, you need to make it clear that it will delay other jobs.
To cope with such a problem, I will carry a to-do list (to-do list) with me ). When people ask me to do something, I will show them the paper and ask them what I should squeeze out for them. This is a good way to reject others.
4. If everything is important, nothing is important.
In our line, we always emphasize that each feature is equally important. In fact, this is not the case. Urge your colleagues to take up their work.
If you don't force them to choose what they should and shouldn't, you will be much easier. Instead, let them select your task for you this week. This will make what you produce the most valuable. If other parts are still messy, at least you have done the most important thing.
5. Do not overthink the problem
I can stand in front of the whiteboard and plan things all day long, but this does not mean things will go in a better direction, it only means things will become more complicated.
I don't mean "you shouldn't do any planning ."ProgramI will soon encounter a problem that I haven't considered, so why don't I try to do it well? As Dave Faro said, "The Devil lives in details, and the method to drive the devil is practice, not theory ".
6. Study some things, but do not drill down
Chris and I spent a lot of time researching the deep part of SQL Server. It was really interesting. I also learned a lot, but after a while I realized that knowing so much knowledge could not help me solve business problems.
For example, I know that at the data table level, the SQL server will not accept the IU lock-it will only accept the IX lock. This is a performance adjustment, because in most cases, the IU lock is upgraded to the IX lock. To understand this, I spent countless days doing experiments. I read a lot of books and learned from Microsoft employees at the meeting. But have I used this knowledge? No.
7. Understand other aspects of the Software Development System
This is very important to become a good developer, but to become a good member in a software development system, you also need to know what the rest of the development system is doing. How does QA work? What is the project manager doing? What are business analysts busy? This knowledge will connect you with other employees and smooth interaction between you and them.
Ask for help from people around you to learn more. What are the good books? Most people will be happy with your attention and will be happy to help you. It will take a little time to help you.
8. Colleagues are your best teachers.
One year after I found my first job, we merged with another company. Suddenly there were many more smart and experienced people around you. I deeply remember how inferior and stupid I felt. I studied hard and could not catch up with them after reading another book. I found that they have outstanding advantages over me.
Now, I will not feel uncomfortable working with good people. I think I have a lifetime to study. I raised a question and worked very hard to understand how my colleagues came to the conclusion. That's why I joined thoughtworks. Think of your colleagues as wealth rather than competitors.
As Jonathan danylko summed up his 20 years of programming experience, it is always an eternal topic about learning. "It is true that there are always a lot of technologies you don't know, you can learn from them to keep them from falling behind. If you have a smart way to get the new technology you need, you should keep learning every day ." (Note: thoughtworks is a world-renowned IT consulting company .)
9. Making available software is the final goal
Regardless of yourAlgorithmHow cool it is, no matter how good your database model is, no matter how good you are, and if it cannot reach the customer's itch, it is not worth mentioning. Focusing on making useful software and preparing for continuing to make subsequent software is on the right track.
10. Some people are really unreasonable.
Most people around you are always excellent. You learn from them and they also learn from you. It is always good to accomplish one thing together. However, unfortunately, you may also encounter exceptions. For some reason, people may become indifferent and mean. Poor bosses, fake colleagues, and ignorant customers. Don't take them too seriously. Avoid them as much as possible, minimize the pain and impact they bring, but do not blame yourself. As long as you are honest and do your best to do your work, you have done what you should do.