《The Passionate Programmer》书摘

本书《The Passionate Programmer》探讨了软件开发人员如何在职业生涯中追求卓越。作者Chad Fowler强调了将个人技能视为产品的观念,建议关注个人品牌的建设,多元化技能以适应市场变化,以及不断学习新技术的重要性。书中还提到了开源贡献对于简历的价值,以及如何通过研究大师级程序员的工作来提升自我。

书名:The Passionate Programmer
Creating a Remarkable Career in Software Development
作者:Chad Fowler

阅读时间:2018/10/30-2018/11/13

书摘+评论:

Nobody becomes a musician because they want to get a job and lead a stable and comfortable life. The music industry is too cruel an environment for this to be a feasible plan. People who become professional musicians all want to be great. At least when starting out, greatness is binary in the music world. A musician wants to either be great (and famous for it!) or not do it at all.

Our companies don’t employ us because they love us. They never have, and they never will. That’s not the job of a business. Businesses don’t exist so we can have a place to go every day. The purpose of a business is to make money. To excel at a company, you’re going to have to understand how you fit into the business’s plan to make money.

If you think of your career as a business (which it is), your “product” is made up of the services you have to offer. What are those services? Who are you going to sell them to? Is demand for your services going to grow or decline over the coming years? How big of a gamble are you willing to take on these choices?/*把工作当成事业,把自己能提供的服务当作一种产品*/

As unintuitive as that may sound, if you’re worried about losing employment to offshoring, one strategy would be to avoid the types of work that offshore companies are doing. Offshore companies are doing work that is in high demand. So, focusing on niche technologies is a strategy that, although not necessarily making the competition less fierce (there are fewer jobs to go around), might change the focus of competition from price to ability. That’s what you need. You can’t compete on price, but you can compete on ability./*不拼价格,拼能力*/

Research current technical skill demand. Use job posting and career websites to find out which skills are in high demand and in low demand./*通过目前的职位需求来了解什么技能比较热门,什么技能比较冷门*/

The same is true of business domains. You should put the same level of care into selecting which industry to serve as you put into selecting which technologies to master。/*选择技术重要,选择要从事的行业同样重要*/

Thinking about not losing is not the way to win! Winners take risks. Gone are the days of the “lifer” who would join a big company and settle in for a full career. This sort of behavior used to be a sign of dedication. Now it’s a liability. If you’ve worked in only one place and seen one set of systems, many (smart) managers would see that as a strike against you when making a hiring decision. I’d personally rather hire someone who has seen a variety of successes and failures in different environments than someone who has known only one way of doing things./*一个人从事的行业,服务的公司越多元化,技能、思维也会随之多元化。从一而终,在单一公司待的时间太久,并不见得是件好事*/

Generalists are rare...and, therefore, precious./*通才比较少见,因此比较抢手*/

While managing an application development group, I once asked one of my employees, “What do you want to do with your career? What do you want to be?” I was terribly disappointed by his answer: “I want to be a J2EE architect.” I asked why not a “Microsoft Word designer” or a “RealPlayer installer?”

This guy wanted to build his career around a specific technology created by a specific company of which he was not an employee. What if the company goes out of business? What if it let its now-sexy technology become obsolete? Why would you want to trust a technology company with your career?

Somehow, as an industry, we fool ourselves into thinking market leader is the same thing as standard. So, to some people, it seems rational to make another company’s product part of their identities. Even worse, some base their careers around non-market-leading products—at least until their careers fail so miserably that they have no choice but to rethink this losing strategy./*不能把全部的赌注都压到某个公司提供的某个产品上面。皮之不存毛将焉附?*/

What I do know is that I’m a serial opportunist. When I see something interesting and exciting to me, I jump in and do whatever it takes to succeed. Usually this means learning new skills and picking up new capabilities. Some may find it a drag to build new skills up, but for some reason I love learning how to do new things. After all, new skills let you do new things. And I’ve never defined myself by my skills. Instead, I’ve always defined myself by what I have done and what I want to do next. Skills are just a way to get there./*技能只是借以达到目标的一个途径。有时候为了一个新的目标,我们必须坦然地学习新的技能。*/

In business, ideas and even talent are a dime a dozen. It’s the blood, sweat, tears, and money you pour into a product that make it really worth something./*职场缺的不是思想家,是实干家。*/

Regardless of your line of business, whether it be manufacturing, health care, nonprofit, or an educational institution, it is still a business. And, business is itself a domain of knowledge that one can—indeed, must—learn./*不论一个人从事什么样的行业,处于什么岗位,都有必要了解公司如何运转。*/

When you teach, you have to answer questions that may have never occurred to you. Through teaching, we clean the dusty corners of our knowledge as they are exposed to us./*在传授知识的同时,我们可以发现自己的不足。*/

Most modern programming languages offer rich and powerful libraries in all of these areas, but software developers tend to learn a small subset, with which they can less efficiently write the same code they could have written if they had mastered the full set of tools available to them.

TopCoder.com is a long-standing programming competition site.

Studying the work of masters is an essential part of becoming a master.

We can mine a huge body of existing code for patterns and tricks.

A positive side effect of reading code is that you will learn more about what already exists./*在解决一个问题之前先看一看有没有现成的答案。*/

I remember the sensationalism surrounding job loss in the United States in the 1980s. Back then, not only were we blaming other countries, but we were blaming machines and, specifically, computers. Huge robotic arms were being installed in manufacturing plants. These robotic arms could outperform humans in both throughput and accuracy to a point that it was not even worth comparing them. Everyone was upset—everyone, that is, except for the people who created the robotic arms.

An entrepreneurial ex-roommate of mine who was also a very close friend (Raj Hajela), my wife (Vidya), and I brainstormed ideas trying to figure out where there were existing unmet needs in the market. We wanted to explore e-commerce opportunities but did not want to sell anything that was a commodity product. We had a real interest and background in art and liked the fact that every piece of art was unique in nature. My uncle was a lifelong artist who had struggled to make a living. We did some research and concluded that this was the case with most artists. We then decided to solve this problem by creating a platform to help artists publicize and promote their works and keep in touch with their patrons. With this mission in mind, we launched Passion4Art.com and began the hard work of getting artists to join our website and put their digital images of their paintings online. After we had signed up our first 1,000 artists and they had set up their own websites, we believed that we were providing something of value and started looking for outside funding.

Your presence on the job is, to the company, like a pebble in a bucket of water. Sure, the water level is higher as a result.
You get things done. You do your part. But, if you take the pebble out of the bucket and stand back to look at the water, you can’t really see a difference.

If I have a team member who has the strength to say “no” when that’s the truth, then I know that when they say “yes,” they really mean it.

Larry Wall wrote that the traits of a great programmer are laziness, impatience, and hubris.

If you kick ass and no one is there to see, did you really kick ass? Who cares? No one.

You are always going to be measured based on someone else’s perception of you.

As a programmer today, you need to think beyond the next promotion or even your current place of employment. Set your sights higher. Don’t think of yourself as a programmer at a specific company—after all, it’s not likely that you’ll be at the same
place forever—but as a participating member of an industry. You are a craftsperson or an artist.

Most people undersell themselves. You have something to teach. You will never feel 100 percent ready, so you might as well start now.

Your name is your brand.

Open source contributions demonstrate skill. If you’re making real code and contributing to a real project, it’s a lot better on your résumé than just saying you know a technology.

The really good people won’t mind if you want to know them. People like to be appreciated, and they like to talk about the topics they are passionate about. The fact that they are the professional or the guru or the leader or the renowned author doesn’t change that they’re human and like to interact with other humans.

Pick one of your favorite pieces of software and e-mail its creator. Start by thanking him or her for the software. Then make a suggestion, ask a question, or make some other attempt at establishing a human connection with them. Solicit a response of some sort. If the software is free or open source, offer to help in some way.

Computing power doubles. With technology progressing so quickly, there is too much happening for any given person to keep up. Even if your skills are completely current, if you’re not almost through the process of learning the Next Big Thing, it’s almost too late. You can be ahead of the curve on the current wave and behind on the next.

In his book The Miracle of Mindfulness, Thich Naht Hanh presents a suggestion: the next time you have to wash the dishes, don’t wash them to get them done. Try to enjoy the experience of washing the dishes. Don’t focus on finishing them. Focus on the act of washing them itself.
Doing the dishes is a mundane task that almost nobody savors. Software developers have a lot of similar drudgery to get through in the average day, such as time tracking and expense reporting, for example. The next time you have to do a task like this, see whether you can find a way to focus on the task as you do it instead of anxiously rushing to finish it.

The secret is to focus on making whatever it is you’re trying to improve better today than it was yesterday. That’s it. It’s easy.
 

The Passionate Programmer: Creating a Remarkable Career in Software Development (Pragmatic Life) by Chad Fowler Paperback: 200 pages Publisher: Pragmatic Bookshelf (May 28, 2009) Language: English ISBN-10: 1934356344 ISBN-13: 978-1934356340 Format: PDF Description: Success in today's IT environment requires you to view your career as a business endeavor. In this book, you'll learn how to become an entrepreneur, driving your career in the direction of your choosing. You'll learn how to build your software development career step by step, following the same path that you would follow if you were building, marketing, and selling a product. After all, your skills themselves are a product. The choices you make about which technologies to focus on and which business domains to master have at least as much impact on your success as your technical knowledge itself--don't let those choices be accidental. We'll walk through all aspects of the decision-making process, so you can ensure that you're investing your time and energy in the right areas. You'll develop a structured plan for keeping your mind engaged and your skills fresh. You'll learn how to assess your skills in terms of where they fit on the value chain, driving you away from commodity skills and toward those that are in high demand. Through a mix of high-level, thought-provoking essays and tactical "Act on It" sections, you will come away with concrete plans you can put into action immediately. You'll also get a chance to read the perspectives of several highly successful members of our industry from a variety of career paths. As with any product or service, if nobody knows what you're selling, nobody will buy. We'll walk through the often-neglected world of marketing, and you'll create a plan to market yourself both inside your company and to the industry in general. Above all, you'll see how you can set the direction of your career, leading to a more fulfilling and remarkable professional life.
内容概要:本文出自罗兰贝格关于工业4.0现状的报告,系统分析了制造业在数字化转型过程中的实际进展与挑战。报告指出,尽管“工业4.0”概念提出已逾十年,但多数企业仍未实现预期的智能化、自组织生产目标,主要受限于技术复杂性、组织孤岛、投资回报周期长及人才短缺等问题。通过对领先制造企业的研究,报告提炼出三大成功要素:一是制定基于现实的工业4.0愿景与全面战略,明确用例优先级;二是建立“中心辐射式”组织架构,设立专职数字化制造部门,推动跨职能协作与规模化落地;三是构建统一的IT/OT目标架构,强化数据生态与系统互操作性。报告特别强调,高价值用例如预测性维护、实时参数优化、视觉检测等已在汽车与半导体行业显现显著成效,企业应聚焦可量化回报的场景,结合资源现实,分阶段推进转型。; 适合人群:制造业企业管理者、数字化转型负责人、工业互联网从业者及政策制定者; 使用场景及目标:①帮助企业评估自身工业4.0成熟度并制定务实发展战略;②为制造企业设计组织架构与IT/OT技术路线图提供参考;③指导资源优先配置于高价值数字化用例,提升投资回报率; 阅读建议:建议结合企业实际生产场景阅读,重点关注“中心辐射式”运营模式与六大高价值用例的适用性分析,同时参考报告中的汽车行业案例,因地制宜地规划数字化路径。
内容概要:本文围绕基于蚁狮优化算法(ALO)在复杂三维动态环境下求解多无人机动态避障路径规划问题展开研究,并提供了完整的Matlab代码实现。该研究旨在解决多无人机系统在存在障碍物和动态变化环境中的高效、安全路径规划挑战,通过引入ALO算法优化飞行轨迹,有效规避障碍并实现路径最优。研究不仅关注算法层面的实现,还涵盖了目标函数设计、约束条件处理、环境建模等关键技术环节,确保路径规划结果兼具可行性与鲁棒性。此外,文档附带丰富的相关科研资源,涵盖路径规划、智能优化算法、机器学习、电力系统等多个领域,为后续拓展研究提供坚实支撑。; 适合人群:具备一定编程基础,熟悉Matlab工具,从事无人机路径规划、智能优化算法或智能系统研究的科研人员及研究生。; 使用场景及目标:①研究复杂三维动态环境下多无人机的协同避障路径规划问题;②掌握蚁狮优化算法(ALO)在路径规划中的应用与实现机制;③为智能交通、无人系统控制、自动化调度等相关课题提供算法参考与代码支持; 阅读建议:建议结合Matlab代码深入理解ALO算法的具体实现流程,重点关注目标函数构建、动态障碍建模与避障策略设计等关键模块,同时可参照文中提及的其他智能优化算法(如PSO、GWO等)进行对比实验,进一步提升算法性能分析与工程应用能力。
代码下载地址: https://pan.quark.cn/s/a4b39357ea24 Git在全球范围内被公认为最为流行的分布式版本控制系统,其在软件开发行业中占据着不可或缺的地位。Git-2.21.0-64-bit 以及 TortoiseGit-2.8.0.0-64bit 是两款专门为Windows操作系统设计的Git相关软件。Git-2.21.0-64-bit 代表了Git的命令行版本,而TortoiseGit则是一个图形化界面工具,它为用户呈现了一种更为直观的操作体验。 Git的主要优势体现在其分布式架构上。每一个通过Git克隆得到的仓库都是一个自给自足的、完整的文件库,其中包含了所有的历史版本记录以及修订追踪详情。因此,即便在缺乏网络连接的环境下,开发者依然能够在本地执行版本控制任务,例如进行提交、切换分支以及合并代码等操作。这种架构设计显著提升了开发效率,特别是在处理大型项目或进行团队协作时更为明显。 Git的分支管理功能是其另一项突出的能力。开发者借助简单的指令即可迅速完成分支的创建、切换和合并,这一特性对于并行开发、试验新功能或解决bug等问题提供了极大的便利。例如,开发者可以开辟一个新分支来实施新功能,在开发完成后将其整合回主分支,而不会对其他团队成员的工作造成干扰。 TortoiseGit是Git的一个补充工具,它将Git的操作指令无缝嵌入到Windows资源管理器中,使得Git的使用体验类似于常规的文件管理操作。TortoiseGit-2.8.0.0-64bit.msi 文件正是这个图形化界面的安装包,它提供了右键菜单的快捷方式,让用户能够更加便捷地进行版本控制活动。与此同时,TortoiseGit-LanguagePack-2.8.0.0...
内容概要:本文系统阐述了物理信息神经网络(PINNs)在求解布洛赫-托雷(Bloch-Torrey)方程中的具体应用,结合PyTorch框架提供了完整的Python代码实现案例。通过将物理定律作为先验知识嵌入神经网络的损失函数中,PINNs能够在缺乏大量标注数据的条件下,高效求解描述磁共振成像中自旋粒子扩散行为的偏微分方程。文章详细剖析了网络架构设计、物理约束的数学表达、边界与初始条件的处理方法以及模型的训练优化流程,充分展现了PINNs在科学计算与工程仿真领域的强大潜力与独特优势。; 适合人群:具备深度学习基础、偏微分方程知识,以及Python编程能力,从事计算物理学、医学影像、生物医学工程或科学机器学习等相关领域的研究人员、高校研究生及工程师。; 使用场景及目标:① 掌握利用PINNs求解复杂物理系统的基本方法与技术路线;② 学习如何将物理守恒律、本构关系等先验知识有效融入神经网络模型以提升泛化能力和求解精度;③ 应用于磁共振成像(MRI)的微结构建模、扩散过程仿真及其他涉及偏微分方程求解的科学研究与工程问题。; 阅读建议:建议读者结合所提供的代码进行动手实践,重点理解物理残差项在损失函数中的构建逻辑及其对训练过程的影响,并尝试将该方法迁移至其他类型的偏微分方程(如热传导方程、Navier-Stokes方程等),以深入掌握PINNs的核心思想与工程实现技巧。
源码下载地址: https://pan.quark.cn/s/5eea35613168 依据所提供的文档资料,我们可以对RTL8211芯片及其关联的电路设计理念与技术核心进行细致的研究。RTL8211是由Realtek公司研发的网络物理层(PHY)部件,主要应用于以太网端口,能够支持10/100Mbps的数据传输速率。接下来将详尽阐释文档中的核心要点。 ### RTL8211概述 RTL8211系列芯片是Realtek为以太网应用而设计的具备高性能的PHY解决方案。该系列芯片支持多种接口规范,涵盖RMII(Reduced Media Independent Interface)、MII(Media Independent Interface)等,并且能够适配不同的连接器类型,例如UTP(Unshielded Twisted Pair)或光纤接口。 ### 文件标题与描述解析 文件标题和描述均标注为“RTL8211 原理图 PDF版”,这表明该文档是一份PDF格式的原理图,主要包含了RTL8211芯片的内部构造、外部接口以及相关电路的设计详情。 ### 标签解读 标签“RTL8211”进一步证实了文档的主题是围绕该型号芯片展开的。 ### 部分内容解析 在文档的部分内容中,我们观察到了一系列数字与字母的组合,这些符号代表了原理图中的引脚编号、信号名称以及电路模块等信息。通过分析这部分内容,可以归纳出以下关键知识点: #### 引脚功能说明 - **ENREG/RXER_N**: 负责注册使能和接收错误中断信号。 - **RXD2_N、RXD0_N、TXD1、TX_CTL、TXD3、RXD3_N、TXD0、RX_CTL_N、TXD2、RX_CLK_N、RXD1_N*...
内容概要:本文详细介绍了基于并行物理信息神经网络(PINNs)对NLS–MB方程中孤子演化过程进行高精度预测的Python代码实现,依托PyTorch框架完成数值求解。该方法通过将非线性薛定谔型物理系统的控制方程嵌入神经网络训练过程,利用自动微分技术确保模型输出严格满足偏微分方程的物理约束,有效解决了传统数值方法在复杂系统中计算成本高、泛化能力弱的问题。文章系统阐述了并行PINNs的模型架构设计、多尺度损失函数构造策略、数据-物理混合驱动的训练流程以及GPU并行加速机制,突出了其在少样本甚至无标签条件下实现物理系统精准建模的优势。; 适合人群:具备深度学习、偏微分方程及科学计算基础,从事物理建模、人工智能与交叉学科研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究非线性色散波系统如孤子动力学的高效数值求解方法;②探索物理规律与深度神经网络融合的科学人工智能(SciAI)范式;③掌握PINNs中物理损失项的设计原理与实现技巧;④构建高性能并行化物理驱动模型,用于复杂系统的预测、反演与优化。; 阅读建议:建议读者结合提供的代码动手实践,深入理解物理约束项在损失函数中的权重配置与收敛行为的关系,并尝试将其迁移至其他偏微分方程系统(如KdV、Burgers方程等),同时可通过调整网络深度、激活函数或引入自适应采样策略进一步提升模型精度与训练效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值