开源项目这么多,还愁没有事情做?

CSDN – 一个应届毕业生的求职历程及感悟 | 王令刚:

“从这件事情,我得到了两点启示:1.找工作是个沟通的过程,无论是简历沟通,还是面试沟通,要学会营销自己 2. 为成功就业,我必须获得工作经验,这是唯一能够取得胜算的地方,因为目前的行情,IT企业想找的是能迅速上道的人。”

netcasper:实践经验怎么获得确实是个问题。老外们也在思考,这篇文章推荐通过参与开源项目获得经验。

一个令人哭笑不得的隐喻

Intentional Software: Is programming a form of encryption?:

“This is very clear when we look at real encryption. If a secret message needs a follow-up, for example a military commander wants to attack target B instead of target A, this will definitely not be implemented by directly editing the encoded message! Instead, the clear text will be edited and the encryption re-run. Why the seeming complication? Again, in case of encryption the answer is obvious, it would be very difficult to find the encoded “image” of A in the result and replace it by the encoded “image” of B. Because the military has a computer that does the encryption, and they also have the key, it is much easier to change the original intention in the clear text from A to B and re-encrypt the whole message, not just B.

Of course this is just a thought (“Gedanken”) experiment because modern encryption techniques are so good that the image of A would be impossible to find.

Still, in programming we are in effect editing the encoded message all the time. When the intention in the problem changes from A to B, the programmers in fact have to replay the whole thought experiment described above:

  1. identify the image of A in the code – effectively all the places where A had an effect on the code. This is called code-scattering in aspect oriented programming.
  2. encode B in terms of the same implementation assumptions that were in force when A and the rest of the code were first coded.
  3. edit the code by removing the image of A and inserting the image of B.

This is true for all the other activities mentioned earlier – for testing, optimizations, or even documentation.”