开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
今日推荐开源项目:《更新日志 keep-a-changelog》
今日推荐英文原文:《Four Ways to Know if You’re a Great Software Engineer》
开源日报第552期:《更新日志 keep-a-changelog》
今日推荐开源项目:《更新日志 keep-a-changelog》传送门:GitHub链接
今日推荐英文原文:《Four Ways to Know if You’re a Great Software Engineer》作者:Indrek Lasn

Four Ways to Know if You’re a Great Software Engineer

What’s the universal measurement of a great software engineer?

Software engineering is the art of crafting beautiful software. What is beautiful software? Some might say beautiful software looks aesthetically pleasing and feels intuitive, others might agree that beautiful software equals coherent and logical code. There’s no right or wrong here, being a good software engineer is up to interpretation. Here are my key takes on what makes someone a great engineer.

Fun to Work With

You’re the first to arrive at the office at 7:30 AM and sit down to sip your morning coffee while reading the latest scandals around the globe, with the occasional small dose of programming and startup news. You feel good and feel ready to crush the day. You open up Github and start to review your previous pull request, only to find your teammate nit-picking on your variable naming, semi-colon insertions, and other trivialities, while completely ignoring the feature you implemented without any issues.
开源日报第552期:《更新日志 keep-a-changelog》
Photo by Allie Smith on Unsplash

Don’t be the guy to annoy your teammates. It’s fine to have standards, but such standards should be clearly defined and agreed on. If you argue about preferences, use prettier with ESLint. The two previous tools let teams agree on a standard while maintaining coding flavor.

Being a fun person to work with is absolutely crucial to being a great software engineer. Many engineers think that their code speaks for themselves. While we all admire great code, don’t be a jerk, especially if you’re a senior engineer. A great engineer should be fun to work with, non-lethargic, and ready to take on challenges. Not everyone can do it, but at least try. I’m often lethargic myself, but I try not to be. No matter how technically brilliant you are, you’ll always be limited by your ability to communicate.
“A rational person can find peace by cultivating indifference to things outside of their control.” — Naval Ravikant

Ability to Teach and Learn

Having the ability to lift your teammates is invaluable. You might be extremely proficient in X, while your teammate might be experienced in Y. The ability to exchange knowledge is often looked down upon. Great teams put their minds together. Greater problems require great teams.
开源日报第552期:《更新日志 keep-a-changelog》
Photo by Kimberly Farmer on Unsplash

If you want to become a truly great engineer, you should be able to swallow your ego and status. Wise senior engineers will often tell you they learn new things from junior engineers all the time. Junior engineers are eager to prove themselves and learn the latest and coolest programming tooling, only to demonstrate the tools to the team. A wise engineer considers and accepts any information from any source. Leave your dogmas at the door.

Amazing developers who lack team skills stagnate in roles, while perhaps less technically adept devs, who are more personable and more able to sell their ideas, flourish.

Don’t Give Up When Things Get Hard (Be Willing to Put the Hours In)

One day you will face a challenge that you have no business with. It shocks and overwhelms you. You ask yourself “I have to do what?!”. Stay calm, don’t panic. As a software engineer, I can assure you this is all part of the ride. Feeling overwhelmed is actually a good thing, it’s how we evolve. To grow, we have to face new and harder challenges — it’s the only way. When the time comes, don’t be afraid to take the leap forward.
开源日报第552期:《更新日志 keep-a-changelog》
Photo by Kristopher Roller on Unsplash

As with any skill, you have to put in the hours. If it’s worth doing, it’s worth doing great. Don’t just do things for the sake of it, do it because you want to show everyone how great your work is. If you’re asked to do X, do X and add some sugar on top of it. A good way to put the hours in is just simply to build stuff, build anything, just build it. If you lack ideas, here’s a fun list of apps to build:https://medium.com/better-programming/the-secret-to-being-a-top-developer-is-building-things-heres-a-list-of-fun-apps-to-build-aac61ac0736c

Taking Ownership and Beyond

Every executive or manager wants to carve the ownership ideology deep inside every team, for good reason. If workers take ownership and treat their code or products as if it belongs to them personally, they will take special care and consideration.
开源日报第552期:《更新日志 keep-a-changelog》
Photo by ROOM on Unsplash

When working for a small team inside a big company, one can quickly lose the ownership feeling. It’s crucial to treat any codebase as if the next person to deal with the code will be a serial killer who knows where you live. Jokes aside, I think ownership is a powerful concept. If you’re given a task, treat that task as though it serves you directly. In the grand scheme of things, you want to work in a well-known company, that changes the world for the better and leaves a dent in the universe. By taking ownership and responsibility, you’re directly signaling your values and beliefs.

Thanks for reading, I hope you learned something new. Happy coding!