原帖由 DDD888 于 26-5-2013 07:11 发表
The trouble is it takes very short time to learn java, c# than c, c++. And if you have a team of programmer can write in java, c# and doing pair programming and code review and unit testing. Every programmer in the team can be replaced the next day without issue. I guess a teenager can replace a guy like me with 19 years commercial programming experience just for maintenance for a while.
That's exactly the point. If what you could do or what the company needs you to do is this type of basic labor like work and are routine and repeatable, then you are replaceable.
Not all pair programming is like that. Pair programming is a methodology and a process. It does not have to be tied to low level repeatable work. In fact, those are the type of work that is not suitable for pair programming, because the dev speed / efficiency would be reduced by almost half, and you don't gain much except for knowledge transfer, which could be done more effectively in other ways.
I've seen pair programming where the pair triggers discussion and iteratively improves the design and the code significantly in a way that a single programmer might not be able to achieve.
We should stay at the core of the company's business and make sure that we are able to make irreplaceable contributions that are indeed needed for the company to be successful. Just like what you are doing with encryption / obfuscation and other stuffs that are critical to protecting your boss' data. 
In terms of Java/C# vs C/C++, I see them more like replacement for VB type of programming work. The majority of java/.net work might be similar to the traditional type of VB work, which has low barrier of entry. The difference (from VB) is that for Java/.net, you could also use it to build serious and good quality software. But that requires about the same or better level of skills, comparing with those by c/c++. So not much difference. There still a similargap between C/C++ vs VB, just that they are now both known as Java, making it is more difficult to tell the difference. Therefore, if you are using Java, make sure that you don't get stuck to a framework (e.g., Hibernate/Struts) and know nothing else about Java. You are easily replaceable if you do that. (This is why I tend to skip job ad that highlights requirements for hibernate/struts/etc, it clearly indicates that the company only needs this type of replaceable programmers.) But if you have in-depth knowledge about garbage collection, concurrency, JVM tuning, etc, then you are in a much better position and you could be very valuable to a company that wants to build scalable and good quality product. You could see such clues in job ads. I think I've posted quite a few such jobs before, e.g., https://www.freeoz.org/ibbs/thread-1052027-1-1.html (might be too extreme, though). |