开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
今日推荐开源项目:《没有人 sense-hat-devilman》
今日推荐英文原文:《Pearls of Wisdom for the Junior Developer》

今日推荐开源项目:《没有人 sense-hat-devilman》传送门:GitHub链接
推荐理由:看视频的时候,不管再怎么模糊,是什么样还是能看个大概的。因为分辨率再怎么低好歹也有个三位数乘三位数,但是再缩小一点会怎么样呢?这个项目用一块板子上的 8x8 分辨率播放了恶魔人的视频,如果没有对比图甚至看不出来这是什么样子,完美阐释了只可意会不可眼观的低分辨率真理……

今日推荐英文原文:《Pearls of Wisdom for the Junior Developer》作者:Jamie Morris

Pearls of Wisdom for the Junior Developer

50+ Things I wish someone had told me back then

I recently had the pleasure of sitting on a panel of experts providing guidance to a room full of “emerging talent” (a fancy term for junior developers).

It was basically a Q&A in which we were supposed to provide pearls of wisdom drawn from our careers and experiences. I’m not sure what the hell I was doing there, but I’ve always said that everyone has an opinion, and everyone is entitled to mine.

Anyone who knows me knows that I’m quite verbose. You may have noticed it in how I write, but until you’ve spoken to me in person, you don’t know the half of it.

So, with limited time and four other people to share the stage with, I was unable to share all of my nuggets of knowledge with the audience.

I resolved to set it down in writing for the sake of future generations, who may hopefully look back on these words as some kind of Sun-Tzu for career development in the world of software… development.

Here goes nothin’.
  1. A little arrogance goes a long way, but a lot of arrogance gets you nowhere. Don’t overestimate your ability, but don’t undersell it either.
  2. Ignorance is not a crime, and you will impress people more with humility and an eagerness to learn than you will by trying to be aloof. One of the best developers I ever worked with readily admitted when they didn’t know how to do something.
  3. You don’t get a pay rise just for breathing — you have to earn it by growing.
  4. That said, if you did a good job, don’t walk out of your yearly review without something to show for it.
  5. If you didn’t learn anything new in the last year, it’s time to move on.
  6. Try working at an agency at least once — the pace of work will hone your raw skills quickly.
  7. Try working at a startup at least once — the thirst to innovate will serve you well and the culture is second-to-none.
  8. Try working at a big corporate at least once —they will have unique opportunities and room to grow.
  9. Try working for yourself at least once — you’ll learn to appreciate what sales guys do for your product.
  10. Find something that your team isn’t doing and become an expert. It might not even be technical.
  11. Don’t underestimate the value of soft skills — the ability to speak in front of an audience is a rare treasure in the software development community. Couple it with technical know-how and you will go far.
  12. Learn to love keyboard shortcuts. If you had to use the mouse, you failed.
  13. Always look for ways to automate your work. One of the best developers I know, before he even became a developer, managed to automate his job down to a single button press.
  14. Pair-programming is hard, but worth it. It makes you feel vulnerable and tires your brain faster than working alone. But the quality of your work will grow beyond your individual boundaries.
  15. Everyone feels like an imposter sometimes. It’s OK to feel like that, and it’s OK to talk about it openly.
  16. I’ve been calling myself a senior developer for much longer than I actually was one.
  17. Don’t believe in the myth of the rockstar developer. Everyone wants to be one, but it’s a backhanded compliment. Axl Rose is a rock star, but notoriously difficult to work with.
  18. Teach. Coach. Mentor. If you have a small amount of skill, share it. Don’t hoard it. You will hone your skill more by teaching than by any other means.
  19. Respect your user. They might not be technical, but their opinions are more valid than yours because they know the problem you need to solve, even if they can’t always articulate it.
  20. Beware your user. Sometimes, they will ask for thing they don’t really need. It’s your job to help them find the true value in the requests they make.
  21. Believe in your principles, but be willing to let them go when you need to. I believe in TDD, but learned that doing it in a one-day Hackathon is a recipe for failure.
  22. Don’t become tribal — as soon as you start thinking about “us” and “them” you forget that you are flawed, too. Empathy is as critical to development as technical ability.
  23. I’ve often openly cursed the quality of other peoples’ code, only to discover that I wrote it six months ago. There are better ways to learn humility than looking like an idiot.
  24. Don’t leap to conclusions. It can be tempting to run off half-cocked if you think you know the answer to something, but make sure you are right before you make a bad impression.
  25. Figure out early how you learn best. Some people like to read, some people like to listen, to watch, to do. Find your favorite and utilize it.
  26. The best career move I ever made was to take a pay cut in order to learn from the best team I could find.
  27. If you are lucky enough to be offered training at work, don’t turn it down. How many industries pay you to be educated?
  28. But don’t forget that you have a day job. Don’t sign up for every training course — pick the ones that you need and leave yourself time to put your new skills into practice.
  29. Learn to say: “No.” Your time is precious, and at larger companies you will be invited to more meetings than you possibly need to be in.
  30. Sometimes, you will want to say: “Yes,” because you are genuinely enthusiastic about what you are being asked to do. Even so, there are only so many hours in the day. Pick the things you want to say yes to.
  31. Don’t wear long hours like a badge of honor. If you have to work overtime every week, something is wrong. Work smarter, not harder.
  32. Be willing to learn something new while it is still new. Don’t wait for everyone else to get ahead of you.
  33. Don’t learn every new thing — if you already have a good tool for the job, learning to use a different tool for the same job won’t give you as much as you think.
  34. Then again, sometimes you don’t know a tool is broken until you find a better one.
  35. Stop arguing about Angular vs. React or Java vs. C# or Android vs. iOS. They are all valuable, and nobody is impressed by your slavish dedication to a cause.
  36. Learn regular expressions — they will make your life easier, eventually.
  37. Even if it takes you a week to set up your development environment just the way you like it, you will be using it for years to come. Get it right and don’t settle for things that will piss you off 50 times a day.
  38. Keep your C.V./resume up to date, even when you aren’t looking for a job. You never know when an opportunity will come up.
  39. A personal letter from you to a company is much more effective than an introduction via a recruitment agency. Remember that recruiters charge a fee to the company, so it may just not be economical to hire you that way.
  40. Don’t stop when you see an obstacle in the distance. Go and push against it to find out if it has substance — you may find the obstacle is paper-thin. Trying to overcome the obstacle is often easier than you think it will be.
  41. Working from home requires a lot of discipline. Be honest with yourself before you decide that office life isn’t for you.
  42. Dress for the job you want. That doesn’t mean you should come to work as an astronaut, but there’s nothing wrong with a shirt. I wear a waistcoat to work so that people remember me even when they don’t know my name. Build your personal brand.
  43. Beware of hard and fast rules. In my experience, most people who think in black and white don’t understand why the rule exists. If you understand why, you will spot the grey areas immediately.
  44. It’s often tempting to complain, but try to remember the good things about your job. If you forget, then write them down. Not everyone is as lucky as you are to have such a great industry to work in.
  45. If you do feel the need to complain, try to affect change instead. It is much healthier and much more impressive than whining.
  46. Practice your written and verbal communication. These are important skills that will set you apart.
  47. Test-driven development isn’t just a pie in the sky idea — people actually write tests first and reap the benefits. I see lots of people who never got around to writing tests because implementation is more fun.
  48. Lack of automated tests will paralyze your ability to maintain a project further down the line. Don’t fall into that trap.
  49. Testing code after the fact is hard, because you often need to refactor to make the code testable. Refactoring without tests is risky, so I will say it again — practice TDD.
  50. Not all great opportunities pay well, and not all well-paid opportunities are great.
  51. It’s OK to feel intimidated by people who seem smarter than you, but remember that most people only show you what they want you to see. Inside, they might feel intimidated by you.
  52. Find clever people and stick to them.
  53. Find friendly people and stick to them.
  54. If you can find people who are friendly and clever, don’t let them out of your sight.
  55. Look after your health. You are lucky enough to work in an industry that doesn’t punish you physically, but that’s no excuse to neglect physical fitness. It will make you feel better.
  56. Don’t go home every night and code. Take a night off once in a while. Don’t spend your life looking at a screen. Take the dog for a walk.
  57. Look up from your phone when you are on the bus or the train. Make eye contact. Smile.
  58. Try to remember the names of people you interact with infrequently. People love the sound of their own name spoken by someone else.
  59. If you can solve another person’s two-hour problem in five minutes, do it. Their time is precious too, and you never know when you might need help from someone else.
  60. When you do need help from someone else, be sure that you gave it a decent shot first. You will learn a lot by having a go first.
  61. Don’t slave away at a problem forever if you can ask for help. Know when you are beaten.
  62. You might love your career, but if you hate your job, find another one. Life is too short to spend half of it being unhappy.
  63. Don’t put off paying into a pension — you’ll need it one day.
  64. Start designing your application as close to the user as possible. It will be easier to validate that you’re doing the right thing.
  65. Be honest in your job interview. The interviewer has heard the same old answers to every question, including all the bullshit reasons why you want to work there. “What attracted me about this job? The salary and the tech stack.”
You know what? I’m just going to keep adding to this ever-growing, sometimes contradicting and repetitive, mess. Maybe some of it will actually be useful.