书名: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.