<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title>Edi Wang</title><subtitle>Microsoft MVP for Azure</subtitle><rights>© 2009 - 2026 edi.wang</rights><updated>2026-11-08T15:00:44Z</updated><generator uri="https://edi.wang">Moonglade v16.10.0-preview.1</generator><entry><id>7f5c271a-3ff1-4738-8b3d-ff26626245a0</id><title>Microsoft MVP Testimonial: Transforming Lives in the Elite Tech Community</title><updated>2023-08-17T01:59:50Z</updated><published>2023-08-17T01:59:50Z</published><link href="https://edi.wang/post/2023/8/17/microsoft-mvp-testimonial-transforming-lives-in-the-elite-tech-community" hreflang="en-us" /><author><name>Edi Wang</name><email>Edi.Wang@outlook.com</email></author><category term="Work" /><content>&lt;blockquote&gt;
&lt;p&gt;This is the English translation of my post in Simplified Chinese by &lt;a href="https://learn.microsoft.com/en-us/azure/ai-services/openai/?WT.mc_id=AZ-MVP-5002809" target="_blank" rel="noopener"&gt;Azure Open AI&lt;/a&gt;, you may also&amp;nbsp;&lt;a href="/post/2023/8/15/microsoft-mvp" target="_blank" rel="noopener"&gt;read the article in original language&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;The Microsoft Most Valuable Professional (MVP) award is a prestigious recognition bestowed by Microsoft to individuals who have made outstanding contributions in the technical community. I am honored to have received this award continuously for the past six years. In this article, I will share my understanding of the MVP award and its impact on both myself and the community.&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;img src="/image/img-f122dff1-7663-4b1a-ad7f-2179e5a02908.jpg" border="0" alt="" loading="lazy"&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="color: #7e8c8d;"&gt;(Figure: Microsoft MVP Award Trophy)&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;Foreshadowing&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;Since my childhood, I have had a strong interest in computers. In the summer vacation of 2008, I took advantage of that time to self-study .NET programming, preparing myself for the upcoming college life. During that period, I primarily relied on tutorials provided by the "MSDN Webcast" website, and I distinctly remember that before each lesson, the instructor, Mr. Su Peng, proudly announced his title:&amp;nbsp;&lt;strong&gt;Microsoft Most Valuable Professional (MVP) and Microsoft Invited Lecturer&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Upon entering college, I realized that the course content was far from sufficient to meet the needs of real-world programmers. As a result, I personally purchased the book "C# and .NET 3.5 Advanced Programming" and was pleasantly surprised to see the&lt;strong&gt; Microsoft MVP logo &lt;/strong&gt;on its cover.&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;img src="/image/img-181b09ef-6916-4704-93d1-91cb30366f30.jpg" border="0" alt="" loading="lazy"&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="color: #7e8c8d;"&gt;(Figure: &lt;em&gt;Pro C# 2008 and the .NET 3.5 Platform&lt;/em&gt; book)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The first year after graduation, being a passionate Microsoft fan, I spent half of my monthly salary to attend the TechEd 2013 technology conference. To my delight, I discovered that &lt;strong&gt;many of the speakers were Microsoft MVPs&lt;/strong&gt;. The title "Most Valuable Professional" continued to shine brightly in my heart, filling me with deep admiration.&lt;/p&gt;
&lt;h2&gt;A Good Person's Recommendation&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;Although my college life was ordinary and unremarkable, I have been fortunate in my journey in the field of technology. My first job was at &lt;a href="https://www.infosys.com/" target="_blank" rel="noopener"&gt;Infosys&lt;/a&gt;, an Indian software outsourcing company. While it may not have the same reputation as BAT (Baidu, Alibaba, Tencent), my colleagues there were all exceptional individuals. Among them was a person known as "Loushang Nage Shushu" (&lt;a href="https://mvp.microsoft.com/en-US/mvp/profile/54b8c201-acc5-e611-80f9-3863bb34cb20" target="_blank" rel="noopener"&gt;Zheng Xing&lt;/a&gt;), who crossed paths with me on the same project. At that time, Microsoft's &lt;a href="https://en.wikipedia.org/wiki/Windows_Phone" target="_blank" rel="noopener"&gt;Windows Phone&lt;/a&gt; was rising rapidly (although it eventually met its demise), and &lt;a href="https://mvp.microsoft.com/en-US/mvp/profile/54b8c201-acc5-e611-80f9-3863bb34cb20" target="_blank" rel="noopener"&gt;Zheng Xing&lt;/a&gt;, with his unique talents in Windows Phone development, won the legendary "&lt;strong&gt;Microsoft Most Valuable Professional&lt;/strong&gt;" award, which deeply impressed and inspired me.&lt;/p&gt;
&lt;p&gt;I developed a habit during my college days, which was to &lt;strong&gt;write technical blogs&lt;/strong&gt;. I built my blog from scratch using ASP.NET, allowing me to learn, practice, and document my experiences simultaneously. Since I didn't have a girlfriend and had plenty of free time outside of work, I dedicated a significant amount of time to technical research. Every month, I managed to produce 6-7 articles, unaware that this was already a substantial output. Little did I know that writing blogs was considered an important contribution path in the evaluation process of the Microsoft MVP program.&lt;/p&gt;
&lt;p&gt;In 2015, the release of Windows 10 once again ignited the excitement within me as a passionate follower. I stayed up late, tirelessly engaging in UWP (&lt;a href="https://learn.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide?WT.mc_id=AZ-MVP-5002809" target="_blank" rel="noopener"&gt;Universal Windows Platform&lt;/a&gt;) development and accumulated a substantial amount of blog content and a few popular applications (although Microsoft's product line in this area did not ultimately succeed). One day, &amp;nbsp;&lt;a href="https://mvp.microsoft.com/en-US/mvp/profile/54b8c201-acc5-e611-80f9-3863bb34cb20" target="_blank" rel="noopener"&gt;Zheng Xing&lt;/a&gt;&amp;nbsp;suggested that I consider applying for the Microsoft MVP program, and he recommended me to &lt;a href="https://twitter.com/liangmew" target="_blank" rel="noopener"&gt;Christina Liang&lt;/a&gt;, the MVP lead for the Greater China region. At that time, I didn't have high expectations. After all, I was just an ordinary person from a second-tier university, working in an average company. How could I possibly be on the same level as those experts who write books and give speeches?&lt;/p&gt;
&lt;p&gt;To my surprise, after several months of communication and evaluation by Microsoft's headquarters in the United States, I was successfully awarded the Microsoft Most Valuable Professional (MVP) title in October 2017, focusing on Windows development technology. This news caught me completely off guard and left me speechless.&lt;/p&gt;
&lt;p&gt;Now I believe even more strongly that &lt;strong&gt;education is just a phase in one's life, and that skills and abilities are lifelong assets&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Two years later, I shifted my focus away from Windows and delved into the field of cloud computing. I applied for the &lt;a href="https://go.edi.wang/aka/mvp" target="_blank" rel="noopener"&gt;Azure MVP&lt;/a&gt; and was successfully awarded the title, a recognition that continues to this day.&lt;/p&gt;
&lt;h2&gt;The enthusiastic community and top-tier technical circles&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;One month before the official announcement, Christina invited me and a few current MVPs in Shanghai to meet up. During this process, I gradually learned that Microsoft MVPs have their own activities, such as the &lt;strong&gt;&lt;a href="https://summit.microsoft.com/en-us/" target="_blank" rel="noopener"&gt;MVP Global Summit&lt;/a&gt;, MVP China Summit&lt;/strong&gt;, and they often send out small gifts. They also form a close-knit community, where they can organize and participate in technical events, and deliver speeches at conferences. All of this surprised me greatly and left me in awe, as I had previously mistakenly believed that becoming an MVP was like passing an English proficiency test and that was the end of it. In reality, after becoming an MVP, I realized that I had become part of an active technical community.&lt;/p&gt;
&lt;p&gt;&lt;img src="/image/img-ea4f04c7-cae4-46ae-a584-baea3271f99e.jpg" border="0" alt="" loading="lazy"&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="color: #7e8c8d;"&gt;(Figure: 2017 China MVP Community Connection)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;This technical community is unlike any I have encountered before. Compared to the dull and traditional programmers, this community is filled with enthusiasm and a positive atmosphere. This is precisely the spirit of Microsoft MVPs: &lt;strong&gt;not only possessing technical expertise but also being eager to share it&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Due to the community members coming from all over the world, &lt;strong&gt;diversity and inclusion&lt;/strong&gt; have become particularly important. Regardless of gender, race, skin color, beliefs, political views, or even physical and mental characteristics, MVPs prioritize mutual respect. In the Chinese MVP community, there are even some who have met through this program and eventually entered into marriage.&lt;/p&gt;
&lt;p&gt;&lt;img src="/image/img-6b09ddd1-bc02-4f77-8cfb-0cc35b99bca9.jpg" border="0" alt="" loading="lazy"&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="color: #7e8c8d;"&gt;(Figure: China MVP at Tech Summit 2018 conference)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;One of the most unforgettable experiences during my time in the MVP program was attending the &lt;strong&gt;MVP Global Summit at the Microsoft headquarters in the United States in 2019&lt;/strong&gt;, which I mentioned in an article before. This annual event brings together MVPs from around the world, gathering at the Microsoft campus to listen to Microsoft's untold technical secrets and share their own research achievements. In the Microsoft campus, &lt;strong&gt;every step you take could potentially lead you to encounter globally renowned tech gurus&lt;/strong&gt;. Some of these gurus have &lt;a href="https://en.wikipedia.org/wiki/Anders_Hejlsberg" target="_blank" rel="noopener"&gt;created programming languages used by 40% of programmers worldwide&lt;/a&gt;, and some have released software packages with &lt;a href="https://github.com/NuGet/NuGetGallery/issues/8476" target="_blank" rel="noopener"&gt;download counts about to exceeding the maximum value of a 32-bit integer&lt;/a&gt;. MVPs had the privilege of taking photos with them, creating a rare and shining moment in their lives.&lt;/p&gt;
&lt;p&gt;&lt;img src="/image/img-42308ab1-5868-4a42-8655-edbf3b1066cc.jpg" border="0" alt="" loading="lazy"&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="color: #7e8c8d;"&gt;(Figure: My photo with &lt;a href="https://www.hanselman.com/" target="_blank" rel="noopener"&gt;Scott Hanselman&lt;/a&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Even more enviable is the opportunity to personally meet Microsoft founder &lt;a href="https://en.wikipedia.org/wiki/Bill_Gates" target="_blank" rel="noopener"&gt;Bill Gates&lt;/a&gt; and CEO &lt;a href="https://en.wikipedia.org/wiki/Satya_Nadella" target="_blank" rel="noopener"&gt;Satya Nadella&lt;/a&gt;. However, as a homebody, I deeply regret missing out on these two chances, and the feeling of remorse fills me with regret.&lt;/p&gt;
&lt;p&gt;As the saying goes, a person's social circle is crucial as it determines their knowledge and perspective. The Microsoft MVP community is a top-tier social circle in the field of technology. Compared to the demanding &lt;a href="https://en.wikipedia.org/wiki/996_working_hour_system" target="_blank" rel="noopener"&gt;996 work culture&lt;/a&gt;, being able to join this community is like &lt;a href="https://www.cnbc.com/2019/04/15/alibabas-jack-ma-working-overtime-is-a-huge-blessing.html" target="_blank" rel="noopener"&gt;a true blessing&lt;/a&gt; earned from past lives.&lt;/p&gt;
&lt;h2&gt;Making friends with open-source software&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;Before becoming an MVP, I had reservations about open-source software. Until 2014, Microsoft itself was widely criticized as an adversary of open-source. However, through interactions with the MVP community, I began to&lt;strong&gt; embrace open-source&lt;/strong&gt; and gradually changed my perspective.&lt;/p&gt;
&lt;p&gt;The very first program I chose to open-source was one of my Windows 10 UWP applications that led to my MVP recognition. One of them, "&lt;a href="https://github.com/character-map-uwp/Character-Map-UWP" target="_blank" rel="noopener"&gt;Character Map UWP&lt;/a&gt;," received significant contributions from the community after being open-sourced. It not only made great strides in terms of functionality and performance but also achieved tremendous success among professionals and a large user base. The app has surpassed millions of installations, and it is even being used by employees of Microsoft's Windows product group. Such achievements would not have been possible without the support of open-source.&lt;/p&gt;
&lt;p&gt;&lt;img src="/image/img-c2f566d7-ad68-43d4-b8c3-a9036849a189.png" border="0" alt="" loading="lazy"&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="color: #7e8c8d;"&gt;(Figure: Character Map UWP Application Rewritten by Community Experts)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Another highly successful open-source project of mine is &lt;a href="https://github.com/EdiWang/Moonglade" target="_blank" rel="noopener"&gt;my technical blog&lt;/a&gt;. In 2018, when I chose to completely rewrite this project using ASP.NET Core, I also made the decision to open-source it. I integrated it with my technical expertise and incorporated 14 Azure services. However, I also listened to the community's feedback and avoided vendor lock-in, making my blog system capable of running independently of Azure. This decision was well received by users, and the community provided support for non-Microsoft platforms such as MySQL and MinIO. Now, numerous technical professionals both domestically and internationally, including Microsoft employees, use my blog system to build their own blogs. Without open-source, none of these achievements would have been possible.&lt;/p&gt;
&lt;p&gt;By leading my own open-source projects and contributing to other projects, I often encounter issues related to the .NET and Azure platforms and can provide constructive suggestions. I communicate with Microsoft's Product Group (PG) and utilize this feedback channel to convey these issues and suggestions to them. This is also one of the daily responsibilities as an MVP.&lt;/p&gt;
&lt;p&gt;I have witnessed the power and flexibility of open-source software and its positive impact on the technology community. I have started actively participating in open-source projects, contributing code and documentation, and collaborating with other members of the open-source community. This mindset shift has &lt;strong&gt;not only expanded my technical horizons but also made me more open and inclusive in embracing different technology solutions&lt;/strong&gt;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Today, open-source software has become an indispensable part of my daily work and life. It has become a valuable asset that I have gained in the MVP community.&lt;/p&gt;
&lt;h2&gt;Fame or profit&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;The book "&lt;a href="https://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar" target="_blank" rel="noopener"&gt;The Cathedral and the Bazaar&lt;/a&gt;" provides a deep analysis of the open-source model, pointing out that in this model, the hacker spirit seeks a "gift culture" that goes beyond monetary rewards. This culture is more inclined towards gaining reputation and status within the technology community. People do not contribute without reason, and this is true for MVPs as well. Apart from the benefits such as genuine software provided by Microsoft and its partners, we do not receive monetary rewards but rather a sense of honor.&lt;/p&gt;
&lt;p&gt;I come from humble beginnings, without a prestigious education or wealthy background. However, becoming a Microsoft MVP has been the sole title I proudly hold. Having the honor of being a Microsoft MVP undoubtedly provides me with many advantageous opportunities in my professional circle. I owe this to the reputation established by the veteran MVPs for this brand. Within my company, my colleagues trust my technical abilities more because I am an MVP. In my daily life, when I introduce myself to others, I often receive appreciation for the title of Microsoft MVP.&lt;/p&gt;
&lt;p&gt;I deeply admire Microsoft's mission. From the initial goal of "&lt;strong&gt;a computer on every desk and in every home&lt;/strong&gt;" to the current mission of "&lt;strong&gt;empower every person and every organization on the planet to achieve more&lt;/strong&gt;", these great objectives drive the continuous progress of human civilization. Becoming a Microsoft MVP allows me to be a part of this driving force behind the mission, and it is something I take great pride in.&lt;/p&gt;
&lt;p&gt;Compared to those who earn their living through performance and eloquence, it is not shameful for technical professionals to pursue fame and fortune through their intelligence and skills. This is another important asset that the MVP program possesses.&lt;/p&gt;
&lt;h2&gt;Always be humble&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;Despite receiving the Microsoft MVP award, I always maintain a humble attitude. I understand that the significance of this award lies in my contributions to the technical community, rather than just personal honor.&lt;/p&gt;
&lt;p&gt;Firstly, &lt;strong&gt;six years in the MVP community is not exceptional, in fact, it's relatively short&lt;/strong&gt;. MVPs worldwide undergo a renew process every year, where Microsoft in the United States reviews the technical contributions of each MVP over the past year to ensure the quality and value of the program. If we become complacent and fail to persist in learning and improving, we run the risk of being phased out. Therefore, the six years of MVP experience are also a continuous growth process.&lt;/p&gt;
&lt;p&gt;Secondly, in the field of technology, the more we learn, the more we realize our own ignorance. Take my award category as an example, Microsoft Azure has hundreds of products and services, and I am only familiar with a dozen or so. In the programming industry, we often encounter people who think they have mastered the entire software development just because they can write CRUD operations. I have also had this arrogant stage when I was young, although I have now left the realm of being a "frog at the bottom of a well", but I am well aware that the land and sky I see after climbing out of the well do not represent the entirety of the world. There is still the Earth, the solar system, the Milky Way galaxy, and the entire universe. The more we look outward, the more we realize our ignorance and insignificance.&lt;/p&gt;
&lt;p&gt;I will continue to dedicate myself to sharing knowledge, helping others, and driving technological progress. I believe that &lt;strong&gt;humility is an important quality for a successful technical expert&lt;/strong&gt;. It keeps me eager to learn and grow, and constantly reminds me that there is always more to learn.&lt;/p&gt;
&lt;h2&gt;Closing&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;Several years ago, Microsoft Most Valuable Professional (MVP) set an excellent example for me in the technical community, which ultimately led me to decide to join the program through hard work. The Microsoft MVP program has allowed me to enter the top-tier technology circle, meet various outstanding talents, and has brought me abundant benefits and reputation. It has also changed my perspective on open-source software. I sincerely appreciate Microsoft for providing me with such a platform; it has been a crucial experience in my life. I will continue to remain humble and contribute to the technical community through my passion and abilities.&lt;/p&gt;</content></entry><entry><id>e86e69b4-1231-444a-8d8c-fa57af094299</id><title>2019 年终回顾：不忘初心，负重前行</title><updated>2019-12-23T22:24:33Z</updated><published>2019-12-23T22:24:33Z</published><link href="https://edi.wang/post/2019/12/23/2019-year-review-looking-back-moving-ahead" hreflang="zh-hans" /><author><name>Edi Wang</name><email>Edi.Wang@outlook.com</email></author><category term="Work" /><content>&lt;p&gt;2019 年就要接近尾声，这一年对于我来说，有许多有意义的事件。我成长了许多，并依然保持着对技术的热情。在辞旧迎新之际，我想回顾一下我这一年中有意义的事件与收获，期待与大家一起在2020年继续成就不凡！&lt;/p&gt;
&lt;h2&gt;微软 MVP 全球峰会&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;今年3月，我有幸参加了在美国雷德蒙微软总部举办的MVP全球峰会，这是我第二次去美国，第一次去西雅图。我从小就崇拜比尔&amp;middot;盖茨先生及他创办的伟大的微软公司，而去微软总部参观，可以说是&amp;ldquo;朝圣&amp;rdquo;，我儿时的梦想之一终于实现，这次MVP全球峰会总算是拔了颗0x14年的草了。&lt;/p&gt;
&lt;p&gt;&lt;img src="/image/img-b44c3c01-fb57-4dde-8adc-c4c646852fa3.jpg" border="0" alt="" loading="lazy"&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="font-size: 0.95rem; color: #7e8c8d;"&gt;（图：呼吸着微软总部的空气）&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;微软总部的园区非常大，需要乘坐 shuttle bus 穿梭于各个大楼之间。我们的会场在 Building 33，即&amp;nbsp;&lt;strong&gt;Microsoft Conference Center&lt;/strong&gt;。4天的大会日程非常充实，可以了解到还未发布的新功能，也可以大量汲取其他MVP分享自己的技术精髓。&lt;/p&gt;
&lt;p&gt;&lt;img src="/image/img-a8dbbaab-1ce0-40b0-9bab-22305624c720.jpg" border="0" alt="" width="600" height="450" loading="lazy"&gt;&lt;/p&gt;
&lt;p&gt;会议期间，我十分幸运地见到了两位久仰已久的专家&amp;mdash;&amp;mdash;&lt;strong&gt;James Newton King&lt;/strong&gt;，可能&lt;strong&gt;全世界所有的 .NET 程序员都用过他写的库&lt;/strong&gt;，即大名鼎鼎的 Json.NET (Newtonsoft.Json) ，NuGet 下载量达到了3000万，排名第一，他现在也就职于微软。&lt;/p&gt;
&lt;p&gt;&lt;img src="/image/img-1657d282-6980-4bb3-9e4d-a54208c0ba05.jpg" border="0" alt="" loading="lazy"&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="color: #7e8c8d;"&gt;(图：汪宇杰, James 和闫晓迪)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;另一位大佬是大名鼎鼎的&amp;nbsp;&lt;strong&gt;Scott Hanselman&lt;/strong&gt;&amp;nbsp;，关注 ASP.NET（尤其是 MVC）的不少技术从业者都看过他写的书，即著名的红皮书之一。在微软的 Channel 9 视频网站上也经常有他的节目，我刚工作那会儿经常回家后躺在床上看他的节目学习技术，从没想过能有一天能与大佬面基！&lt;/p&gt;
&lt;p&gt;&lt;img src="/image/img-af0a6d04-f298-4331-b2c4-12883fc1c1e9.jpg" border="0" alt="" loading="lazy"&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="color: #7e8c8d;"&gt;（图：与 Scott Hanselman 合影）&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;说到 Channel 9，此次峰会期间我也巧遇了正在录制&amp;nbsp;&lt;strong&gt;Visual Studio 2019 发布会&lt;/strong&gt;视频的现场，视频的内容即 VS 的历史版本回顾，摄制组带来了上古时候的 Visual Studio .NET、2003、2005和2008的包装盒。作为 .NET 程序员的我被勾起了童年的回忆，初中时候购买盗版VS.NET 光盘的画面历历在目，而17年后我居然摸到了正版产品的包装盒，它们奠定了我程序员的道路，心里百般滋味。&lt;/p&gt;
&lt;p&gt;我工作后自费补票了所有微软及非微软的正版软件。作为 MVP，现在也可以免费使用 Visual Studio Enterprise 版本，神清气爽。&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #7e8c8d;"&gt;&lt;img src="/image/img-e66f49fe-e458-4598-a4ce-6daa0a91232f.jpg" border="0" alt="" width="600" height="450" loading="lazy"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="color: #7e8c8d;"&gt;（图：Channel 9 摄制组携带的古董）&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;国内程序员比较耳熟能详的还有轮子哥、鸭哥这两位优秀的微软专家，这次去西雅图也和他们面了基，一起吃了牛排，倍感荣幸。&lt;/p&gt;
&lt;p&gt;微软的员工商店很有趣，里面除了 Windows、Office、Surface 等软硬件产品，还有很多田牌小周边，剁手根本停不下来！&lt;/p&gt;
&lt;p&gt;&lt;img src="/image/img-8b339f04-d782-487c-aba5-cec8e98a4261.jpg" border="0" alt="" loading="lazy"&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="color: #7e8c8d;"&gt;（图：微软员工商店）&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Visitor Center 俨然一个微软历史博物馆，比如下面这份95年的陈酿：&lt;/p&gt;
&lt;p&gt;&lt;img src="/image/img-7b2943c0-eedf-4e2e-8df6-99241cae6b11.jpg" border="0" alt="" width="600" height="450" loading="lazy"&gt;&lt;/p&gt;
&lt;p&gt;微软的第一份代码：&lt;/p&gt;
&lt;p&gt;&lt;img src="/image/img-6d076fab-e834-475c-b192-c001249857c9.jpg" border="0" alt="" loading="lazy"&gt;&lt;/p&gt;
&lt;p&gt;还有上古之神们：&lt;/p&gt;
&lt;p&gt;&lt;img src="/image/img-174e7374-317a-467d-bafe-281ffa4fa4d6.jpg" border="0" alt="" loading="lazy"&gt;&lt;/p&gt;
&lt;p&gt;让我感到比较意外的是，微软 MVP 不仅可以在微软员工店、零售店打折购买微软自家产品，&lt;strong&gt;居然还能在苹果店里打折买 iPad Pro&lt;/strong&gt;，正好买了一个给家人，并且装满了微软全家桶！在西雅图这个宜居又文艺的城市，我们还参观了不少博物馆，登上了太空针，品尝了各种地道美国菜。这次微软总部之行绝对是人生中最难忘的经历之一！&lt;/p&gt;
&lt;h2&gt;博客系统开源&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;我的博客系统已经有10年历史了，从大一时候边自学边写的 ASP.NET 2.0 VB + Access 一直升级维护到后来的 ASP.NET MVC C# + SQL，到今天的 ASP.NET Core + Azure 架构。期间有不少人问我要过源代码，尽管我一直在博客上分享技术文章，但从没完全开源过博客系统本身。而去年 .NET Core 成熟之后，我也像纳德拉刷新微软一样，使用 ASP.NET Core + Azure 重写了整个博客系统，经过极度精简和优化的全新博客在&lt;strong&gt;性能、功能、稳定性上都全方位无死角碾压了之前的 .NET Framework 版本&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src="/image/img-c522a499-6f67-4913-bcd8-9dc7b0382b21.png" border="0" alt="" loading="lazy"&gt;&lt;/p&gt;
&lt;p&gt;随着阅历的增长，我也意识到开源并不等于拱手相让自己的心血，尽管国内有很多无良的培训班、淘宝店家喜欢把人家的开源项目拿下来改logo卖钱，但这样的人还是少数。前年开源《Character Map UWP》应用后获得极大的社区帮助，也让我认识到了&lt;strong&gt;开源的力量比单打独斗强多了&lt;/strong&gt;。因此我决定完全开源博客，和博客用到的所有自己写的轮子。于是，2019年，我的&amp;nbsp;&lt;strong&gt;GitHub 活跃度激增，一年后，我终于和路边的花坛一样努力了！&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;而这个过程，并不只是我的代码对开源社区有帮助，可以让别人部署自己的博客，开源社区对于我的博客系统也提了很多关键意见，寻找了不少 Bug。系统不论从功能、稳定性还是代码质量上都有了明显的改进。&lt;/p&gt;
&lt;p&gt;&lt;img src="/image/img-42947f4a-c5be-4923-a180-10de1f82a2d3.png" border="0" alt="" loading="lazy"&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="color: #7e8c8d;"&gt;（图：2019年GitHub贡献）&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/image/img-9143e3b1-8611-40d8-9011-6ffeba7a783f.jpg" border="0" alt="" loading="lazy"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/image/img-7da44232-c648-4779-bfaf-4f5ebc3ea805.jpg" border="0" alt="" loading="lazy"&gt;&lt;/p&gt;
&lt;p&gt;今年和我的博客一起开源的还有我的第一个 UWP 作品《描图》也是代表作之一。这是我早年开发的一款画图软件，达到了百万下载量，曾经获得IT之家、Windows Central 等国内外知名媒体推荐。但是由于精力有限以及 UWP 平台的一些无奈，我无法继续维护这些 Windows 应用，于是决定开源给社区，并退出 UWP 方向。&lt;/p&gt;
&lt;p&gt;&lt;img src="/image/img-bc6a70be-7078-47a6-b532-4569d9abfc27.jpg" border="0" alt="" width="600" height="415" loading="lazy"&gt;&lt;/p&gt;
&lt;p&gt;拥抱开源以来，我的技术成长和收获实现了质的飞跃， GitHub 这个平台及 MVP 组织给了我与世界顶尖高手交流的机会。更重要的是，我懂得了一个道理：&lt;strong&gt;无知并不可怕，可怕的是傲慢&lt;/strong&gt;。曾经的我和曾经的微软一样，认为自己的心血不能白送给别人，也经常嘲讽开源软件的各种毛病，而如今，我重新认识了开源，就像不少人重新认识微软一样，&lt;strong&gt;只有放下彼此的偏见和傲慢，才能携手进步。&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;Azure Global Bootcamp&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;4月的 Azure Global Bootcamp 由胡浩老师等 MVP 前辈承办，今年我也有幸参与其中，这是我在 Azure 方向首次演讲。我分享的话题正是我博客使用的一个 Azure 明星服务：App Service。尽管从2012年我就接触了微软云（当年还叫 Windows Azure），但由于不是我平时工作所用的技术，熟悉程度不如 .NET，所以我一直对自己没有信心。后来我从微软开发者市场的朋友那边了解到，国内懂 Azure 的人太少了。而用过 Azure的我深知这个平台对于现代公司数字化转型的强大帮助，可以&lt;strong&gt;节省大量的人力成本，让程序员少收福报&lt;/strong&gt;，所以我觉得非常有必要推广这个平台。&lt;/p&gt;
&lt;p&gt;&lt;img src="/image/img-c9a5ea76-a015-4f6d-a254-62537ef65416.jpg" border="0" alt="" loading="lazy"&gt;&lt;/p&gt;
&lt;p&gt;我认真准备了我的第一次 Azure 课程，并作为新方向的起点去努力。微软 CEO 纳德拉在《刷新》一书中也表达过不要停留在Windows这种已经成熟的舒适区，&lt;strong&gt;现在已经移动为先云为先的时代了，抓住机会才能继续立足这个世界&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src="/image/img-2a8af835-76df-4375-9689-07142cb386cd.jpg" border="0" alt="" loading="lazy"&gt;&lt;/p&gt;
&lt;h2&gt;微软上海Reactor开幕&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;今年微软在上海开设了中国第一个 Reactor 社区空间。我有幸受邀作为开幕式的演讲嘉宾之一，带来了《Azure, 原力觉醒&amp;mdash;&amp;mdash;云原生应用开发实践》主题的分享。还面基了久仰大名的韩俊老师。&lt;/p&gt;
&lt;p&gt;&lt;img src="/image/img-e73d6bae-88dc-48b9-9ae7-879ac1645de7.jpg" border="0" alt="" loading="lazy"&gt;&lt;/p&gt;
&lt;p&gt;这次的分享依然围绕着我的博客系统，与之前不同的是，我分享了博客在 Azure 云端的完整架构实践，并介绍了Azure 在容器方面的优秀方案，贯穿应用从构建到上线的各方面。&lt;/p&gt;
&lt;p&gt;&lt;img src="/image/img-6e934016-bca3-48f4-a331-f8af7215af20.jpg" border="0" alt="" loading="lazy"&gt;&lt;/p&gt;
&lt;h2&gt;微软云课首播&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;9月25日，我的第一次线上课程在《微软云课》平台首播了。内容为 App Service 及 Azure SQL Database。介绍微软云 Azure 上的两个 PaaS 服务，结合实例演示 App Service 以及 Azure SQL 数据库相对传统虚拟机方式部署网站的巨大优势，演示如何创建和部署网站，并绑定域名证书、定时备份、自动扩容、使用服务编辑器以及部署槽。&lt;/p&gt;
&lt;p&gt;&lt;img src="/image/img-214d5276-ed0c-460f-b7dd-e63fd69b4efe.jpg" border="0" alt="" loading="lazy"&gt;&lt;/p&gt;
&lt;h2&gt;公司招聘宣讲会，入职5年&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;11月底，我有幸与我司 VP 及人力等同事在某科技园区一同给40多名大学生进行了一次颇有意义的校园宣讲会。这一次我内心里有一些忐忑，因为我将要面对工作经历像一张白纸一样的同学们，他们对技术方向或职场都相对缺乏判断力，我需要保持谨慎，有可能说错一句话都会影响到他人的职业方向。8年前的自己，同样听过校园宣讲会。当年的我怀着对技术的憧憬，选择了一家印度软件外包巨头的 .NET 开发职位作为我职业生涯的起点。&lt;/p&gt;
&lt;p&gt;我分享的话题也是.NET技术，我们的消费者产品和银行即服务（BaaS）平台都采用该技术。尽管.NET在世界范围内生机勃勃，但是在国内，使用它比较多的还是外企。这场宣讲会的学生里也有不少我母校的学弟学妹，他们都是Java背景，而我接到.NET宣传任务的时候，有些激动，也有些彷徨。激动的是作为.NET社区的一份子，终于能有机会宣传这个优秀的技术。彷徨的是，又得和 Java 比了，这两者的比较就如同 AK47 步枪和 M4A1 卡宾枪，只有适合的场景，没有绝对的好坏，任何一个阵营的人都能说出对方的缺点和自己的优势。所以我选择说实话，告诉同学们 .NET Framework 的悲剧故事，也给他们展示开源跨平台重生后的 .NET Core 以及 C# 精炼简洁的语法。我想说明的并不是 C# 语法简于 Java 所以选择 .NET，而是 .NET 生产力和云原生等优势对于企业的重要性，也向同学们介绍了我们企业重视生活和工作平衡等巨大优势。&lt;/p&gt;
&lt;p&gt;现场的同学们进行了积极的反馈，让我非常惊喜与高兴。虽然我不知道他们未来是否会选择我们公司，以后是否继续用 .NET 技术，但我知道，我们这样的企业可以在轻松的环境下培养一批 .NET 开发者，.NET 在国内一定后继有人。&lt;/p&gt;
&lt;p&gt;今年也是我入职 Green Dot 公司的第五年，同时也是公司成立20周年。我见证了公司从几十人挤在一间小办公室，到几百人在崭新的办公室一起为公司庆生的发展历程。非常幸运能遇到优秀的同事们，也期待来年能继续发挥专长，让技术予力公司成就不凡！&lt;/p&gt;
&lt;p&gt;&lt;img src="/image/img-307d8ec9-f4e2-4d22-879d-385c5c34197a.jpg" border="0" alt="" loading="lazy"&gt;&lt;/p&gt;
&lt;h2&gt;编程一小时&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;12月中旬，又到了年度全球计算机教育周。今年的活动位于上海计算技术研究所，并请来了code.org的课程研究专家Elizabeth Bacon老师进行主题演讲。我们的教材依然是《我的世界》编程游戏，今年的课程有了3D体验，主题为《AI for Good》，指导小朋友对机器人进行训练，让机器人识别易燃物从而达到防火的目的。和小朋友们一起的时间总是短暂而快乐，我们也他们身上挖掘出了许多闪光点，甚至感叹个别孩子的智慧程度远超我们自己的当年。时代在进步，如今的教育水平和设施也有着大幅度的提升，我相信这些孩子们未来一定能成为中国以及世界的栋梁。&lt;/p&gt;
&lt;p&gt;&lt;img src="/image/img-a1f3d0fb-d9ab-440c-9175-a0fe6407481a.jpg" border="0" alt="" loading="lazy"&gt;&lt;/p&gt;
&lt;h2&gt;收获与感悟&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;如果要用两个字来总结2019年的收获，那就是&amp;ldquo;成长&amp;rdquo;。今年我还参与了纽约大学学生参观微软、微软创新杯培训等其他众多社区活动，同时也保持着博客文章以及开源代码等线上贡献。&lt;/p&gt;
&lt;p&gt;我完成了年初的目标&amp;mdash;&amp;mdash;努力克服程序员的社交恐惧，更多参与到线下交互，在微软美国总部的拜访不仅让我大开眼界，了解到更广阔的星辰大海，也让我的演讲和备课经验更加丰富。所以，凡事都不要先急于否定自己，觉得&amp;ldquo;我办不到，我不适合&amp;rdquo;，大胆去做自己没做过的事，说不定有意想不到的收获。今年业余时间我更加积极参与开源，也完全改变了我对开源世界的认知。我从几年前的开源嘲讽者变成了开源拥护者，就像许多软黑随着微软开源开放而转变为软粉，只要我们彼此放下高傲和成见，互相学习，取长补短，就能共同进步。&lt;/p&gt;
&lt;p&gt;我非常感谢 Green Dot、微软公司以及 MVP 和社区朋友们，没有你们的培养、帮助与支持，我无法成长为今天的我。今年也是我30岁的启程，都说程序员30了，就该转行送外卖挣钱植发了，这个行业确实需要不停的学习，如果没有兴趣，当然很累，好在18年前，我出于兴趣，给自己定了长大从事 IT 行业的目标，而18年后，我依然能在这个行业保持兴趣和热情，我会继续证明，年龄不必成为程序员生涯的终结！&lt;/p&gt;
&lt;p&gt;2020 是下一个征程，我的初心不变，我会做好本职工作并积极贡献社区，期待与大家一同成长！&lt;/p&gt;</content></entry><entry><id>bb96c52c-350c-41fe-81c4-d8a6f9707a9b</id><title>毕业生码农防坑纲要</title><updated>2012-12-25T09:06:06Z</updated><published>2012-12-25T09:06:06Z</published><link href="https://edi.wang/post/2012/12/25/anti-kendie-guideline-for-diaos-coders" hreflang="zh-hans" /><author><name>Edi Wang</name><email>Edi.Wang@outlook.com</email></author><category term="Work" /><content>&lt;p&gt;进公司1.5年了，被坑无数。简单整理了一下防坑纲要，已警后人，尤其是毕业生。这些事情也不都是发生在我身上的，做个总结而已，此事不宜在网络上细说。&lt;/p&gt;
&lt;h2&gt;1. 帮个小忙&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;如果有人要你过去帮个小忙，我是指，去某个项目里，作为&amp;ldquo;外聘&amp;rdquo;帮个&amp;ldquo;小忙&amp;rdquo;。请务必非常慎重，因为你很有可能就&amp;ldquo;一去不复返&amp;rdquo;了。记得刚进公司不久，我有一位同学，就因为表现比较出色，被提前拉去一个项目组帮了个小忙，结果这个小忙一帮就帮到现在，帮到连部门老大都走了。并且，那时候我们还算是实习，甚至不是&amp;ldquo;试用期&amp;rdquo;，但如果你不幸被帮了小忙，很可能就得每天加班了。实习加班是毫无任何福利的。前一阵子我也被帮了个小忙，结果经常被做无意义的需求，和被别人的bug debug，每天为了证明自己的清白在代码里找证据，非常不愉快。&lt;/p&gt;
&lt;h2&gt;2. 会和不会&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;毫不客气的说，大多数的毕业生毛都不会。如果你比他们厉害，请尽量装作不会。如果你不幸会的比较多，那就会有很多&amp;ldquo;帮个小忙&amp;rdquo;的机会。并且，大多数情况下你都不太好意思拒绝，大家懂的。&lt;/p&gt;
&lt;p&gt;我不是提倡大家掩盖自己的本事。而是因为，在初期阶段，大家都会被非常平等的对待。你会的再多，表现的再出色，换来的绝对不是加薪，而是比别人多的工作量和加班。在大公司，要加薪，得等level涨到能被加工资的时候。在那之前，暴露自己的本事一点好处都没有。最多给你发个&amp;ldquo;好猿卡&amp;rdquo;作为奖励。&lt;/p&gt;
&lt;h2&gt;3. 加班&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;如果有人给你灌输&amp;ldquo;新来的就应该加班&amp;rdquo;，千万不要当回事。记住一个简单的原则，加班，只加自己应该完成的工作。和前面一点一样，刚来的毕业生，再加班也不会有好处。因为评奖，加工资，都是level提升以后的事，前期是按年限算的，不会因为你刚来就特别厉害特别吃苦而给你开exception提升一下。&lt;/p&gt;
&lt;h2&gt;4. 请假&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;请假要分两种情况。年假和普通假。我的原则很简单，年假是自己的福利，本来就拿着屌丝的薪水，再不抓住福利就太说不过去了。平时的话，不要因为一些鸡毛蒜皮的小时耍矫情，给人留下不认真，浮躁的印象。&lt;/p&gt;
&lt;h2&gt;5. 代码管理&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;如果你水平比队友们差，那请你每天工作之前都把当前的代码打包备份，不要依赖于Source Control。如果因为你的问题给别人带来麻烦，是非常恶心的事。&lt;/p&gt;
&lt;p&gt;如果你的水平比队友们好，那也请你每天工作之前都把自己的代码打包备份。因为万一有人弄烂了代码，最后merge和fix的人都是你，谁让你比较厉害呢？&lt;/p&gt;
&lt;h2&gt;6. 开会&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;开会记得保持低调，如果你有好点子，私下里邮件说比较好。如果你会的比较多，点子比较亮，很可能以后做这件事的就是你。也很可能让人家对你产生反感。本来能用传统方法搞好的东西，就因为你一句话取悦了领导，得改你的东西用，浪费他人时间。记住，不是每个IT人都是热爱技术，并且为了技术而工作的。&lt;/p&gt;
&lt;h2&gt;7. 总结&lt;/h2&gt;
&lt;hr&gt;
&lt;ul&gt;
&lt;li&gt;做人要低调，但不能没腔调。&lt;/li&gt;
&lt;li&gt;能者多劳&lt;/li&gt;
&lt;li&gt;别以为IT行业真的只靠大脑和双手不靠脸皮和嘴&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;8. 为什么我说这些&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;看完前面的纲要，也许你会认为我价值观扭曲。确实，毕业之后三观已经全部扭曲了。现实是残酷的，雷锋不是每个人都当的起的。在现实面前，多拿点报酬比多几个荣誉证书更实用。没有一点积蓄是没办法谈理想和目标的。&lt;/p&gt;</content></entry><entry><id>68ad8923-5beb-485b-8565-6bd3548e3e92</id><title>Infosys工作一年感触</title><updated>2012-09-24T09:10:17Z</updated><published>2012-09-24T09:10:17Z</published><link href="https://edi.wang/post/2012/9/24/infosys-one-year-looking-back" hreflang="zh-hans" /><author><name>Edi Wang</name><email>Edi.Wang@outlook.com</email></author><category term="Work" /><content>&lt;p align="left"&gt;现在已经快10月了，除去在嘉兴培训的日子，进Infosys工作已经一年了。就这一年里的感受做一些回顾和总结。我会以客观、公正的角度描述这一年的事情，给想要进Infosys的毕业生做一个参考。&lt;/p&gt;
&lt;h2 align="left"&gt;1.刚毕业的人不要抱怨工资问题，首先要学会做事&lt;/h2&gt;
&lt;hr&gt;
&lt;p align="left"&gt;我和我同学比较特殊，是毕业前就来公司的，这可能是学校为了提高就业率而计划的，所以我们是和别的学校的同学一起从嘉兴培训中心毕业到公司的，但转正比他们要晚一年，之前均算作实习。&lt;/p&gt;
&lt;p align="left"&gt;在Infosys实习，工作时间和内容和正式员工是一样的。实习工资是1800，转正以后是3300（税前）。不少人抱怨工资低，其实我认为，实习的工资不算低，而且说句公道话，刚大学毕业的学生，有几个会做事的？特别是眼高手低的尤其让人讨厌。不谦虚学习，还经常请假，甚至旷工，这态度就不让人喜欢。我本人，不谦虚的说，一样刚大学毕业，但我能做的事很多，但我在态度上不那么娇惯。我想，公司付你钱，不管多少，都不是义务给你的，要做的事还是必须做的。一个刚毕业的大学生，如果整天浮躁，在公司都没给公司赚钱，还好意思抱怨工资，实在是羞耻。转正以后的工资确实低，如果你本身没有技术的话，那也就别抱怨了，跳槽到同行业说不定面试都过不了的。没本事还天天讨论跳槽的人，实在是让我非常鄙视。&lt;/p&gt;
&lt;p align="left"&gt;刚从嘉兴培训中心毕业的，通常不会直接进项目，而是先&amp;ldquo;On bench&amp;rdquo;，在这段时间里，公司会安排一些技术或领域方面的培训，平常没什么事，你可以利用这点时间学习。&lt;/p&gt;
&lt;h2&gt;2.技术就像内裤，要有，但不能逢人就证明你有&lt;/h2&gt;
&lt;hr&gt;
&lt;p align="left"&gt;我和我们这批同学接到的第一个项目，是公司给我们锻炼用的内部项目，人家可能根本不打算用，只是为了锻炼我们。公司很清楚刚毕业的大学生是什么水平，尤其是在现在这种计算机专业泛滥，世风日下，学生素质又不好的时代。对于我来说，这确实有点浪费时间，也学不到什么，但我还是抱着谦虚谨慎的态度和同学们一起做项目，人家不会的我也尽量帮忙。我这样做，一方面是可以装逼，装给同事和领导看，是有一定好处的。另一方面，教别人的同时也是对自己技术的巩固。&lt;/p&gt;
&lt;p align="left"&gt;对于装逼，要把握一个度。虽然大部分人毕业之后就像小白一样，但有技术的人也不少。这些有技术的人刚到公司，可能为了博得领导的赏识而显露自己。这无可厚非，我就是这样的，为了能证明自己的才能，证明自己与众不同，必须做一点事出来。但如果把握的不聪明，就很可能让自己变成苦逼了。我作为一个计算机爱好者，我有很多书，家里书架上3层都是我的技术书，但我带到公司看的，每次就一两本，并且我不会故意&amp;ldquo;看给别人看&amp;rdquo;。如果你很不幸，把自己的技术书都带来，在桌上叠的很高，那恭喜你，你一定成功引起了领导的注意:&amp;ldquo;这个刚毕业的大学生肯定不一般，一定要重用。&amp;rdquo;于是，就算你在实习期内，也会让你去正式的项目组&amp;ldquo;帮个小忙&amp;rdquo;，弄的不好就经常加班了，而且实习生加班是没有任何福利的。并且，转正之后工资也是和别人一样的。所以说，展现才华要有技巧，要懂得收敛。&lt;/p&gt;
&lt;h2 align="left"&gt;3.发掘自己的特长&lt;/h2&gt;
&lt;hr&gt;
&lt;p align="left"&gt;我的第一个项目是一个ASP.NET WebForm的实验性质的内部项目，PM很厉害，但他也是刚进Infosys的，对我们很好。他也知道他带的都是刚毕业的学生，所以一开始就要摸摸底，我们的第一个任务是设计UI，考察的是网页制作和设计能力，这方面我还是比较熟练的，所以很快也很优质的完成了任务，并且在后来的架构设计以及编程方面也比较出色。毕竟这种小项目的难度还不如大学里的毕业设计。也是那时候，我的PM对我有了比较好的印象。&lt;/p&gt;
&lt;p align="left"&gt;很快，一个月后我们就接到了一个正式的项目，也是公司内部的。是基于SharePoint 2010开发的，我们和我们的PM都没这方面的经验，所以请了几个很牛逼的老员工来带我们。我主要负责的是前台，也就是HTML、CSS、JS，当然，也参与了部分后台程序的编写。PM让我做前端的原因也不是说我在这方面非常优秀，而是在这个项目组里，只有我是能够做出&amp;ldquo;上的了台面&amp;rdquo;的网页的。也就是这个时候，我发现Infosys中国真的是没有UED部门的，许多项目的美工设计都要程序员自己来搞。我认为这是比较傻逼的，在这个注重用户体验的年代，没有一个专业的UI设计师很难搞出用户喜欢的软件。后来我想到，Infosys是做软件外包的，而不是做产品的。UI的影响和重要性应该没那么大，所以它才敢省下请美工的钱，让C#或Java程序员来做HTML、JS已经CSS，甚至连图片都有。给我的感觉就是堂堂一个&amp;ldquo;500强&amp;rdquo;公司居然如此不专业。&lt;/p&gt;
&lt;h2 align="left"&gt;4.学习态度&lt;/h2&gt;
&lt;hr&gt;
&lt;p align="left"&gt;这个SharePoint项目持续了很长时间，中间也有人员进出。许多都是我的同学。因为没有信心也没有能力胜任开发工作而去转测试，或去别的部门。剩下的和我一起做开发的队友，在态度上都挺不错的。这是值得我们上海同学学习的地方。外地的毕业生来上海工作，非常懂得珍惜。不是因为他们是正式员工所以才认真工作。他们中间也有实习生，和我们一样的实习生。而我们上海本地的许多同学因为家里条件好，也不肯吃苦，根本就没毅力去坚持搞IT。我本人是因为兴趣驱使而最终成为苦逼程序员的。但现在当兴趣成了压力，也就没那份热情了。&lt;/p&gt;
&lt;p align="left"&gt;项目组里的老员工是值得切磋的对象。我经常和他们讨论问题，从他们那里学到了不少实用的经验。这要比我从前自己埋头在学校研究要快的多。这也是IT公司的好处。如果你想在IT技术方面有长进，去普通公司做个小网管是不行的，只有IT公司有这个氛围和条件。&lt;/p&gt;
&lt;p align="left"&gt;公司的规章制度有时候很死板，可能大公司就是这样的，对于进项目的人来说，经常会有碰到问题需要上网查资料的时候。而这时，如果你的Job Level没有4，就不可以在10点到17点之间上网。刚进公司的毕业生Job Level都是3。Job level的直接影响除了工资以为，第二位重要的就是上网权限。所以就只能自己看一下了。在没有解决上网问题的时候，只能自己掏钱用手机或iPad查。那段时间我是常带iPad和3G上网卡的。碰到外地人来上海的，条件没那么好的，就真的只能自己看一下了。&lt;/p&gt;
&lt;p align="left"&gt;进公司以后，在技术上的长进，100%都是要靠自己的。这不像大学里，还能有老师教。公司里没人有这个义务去帮你。每个人都忙着自己的事。如果你不是妹子，别人也没那么多好心情去认真帮你。真的只能自己看一下了。所以要懂得积累。如果知道自己技不如人，平时回家又只想着玩游戏，真的是很难有出头之日的。我观察发现，有许多外地毕业生，都会准备一本笔记本，把别人教他的，哪怕是一两句话，都记在本子上。这是非常细心的。成功就是得靠这样的积累。&lt;/p&gt;
&lt;h2 align="left"&gt;5.学好英语，尤其是口语，并且注重交流&lt;/h2&gt;
&lt;hr&gt;
&lt;p align="left"&gt;一只成功的程序猿不仅要懂得与机器交流，更要与人交流。&lt;/p&gt;
&lt;p align="left"&gt;除了技术以外，我体会到的另外两点就是英语和交流能力。英语对于上海同学来说非常有优势，但口语怎么样呢？虽然印度人的口语也不好，经常被笑话，但如果我们自己连说都说不出来，那就很难出头了。我在前半年里收获最大的就是表达与写信的能力。&lt;/p&gt;
&lt;p align="left"&gt;SharePoint的这个项目，唯一坑爹的地方就是如何跟另一个在印度的团队交流。起初我们以为印度那边的编程水平很高，充满仰慕的进入项目后才发现，他们写的代码真的是不堪入目，可以当反面教材用。毫不夸张的说，这些代码的水平，和我大一时候是一样的。很难想象这居然是软件公司的代码。因此，我们产生了很多交流上的问题。我们需要让印度团队明白许多错误不是我们的责任，这通常需要PM在内的好几个人几天的邮件来回。&lt;/p&gt;
&lt;p align="left"&gt;让我最无语的一次，是有个浏览器兼容问题。测试团队发现某个页面不兼容IE7，然后我改好了，但我用的是虚拟机（XP+IE7）做的测试，结果印度那边说，虚拟机测试的不算，直接把我和我队友以及我PM直接雷暴，最后费了起码一周的时间，通过远程会议才当面演示，才最终关闭了这个bug&amp;hellip;&amp;hellip;&lt;/p&gt;
&lt;p align="left"&gt;当然，不是所有的印度人都水。只是厉害的印度人没有安排在这个项目里。公司不会把投入放在刚毕业的SE身上的。&lt;/p&gt;
&lt;h2 align="left"&gt;6.要适应外包公司的工作性质，它可能不管你会不会，让你做什么你就得做什么&lt;/h2&gt;
&lt;hr&gt;
&lt;p align="left"&gt;今年六月，我离开了SharePoint项目。和之前离开的同事一样，我感到的是解脱。然而，离开之后我们的命运就各不相同了，更大的一个坑在等着我。新接手的是Silverlight项目，这是我比较讨厌的一个技术，当然我也没有任何Silverlight的经验。好在第一个任务是做一个WCF数据导入导出的Service，这和前台技术没什么关系了，还是比较顺手的。新项目的代码尽管也都是坑，但至少比之前那个好的多，毕竟这是公司真正用来卖给客户赚钱的项目，不能乱搞。然而，在搞完WCF以后，我突然接到要求，还要在Silverlight的应用上做相应的开发，并且是在没有培训过Silverlight的情况下直接上手，不仅有RadControl，还有MVVM架构等Silverlight方向里常用的东西。对于连hello world都没写过的我来说，我表示压力山大。好在有TL会写详细文档告诉我怎么去做。但终究还是自己不会的技术，总有爆掉的时候。所以加班也就是经常的了。对于这样的加班，我不太抱怨，因为毕竟是我自己的问题。但对于公司给我分配任务的方法，我实在有点觉得不专业。&lt;/p&gt;
&lt;p align="left"&gt;我认为，能让公司和员工的利益都得到最大化的，是给员工安排适合自己的工作。不能因为你会.NET，就要让你包揽.NET平台下所有的技术。这是很愚蠢的，就像请个兽医给人看病一样。然而，不知道是不是公司对刚毕业的大学生一视同仁，觉得我们&amp;ldquo;反正是一群什么都不会的菜鸟，做什么都一样&amp;rdquo;，就让我们从数据库到service、web、设计什么都做了。当时签的合同上也没写具体的岗位。&lt;/p&gt;
&lt;p align="left"&gt;而据我所知，就算是国内的IT企业，员工也都是有明确分工的。比如前端工程师、美工设计，他们在自己的领域非常熟悉，但未必要会后台语言和数据库。所谓术业有专攻就是这个意思，这样才能最高效的运作。我也不知道为什么，在外包公司事情不是这样进行的。&lt;/p&gt;
&lt;p align="left"&gt;既然无力改变，就只能适应了。反正多学点东西也没什么坏处，最多就是浪费时间。但我觉得一定得有一方面特别突出，才能站稳脚跟。这就是下面要说的内容。&lt;/p&gt;
&lt;h2 align="left"&gt;7.明确目标&lt;/h2&gt;
&lt;hr&gt;
&lt;p align="left"&gt;现在工作一年了，各方面的东西多多少少都接触了。但我不能样样会而没一样精，我感觉自己还是最适合Web方向的开发工作。所以我给自己定的目标就是做到精通ASP.NET及相关web技术。在业余时间，我总是学习最新最前沿的web技术，并运用到实践中，不断给自己的博客升级。以后如果要跳槽，有一门看家本领应该是非常管用的。&lt;/p&gt;
&lt;h2 align="left"&gt;8.要有读别人代码的能力，不要沉浸于自己的世界中&lt;/h2&gt;
&lt;hr&gt;
&lt;p align="left"&gt;我现在的项目中所作的工作，基本都是在修复前人留下的bug。所以阅读及分析别人代码的能力是非常重要的。这倒不是说非得有多高深的水平，因为我所面对的都是垃圾，代码越垃圾，就越难让人看懂，尽管VS自带了很多分析功能，但要能完整的弄清别人的意思还是要费功夫的。和垃圾代码打交道，最重要的就是耐心。你得顺着别人的思路。尽管别人是披着面向对象的皮，干着面向过程的事。但作为一个阅读者，必须适应。有时候我都想一怒之下给他重构了，但这是政策上不允许的，工作量上也不是明智之举。另外，对于没有注释的代码，更需要耐心。这是在锻炼心理素质而非技术。如果你是个耐心的读者，那面对现实生活中的许多事，也会更加沉稳。&lt;/p&gt;
&lt;p align="left"&gt;读优秀的代码像与一位伟人交谈，读垃圾的代码就像在屎坑里前进。平时有空多读读优秀的开源项目，对自己帮助非常大，我的博客很多地方是参考BlogEngine设计的。如果不幸在项目中踩到屎，那就提醒自己不要在相同的地方犯错。我想，《重构》这本书的作者就是因为踩了许多屎而总结出来的经验。所以踩屎也是非常宝贵的，不要抱怨。&lt;/p&gt;
&lt;p align="left"&gt;以上是我一年工作的感悟，欢迎大家留言讨论，也可以Email联系我：Edi_Wang@outlook.com&lt;/p&gt;</content></entry><entry><id>9520fd62-0974-4e11-bc01-43f65bcf1863</id><title>给编程初学者的建议</title><updated>2012-06-04T11:16:36Z</updated><published>2012-06-04T11:16:36Z</published><link href="https://edi.wang/post/2012/6/4/suggestions-to-newbies-of-programming" hreflang="zh-hans" /><author><name>Edi Wang</name><email>Edi.Wang@outlook.com</email></author><category term="Work" /><content>&lt;p align="left"&gt;本人出于兴趣驱使，从初中就开始研究计算机及编程，&lt;a href="https://www.oschina.net/news/22910" target="_blank" rel="noopener"&gt;但我不是神童，我没有写过9000个软件&lt;/a&gt;，也没有&lt;a href="https://www.zhihu.com/question/20274784" target="_blank" rel="noopener"&gt;90天写过40w行代码&lt;/a&gt;，我只是自认为对编程稍有门路罢了。如今快毕业了，在一家挨踢企业实习。在学习的道路上经历了很多，也感悟了很多&amp;mdash;&amp;mdash;编程以外的道理。有些现象让我看在眼里，疼在蛋上。因此我决定撰文，旨在引导编程初学者一个正确的学习方式，帮助他们少走弯路。本文适合大一新生，以及对编程有兴趣的同学阅读。&lt;/p&gt;
&lt;h2 align="left"&gt;你为什么要编程&lt;/h2&gt;
&lt;hr&gt;
&lt;p align="left"&gt;&lt;strong&gt;兴趣第一&lt;/strong&gt;&lt;/p&gt;
&lt;p align="left"&gt;我必须要说的是，据我观察，以及自身体会发现，要想学好编程，最好的前提条件就是兴趣。但不是每个学编程的人对此都有兴趣，并且，要让一个没有心思研究编程的人静下心来学习这门需要大量时间和精力才能入门的学科，是相当难办的。我的重点不在如何教你去培养兴趣，我不是教育砖家。我要说明的是，&lt;strong&gt;如果你有兴趣，那恭喜你，你一定可以学好编程。&lt;/strong&gt;&lt;/p&gt;
&lt;p align="left"&gt;&lt;strong&gt;如果&amp;ldquo;不幸&amp;rdquo;进了计算机专业&lt;/strong&gt;&lt;/p&gt;
&lt;p align="left"&gt;如今计算机专业已经遍地开花了，但很可惜的是，不是每个人，或者说有相当大的一部分人，不是出于自己而选择计算机专业的。如果你是&amp;ldquo;不幸&amp;rdquo;的一员，并且你根本就不想学计算机，或者说厌恶编程，那我劝你早点想个出路，编程不可能适合你。就目前我观察的情况而言，除非是后来发掘了兴趣，不然没几个&amp;ldquo;不幸&amp;rdquo;的人可以在计算机行业立足。如果你已经没有别的路可走了，并且没有拼爹的资本，那你的目标就是学会在计算机行业就业的基本技能，给自己找一个起点。这时要克服的应该是心理上的屏障，这个我没有办法指导你，我不是心理砖家。&lt;strong&gt;总之，不要自暴自弃，更不要让对计算机的仇恨以及对优秀同学的羡慕嫉妒恨吞噬自己。&lt;/strong&gt;&lt;/p&gt;
&lt;p align="left"&gt;为什么编程，这个问题的最终答案就是为了赚钱。如果有兴趣，这可以成为快乐。比如微软Channel9上的Code4Fun那伙Geek。但大家要记住，不要为了钱，让兴趣成为一种压力。我不是社会学砖家，我无力在本文去喷社会问题，对于赚钱，每个人的观点也不一样，这个只能让大家自己体会。&lt;/p&gt;
&lt;h2 align="left"&gt;准备工作&lt;/h2&gt;
&lt;hr&gt;
&lt;p align="left"&gt;&lt;strong&gt;选一门技术&lt;/strong&gt;&lt;/p&gt;
&lt;p align="left"&gt;现在切入正题，帮助大家少走弯路。首先最重要的是选择一门技术。注意，是一门，仅仅一门而已。现在不同于以往，我当年刚玩电脑的时候，技术非常少，很容易学。如今的技术日新月异，五花八门，每种都很犀利。要去研究的话，每种技术都非常有深度。&lt;/p&gt;
&lt;p align="left"&gt;就拿网页前端来说，以前只有很单一的HTML，用FrontPage或Dreamweaver就能搞掉。但现在要做一个能拿得出台面的网页，你至少得会HTML，CSS，Js，以及结合起来的AJAX，并且熟悉一种或几种框架才能搞定。这还只是前端。如果你想要独立做个能够上线使用的动态网站，在现在这个时代下，要学的东西非常多。人的精力有限，面对现在如此众多的技术，不可能样样精通。&lt;strong&gt;初学者容易犯的毛病就是什么都想学，我认为这是浮躁的表现，学习不能急功近利。认真学好一样东西，在这个时代已经是很不容易的了。&lt;/strong&gt;&lt;/p&gt;
&lt;p align="left"&gt;如何选择一门技术呢？首先我认为，对于初学者来说，必须容易上手。并且，这门技术必须具有良好的前景和商业价值。&lt;/p&gt;
&lt;p align="left"&gt;就目前的情况而言，我认为最方便入门的还是网站开发方向的技术。Web应用大势所趋，即使互联网诞生之初并不是为之设计的。我们暂且不论把本地应用都放Web上这种做法是否妥当，就目前的形式而言，这种模式，即使可能是对Web的误用，也将会继续发展很长一段时间。几周后微软提交的新http协议将被审核，如果成功，那未来的Web将是另一方天地。构建Web应用，你首先得会基本的网页设计和制作，并且，重点是，你得学习一门后台语言。这里的选择很多，我本人是做ASP.NET的，用的是C#语言，但你也可以用JAVA，PHP或者其他语言去写，这也是做Web编程的好处&amp;mdash;&amp;mdash;选择非常丰富。&lt;/p&gt;
&lt;p align="left"&gt;如果你不打算做Web，你可以尝试开发桌面应用，未来Windows8的Metro应用将是一大亮点。并且新的编程模型允许你用现在的主流语言去构建Windows8的应用，这些语言甚至包括用来做Web的HTML和Js。&lt;/p&gt;
&lt;p align="left"&gt;另外，我不推荐初学者去开发IOS、Android或是WinPhone应用。虽然他们看起来好，但开发手机应用需要的编程水平绝对高于桌面和Web应用，因为要考虑对算法细节的把握，它对手机的性能、耗电量至关重要。而目前的情况而言，想要开发出合格的手机应用，起码得有非常丰富的经验做铺垫，这显然是初学者办不到的。&lt;/p&gt;
&lt;p align="left"&gt;再来谈谈大学里的情况，初学者刚开始面对的一般都是C语言或者VB，而且居然是6.0。学基础固然没错，但千万不要把大部分时间都花在C上。这个是效率时代，什么语言生产效率高，就用什么，研究底层实现这种事情，初学者是不可能搞定的。所以，就目前的时代来说，我认为你应当只把20%的精力花在课内的编程学科上，并且不要因为成绩好而自满。课余时间自己去学C#或者JAVA这样的主流语言，不要等老师教你。等你体会了现在主流的编程技术，再回头看课内的东西，简直就是小菜。这也是我个人的体会。我一开始是自学的ASP和VB，然后学了VB.NET，再转到C#，最后才回头自学C语言和C++，非常好上手。&lt;/p&gt;
&lt;p align="left"&gt;最后要记住，要想独立开发一个应用，尤其是Web应用，光会一门技术是不行的。但不代表你非要样样精通。&lt;strong&gt;正确的做法是，将你的重点始终放在一个地方，对于你构建应用来说的其他必要技术，只要做到可用、够用即可。&lt;/strong&gt;&lt;/p&gt;
&lt;p align="left"&gt;&lt;strong&gt;你需要阅读&lt;/strong&gt;&lt;/p&gt;
&lt;p align="left"&gt;书籍是必备的，不要指望看视频或靠别人教能学到什么。你需要买书，并且不止一本。省钱的技巧是是：不要去购买（不是不要看）《21天学通XXX》，《XXX从入门到精通》这样的入门书籍。这些书尽量在图书馆借阅，因为你以后大部分的时间都不会再用到。要购买的，是一些高档次的书籍。要分辨一本好书，一个比较实用的技巧是看作者，好书往往是某某人著的，而不是某某人编著，或者是编的。并且，&lt;strong&gt;一本好书，是经得起反复阅读的&lt;/strong&gt;。我不能在本文里点名批评某些无良作者，但我非常鄙视把别人的东西拿来整合一下就出版的不负责的态度，书中的代码甚至是错误的，明显没有实验过，就拿出来赚钱，这非常讽刺。&lt;/p&gt;
&lt;p align="left"&gt;就我自己学习的.NET技术而言，我的读书路线是这样的：《ASP.NET2.0基础与实例教程》这本是基础书籍，帮助我入门。随后我读了《C#与.NET3.5高级程序设计》、《C#编程风格》、《重构》这样的进一步深入的书籍。初学者可能觉得，看了一本带示例的入门教程，已经可以构建一些普通应用了。但要知道，一个高质量的软件，不仅仅是可用的，更重要的是它的可维护性与拓展能力，以及面对需求变化的能力。所以，你必须了解，如何去调整和优化你代码，因此你需要更进一步的阅读。本文稍后会讨论重构。&lt;/p&gt;
&lt;p align="left"&gt;&lt;strong&gt;好的硬件设备真的很重要&lt;/strong&gt;&lt;/p&gt;
&lt;p align="left"&gt;恩。首先声明，这一条不是让你作为理由向父母要钱去买电脑打游戏的。对于编程来说，一台好电脑真的十分重要，因为你不得不面对庞大的框架、开发工具以及虚拟机等耗资源大户。可以说，做开发用的计算机，除了显卡，其他都应该比游戏机要强。为了给自己的编程工作创造一个尽可能没有阻碍的环境，我建议大家不要吝惜买一台好电脑的钱。它将会你带来更多价值。另外，有条件的话，准备一块白板。它可以帮助你记录要做的事项或构建程序结构的草稿。&lt;/p&gt;
&lt;p align="left"&gt;&lt;strong&gt;工作环境&lt;/strong&gt;&lt;/p&gt;
&lt;p align="left"&gt;每个人所适应的环境都不同。对我来说，最好的环境，不是图书馆，不是实验室，也不是寝室，而是自己家里，并且，尽量安静。我得承认，我在寝室的时候，我会忍不住和室友一起玩魔兽。只有在家里，我才能冷静下来，思考问题。并且，我的大部分技术书都放在家里的书架上，就在电脑的对面，非常方便查阅。&lt;/p&gt;
&lt;p align="left"&gt;编程需要灵感，一个适合自己的工作环境可以让大脑在最优化的条件下运行，对于编程是十分有帮助的。所以建议大家，对于工作环境，不要&amp;ldquo;凑合着能用&amp;rdquo;就行，去寻找或布置一个最适合自己的工作室。&lt;/p&gt;
&lt;h2 align="left"&gt;如何实践&lt;/h2&gt;
&lt;hr&gt;
&lt;p align="left"&gt;&lt;strong&gt;计划一个真正的项目&lt;/strong&gt;&lt;/p&gt;
&lt;p align="left"&gt;不要满足于做做小DEMO、小工具。把眼光放远点，去计划一个称得上是产品的项目。做小工具和做系统是两回事，做工具你可能会把注意力集中在算法和实现细节上，而做系统，你就会考虑到架构，以及不同模块之间如何协同工作的问题。这也会把你引领到面向对象设计（OOAD）的道路上来，从一个大局和整体去设计系统，这是学编程所真正应该领悟的。至于底层算法，现在的编程框架已经实现的很好了。没有必要自己去做。本文稍候会讨论关于&amp;ldquo;重新发明轮子&amp;rdquo;的问题。&lt;/p&gt;
&lt;p align="left"&gt;我自己也是从做小工具开始的，当年用的是VB，写小工具的利器。然而当我开始做我自己的网站项目时，才是我真正理解编程的开始。所以，我建议初学者去规划一个真正能用的系统，并一点点去完善、发布新版本。&lt;/p&gt;
&lt;p align="left"&gt;&lt;strong&gt;它可以不完美&lt;/strong&gt;&lt;/p&gt;
&lt;p align="left"&gt;我知道很多初学者看到这里会觉得一上手就做一个系统有点太难了。我也知道，这确实很难，对我来说也是这样的。但你一开始策划的时候，它并不需要完美。比如我自己的博客系统，第一个版本非常简陋，仅仅具有简单的新闻发布和管理功能。它甚至没有分类、没有标签库，也不支持评论。但后来，随着学习的深入，我会逐渐增加新的功能。在这个过程中，你会慢慢体会到系统是如何从简单变的复杂，并且你会感受到需要一种新的设计手段，去解决系统变大所带来的问题。&lt;/p&gt;
&lt;p align="left"&gt;&lt;strong&gt;遵循标准&lt;/strong&gt;&lt;/p&gt;
&lt;p align="left"&gt;任何一种语言，都会有人总结出一种编程风格。它是行业中所普遍采用的最流行的约定。比如大小写、空格、换行等格式的要求。当然，你的代码不遵循标准也是可以执行的，毕竟风格不是逻辑。但遵循标准可以让你的代码显得更加专业化，也可以增加它的可读性（很多时候读你代码的并不只有你一个人）。&lt;/p&gt;
&lt;p align="left"&gt;举个最简单的例子，初学者写程序，用的变量名常常是a,b,c等没有含义的字母。在程序逻辑简单的时候，可能并没有太大的影响。然而，如果你的系统发展到了一定规模，到处充满着这些不能一眼就看出用途的变量名，那么最后受苦的十有八九是你自己。如果你对IDE的功能又不是很熟悉，那改一个地方的时候，肯定要找得你蛋碎。&lt;/p&gt;
&lt;h2 align="left"&gt;循序渐进的模式&lt;/h2&gt;
&lt;hr&gt;
&lt;p align="left"&gt;&lt;strong&gt;学习模式&lt;/strong&gt;&lt;/p&gt;
&lt;p align="left"&gt;正如我前面所说，系统慢慢变大之后，你会考虑重新设计。这就是对以往经验的总结、对问题现状的分析，以及尝试新的设计方法（更专业的说法是设计模式）。这也就是编程的学习模式。如果你不去实践，就算你把设计模式这本书的内容背出来，也是没用的。因为你没有体会过之前的编程方法所带来的问题。没有吃过苦，就不会有到位的理解。所以编程的学习模式是循序渐进的，基于实践的方法。&lt;/p&gt;
&lt;p align="left"&gt;&lt;strong&gt;代码重构&lt;/strong&gt;&lt;/p&gt;
&lt;p align="left"&gt;新手和高玩的一大区别就在于他们写的代码的可读性和可维护性。虽然代码只要逻辑正确，都可以让程序产生正确的运行结果，但更重要的一点是为将来做考虑。因为软件的需求总是在不断变化的，你不得不面临需求变更所带来的代码修改。而重构的意思，就是在不改变软件可观察行为的前提下，调整代码，让它以尽量小的变更去应对需求的更改。最终也就是用重构得到模式。&lt;/p&gt;
&lt;p align="left"&gt;重构是编程学习路上的必经环节，我个人认为，只有你学会了重构与设计模式，才是真正的入门开始。我又想骂那些《XXX从入门到精通》的书了，什么叫入门？什么叫精通？写书请不要用这样的标题去吸引眼球。&lt;/p&gt;
&lt;p align="left"&gt;关于重构，大家可以去看Martin Fowler大牛写的《Refactoring: Improving the Design of Existing Code》&lt;/p&gt;
&lt;p align="left"&gt;&lt;strong&gt;体会超越编程的哲学&lt;/strong&gt;&lt;/p&gt;
&lt;p align="left"&gt;在你到达一定境界后，你会感觉到你对这个世界有了新的认识&amp;mdash;&amp;mdash;它是那么复杂，却又能被组织在一起，你似乎可以用编程的思想去描述事物以及他们之间的关系。恭喜你，你体会到&amp;ldquo;面向对象编程（OOP）&amp;rdquo;了。我们现在所采用的OOP语言，正是从现实生活中所类比而来的，它模拟了现实生活中事物之间的关系，用一种自然的习惯去编程，这就是为什么OOP可以成为现代的程序设计方法。以往在学习OOP语言，比如C++、JAVA、C#时，你也许并不会考虑到哲学的深度。然而，当你能从语言本身去反推世界时，你会觉得豁然开朗。当然，这一层面的理解也是有深度的。我平时也只是爱好用编程语言去讽刺社会中的蛋疼现象，比如某某人继承高帅富接口之类的，经常关注我微博的肯定知道，哈哈。目前只有少数几个世界级大师才称得上能从编程中体会哲学。这些大师有的已经去世了&amp;hellip;&amp;hellip;&lt;/p&gt;
&lt;h2 align="left"&gt;我走过的一些弯路&lt;/h2&gt;
&lt;hr&gt;
&lt;p align="left"&gt;&lt;strong&gt;不要重新发明轮子&lt;/strong&gt;&lt;/p&gt;
&lt;p align="left"&gt;初学者学习一段时间后，还容易犯个错误，就是喜欢自己去实现一些框架已经提供的功能，似乎这样做心理上更有安全感，技术上也似乎能锻炼自己。我也曾经认为，什么东西都自己写可以装B，但最后发现自己是傻逼。这种做法在业界是非常不可取的。首先，从实现的角度来说，你很难超越框架。就拿生成随机数或GUID的功能来讲，框架本身的算法经过了非常深入的优化，并且是经过测试的，高效、稳定的算法。初学者自己写的算法，可能存在bug，并且也不是专门优化过的。所以，我严重建议在编程时使用框架提供的功能，不要自己去&amp;ldquo;重新发明轮子&amp;rdquo;。&lt;/p&gt;
&lt;p align="left"&gt;最常见的&amp;ldquo;重新发明轮子&amp;rdquo;有：排序、树、链表、栈等数据结构和基本算法。其实这些基本的类不论是JAVA还是.NET，都已经内置在框架中了，我们只要直接使用就行了。&lt;/p&gt;
&lt;p align="left"&gt;也有一部分初学者&amp;ldquo;重新发明轮子&amp;rdquo;，是因为对框架不够熟悉。&lt;/p&gt;
&lt;p align="left"&gt;&lt;strong&gt;不要过度设计&lt;/strong&gt;&lt;/p&gt;
&lt;p align="left"&gt;学习重构及设计模式后，新手往往喜欢把刚学到的东西到处套用。但别忘了一点&amp;mdash;&amp;mdash;任何设计模式，都是帮你省力的，它是懒人的工作。如果你滥用设计模式，往往会适得其反。在一些简单的场合，你用设计模式所花费的努力已经远远大于直接修改原先的代码了。在OOAD上也是如此，不是什么系统都要用三层架构，不是什么网站都要MVC。如果为了&amp;ldquo;看起来专业&amp;rdquo;而进行不必要的设计，那就亏大了。我身边也有一些人，整天把MVC、MVP、Entity Framework等名词挂在嘴边，碰到再简单的系统也要生搬硬套，这实在是装逼不讨好了。所以，正确的做法应该是根据系统的规模，寻找一种适度的设计方法，学会取舍。&lt;/p&gt;
&lt;h2 align="left"&gt;编程不是你的全部&lt;/h2&gt;
&lt;hr&gt;
&lt;p align="left"&gt;最后，请大家记住，编程并不是你的全部。任何事情都可能让人着迷，网络游戏可以，同样，编程也可以。一旦沉迷其中，就容易变成计算机的奴隶&amp;mdash;&amp;mdash;如果把所有的业务时间都用来学习编程，你会失去生活中的许多应该体验的事物，等最后发现自己只会编程，而在别的方面和别人很不一样，将是一件很痛苦的事，这也是我的亲身感受，如今我已后悔莫及。所以，有空的时候还是多融入生活吧。多去了解人类的想法，而不能只和计算机说话。&lt;/p&gt;</content></entry></feed>