Note: In addition to the first article, the others are very relevant to my own experience, I think the technical problems, even if complex, can be solved slowly, and decide whether a project success is often outside the technical things. For example, in the text (2) mentioned scenes, a lot of technical staff study very hard, work very hard, but also very enthusiastic to help others, the result has not achieved very good results, that is, because what all do is not good. Not much to say, please look at the text.
0. "Object-oriented" is much harder than you think.
Maybe it's just me, but I used to think that "object-oriented" in computer science was a simple thing. I mean, how hard can it be to create classes to simulate the real world? Actually, that's really hard.
Ten years later, I'm still learning how to model properly. I regret that I did not spend more time learning object-oriented and design patterns before. Good modeling technology is very valuable to every development team.
1. The difficulty of software development lies in communication
Communication here refers to communication with people, not socket programming. Sometimes you do encounter tricky technical problems, but this is not a common situation. The common problem is the misunderstanding between you and the project manager, between you and the client, and between you and other developers. Develop your soft skills.
2. Learn to Refuse
When I first started working, I was very eager to try to please others. That is to say, I can hardly go to reject other people's request to me. I've added a lot of classes, but I still can't finish all the things they told me. They said they were not satisfied, and I said I was going to crash.
If you never reject others, your promise is meaningless. Assuming the ability to do things, if others keep assigning you more things, you need to make it clear that it means that it will delay other work.
In order to cope with this, I will carry a list of the items to be done (to-do list). When people asked me to do something, I showed them this piece of paper and asked them what I should do to squeeze them out. This is a good way for me to reject others.
3. If everything matters, then nothing matters.
In our line, we always emphasize that each feature is equally important, but it is not. Urge your colleagues to take on the job.
you'll be a lot easier if you don't force them to choose what they should and shouldn't do. Instead, let them choose your week's task for you. This will make the things you produce the most valuable. If the other parts are still messy, at least you've done the most important thing.
4. Don't think too much about the problem
I can stand in front of the whiteboard and plan things all day, but that doesn't mean things are going to be better, it just means things will get more complicated.
I mean not "you should not do any planning", but if I will be in the implementation of the program will soon meet the questions I have not considered, then why I do not try to do it well? As Dave Fallo says, "The devil dwells in the details, and the way to drive away the devil is practice, not theory."
5. Delve into something, but don't go into a dead alley.
Chris and I spent a lot of time delving into the deep parts of SQL Server. It was really interesting and I learned a lot of knowledge, but after a while I realized that knowing so much would not help me solve my business problems.
For example: I know that at the data table level, the SQL Server will not accept IU locks-it will only accept the IX lock. This is a performance tuning, because in most cases, IU locks are upgraded to IX locks. In order to understand this, I spent countless days doing experiments, I read a lot of books, but also in the meeting to Microsoft staff to understand the situation. But have I ever used this knowledge? No.
6. Understand other aspects of the software development system
It's important to be a good developer, butTo be a good member of a system that develops software, you need to know what's left of the development system . How does QA work? What is the project manager doing? What is the business analyst busy with? This knowledge will allow you to connect with other employees and make the interaction between you and them smooth.
seek help from people around you in order to learn more knowledge. What good books do you have? Most people will be happy with your attention and be happy to help you. Spending a little bit of time on this will help you a lot.
7. Co-workers are your best teachers
one year after I found my first job, we merged with another company. All of a sudden there is a lot of smart and experienced people around. I remember profoundly that it was how humbled and foolish I felt. I studied hard, read one book after another and still couldn't catch up with them. I find that they have a very prominent advantage over me.
now, I don't feel uncomfortable working with good people. I think I have a life time to study. I ask questions and work very hard to understand how my colleagues have come to the conclusion. That's why I joined the ThoughtWorks. think of your colleagues as wealth, not competitors.
About learning, no matter what industry, is an eternal topic, as Jonathan Danylko in summing up his 20 years of programming experience , "admittedly, there are a lot of technologies you don't know, you can learn from them to keep up." 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 firm.) )
8. Making available software is the ultimate goal
No matter how cool your algorithm is, no matter how good your database schema is, no matter how good you are, if it doesn't scratch the customer's itch, it's not worth a penny . It's on the right track to focus on making useful software while you're ready to continue to make the next software.
9. Some people are really unreasonable.
Most people around you are always excellent, you learn from them, and they learn from you. It's always nice to do something together. Unfortunately, however, you may also encounter an exception. For some reason, people can become cold and mean. A depressed boss, a lying colleague, ignorant and foolish customer or something. Don't look too heavy on them. Try to avoid them and try to minimize the pain and impact they bring, but don't blame yourself. As long as you are honest and try your best to work, you have done what you have to do.
[EXT] 10 software development teaches me the most important 10 things