本文发表在 rolia.net 枫下论坛I always feel that we Chinese have a tendency to focus on the small things, at the expense of the big picture. It's even more so for Chinese programmers.
Recently, a C++ programmer here at Rolia asked for good interview questions. The topic became very hot, probably one of the hottest on Rolia. However, all the discussion has been on algorithms or compiler behavior or tricky language features. Nobody cared about the big picture.
When someone complained that the guy was too fixated on the small things, he asked for big picture questions. So I volunteered this question: how do you manage complexity?
He gave a long answer. Even though his answer made some sense, I felt he didn't hit any "point". I told him so, saying another guy's answer, "divide and conquer", at merely 3 words, is way better than his. I suggested that he gave points first, and details later.
I was surprised at what he had to say next. He said he simply didn't have a point. He's never heard of "divide and conquer". And he asked where he could read about it.
He's obviously a very experienced programmer. A very thoughtful one, it appeared. And "read many books". Yet he probably never read a book about software engineering.
Like many Chinese programmers in Canada, this guy probably is not a Computer Science major. However, I've met Computer Science graduates who couldn't explain the concept of "coupling".
Unlike other engineering disciplines where you have theory, models and formulas, software engineering is all about managing complexity. If you're good at managing complexity, you'll be a good programmer, even if you don't have a degree or don't have any programming experience. The ability to create order from chaos is the most important for a good programmer.
The focus on "tricks" among us Chinese programmers is very misguided, IMO. You can google out answers to algorithm or language questions. But you can never google out a good design for your project. Neither can you google out ways to improve your code. These things have to be in your blood. In your brain cells. In the way you think.
And they're a lot more valuable than your knowledge about memory pools, or sorting algorithms, or how to print out all subsets of a set. A few hours is probably more than enough to figure out these tricks. However, a bad design or poor code could easily cost hundred of hours. Or thousands. Or even millions.更多精彩文章及讨论,请光临枫下论坛 rolia.net
Recently, a C++ programmer here at Rolia asked for good interview questions. The topic became very hot, probably one of the hottest on Rolia. However, all the discussion has been on algorithms or compiler behavior or tricky language features. Nobody cared about the big picture.
When someone complained that the guy was too fixated on the small things, he asked for big picture questions. So I volunteered this question: how do you manage complexity?
He gave a long answer. Even though his answer made some sense, I felt he didn't hit any "point". I told him so, saying another guy's answer, "divide and conquer", at merely 3 words, is way better than his. I suggested that he gave points first, and details later.
I was surprised at what he had to say next. He said he simply didn't have a point. He's never heard of "divide and conquer". And he asked where he could read about it.
He's obviously a very experienced programmer. A very thoughtful one, it appeared. And "read many books". Yet he probably never read a book about software engineering.
Like many Chinese programmers in Canada, this guy probably is not a Computer Science major. However, I've met Computer Science graduates who couldn't explain the concept of "coupling".
Unlike other engineering disciplines where you have theory, models and formulas, software engineering is all about managing complexity. If you're good at managing complexity, you'll be a good programmer, even if you don't have a degree or don't have any programming experience. The ability to create order from chaos is the most important for a good programmer.
The focus on "tricks" among us Chinese programmers is very misguided, IMO. You can google out answers to algorithm or language questions. But you can never google out a good design for your project. Neither can you google out ways to improve your code. These things have to be in your blood. In your brain cells. In the way you think.
And they're a lot more valuable than your knowledge about memory pools, or sorting algorithms, or how to print out all subsets of a set. A few hours is probably more than enough to figure out these tricks. However, a bad design or poor code could easily cost hundred of hours. Or thousands. Or even millions.更多精彩文章及讨论,请光临枫下论坛 rolia.net