给读过所有其他建议文章的新软件开发人员的建议
Advice for new software devs who've read all those other advice essays

原始链接: https://buttondown.email/hillelwayne/archive/advice-for-new-software-devs-whove-read-all-those/

十三个技巧分享十年编程经验 网上的编程建议很丰富,但这些技巧旨在为入门级开发人员提供有价值的见解。 虽然我们可能都比其他人更喜欢某些编码风格或倾向于特定语言,但重要的是不要仅仅认同这些偏好。 相反,保持开放的心态并认识到每个人都可以从不同的观点和方法中受益。 以下是值得考虑的十三个建议: 1. 学习批判性思维技能 - 阅读有关编程的文章和帖子非常好,但有时其中存在无益或误导性的建议。 不要盲目接受新概念,而是根据证据或个人经验批判性地分析它们。 2. 阅读 Juliana Hwang 的《调试:9 条规则》——这本指南是新手开发人员的必备资源,为常见的编程问题提供了实用的解决方案。 即使是经验丰富的程序员也可以学到有用的技术。 3. 避免沉迷于被称为“正确方法”的特定风格或方法。 拥抱针对各个项目量身定制的多种策略,因为没有一种方法可以通用。 专业环境中总是存在多种方法。 4. 当不确定是否实施既定的编程原则时,检查其背后的背景。 彻底了解每项原则在何处以及在何种情况下出现,可以阐明其与当前需求的相关性。 5. 在习惯使用流行编程工具之前,调查并理解它们的起源。 有时,此类工具会附带隐藏成本或技术限制。 探索底层功能有助于就给定工具的适用性做出明智的决策。 6. 定期在直属团队或部门之外的办公空间漫步,以获得更广泛的行业知识。 通常,令人惊讶的启示就在我们熟悉的范围之外。 7. 通过参与多项任务,深入了解其他计算领域,包括客户端应用程序、数据库、网络基础设施和支持服务。 熟悉计算机科学领域的不同专业可以扩大对各种编程风格和场景的接触。 8. 请注意,几乎所有数字系统都具有值得探索的隐藏功能。 了解鲜为人知的功能或模糊的系统模块有助于优化和提高效率。 9. 寻求与非技术人员(例如客户服务代表、营销专家、客户经理)互动的机会,并解决问题

文档主要是帮助完成即时任务的参考工具,因此它需要为特定功能或特性提供足够的详细信息,而不会给读者带来不必要的信息。 从长远来看,浏览章节或扫描索引可以节省宝贵的时间和精力。 请记住,一张图片胜过一千个单词(或段落或行文本)。 最终,开发最适合个人喜好和技能的方法和节奏对于实现最佳生产力和最小化挫败感至关重要。
相关文章

原文

Someone recently asked me if I had advice for early-career programmers. At first I thought this was a silly question. I only entered the workforce ten years ago; many of my newsletter subscribers have been programming for longer than I've been alive!

Then I went and read some "advice for starting programmer" essays and thought of some things they missed. So here's thirteen bits of advice for early-career programmers. Some of it is contradictory.

  • People don't listen to me because I'm a good programmer, they listen to me because I'm a good writer. The same is true of pretty much everybody you'll read. This doesn't mean you should automatically reject everything, but it means you should carefully think about it and evaluate how it applies to your situation. And take any argument about "objective truth" with a grain of salt: there is very little about software that's been scientifically studied, and most of the research is inconclusive.

  • But also don't worry too hard about getting "tricked" or learning "the wrong thing". If you like someone's ideas, try them out! As long as you're not actively sabotaging your coworkers then it'll probably work out in the end, even if you look back and think "I should have done that different." That's what learning is all about!

  • Read the book Debugging: The 9 Rules. Borrow it from the library or ask your company to buy a copy, whatever. It's a real easy read and teaches an important skill all the other "beginner programmer" books barely cover.

  • At some point you will discover the Right Way to program, the thing which makes this all make sense, and you'll be convinced that the whole field would be so much better off if everybody else programmed the Right Way, too. For me the Right Way was test-driven development; for you it might be functional programming, lisp, formal methods or one of a million other things.

    I'm not going to tell you to not get swept up in the Right Way, because that's pretty much impossible. And honestly it feels really great to discover the Right Way and life's too short to not feel good. Just be mindful of the fact you're getting swept up and try not to make your identity the Right Way Guy. Eventually the honeymoon will end and you'll learn that programming is frustrating and messy regardless of which Right Way people use, and that you can also make great software without doing it the Right Way. Over time you'll learn fifty other Right Ways and learn to mix and match them to the problem at hand.

  • When you first encounter the Right Way, it will likely be from someone who went full Right Way Guy. Try not to hold it against them later. And try not to conflate the actual technique with how the RWG pitches the technique. Most ideas need some modification from their purest form to integrate well with other ideas.

  • Julia Evans once said "behind every best practice is a horror story." If you don't understand a Best Practice, look for the horror story that inspired it. It might make the best practice make sense. It might turn out to be something that's completely irrelevant to you, and then you can feel comfortable doing a different practice instead.

  • Building on the last tip: a lot of best practices and conventions are "path dependent", arising from a mix of historical and cultural factors. There are things we do because our mentors do it, who do it because their mentors did it, who did it to address issues that aren't as relevant anymore. If something sounds like a just-so story, it very well might be. You can often retrace the whole path if you're willing to look.

  • Take walks.

  • Almost every tool you use has some form of hidden depth, from your programming language to git to JIRA. Don't feel like you have to become an expert in every single one, but do consider spending 5-10 minutes learning a bit more about what it can do.

  • Talk to people in other parts of the company: support, business domain, sales, etc. Consider shadowing them if you have the time (and feel comfortable asking). You'll be surprised by what you learn!

  • If possible, try to do a few different types of programming earlier in your career. This doesn't have to mean switching jobs: most companies are doing several different kinds of programming at once. So like if you're starting in a webdev company, try some frontend, some backend, some operations, some database stuff, and so forth. This helps you learn, but far more importantly increases your chances of finding a kind of software work that you really really like. My first job was as a frontend dev and I was miserable. Later I moved to backend and was much happier, as were the people who wanted to spent more time doing frontend!

  • You've probably heard the advice that software as a field is changing all the time, and that you shouldn't get swept up in the framework treadmill, just focus on learning fundamental skills. This is a true, but doesn't explain the "why". For structural reasons, information in software propagates really quickly. This is due to a lot of factors (internet, open source, conferences) but overall there's a lower barrier to sharing ideas in software. So it's really easy to get a lot of people to know about someone's pet project, even if only one person uses it.

    The upshot of this is that a lot of the technologies you hear about have very small userbases and will never get wide adoption, but it won't seem that way from how you hear about it. That's why it makes sense to be conservative. If you hear about something that gets you excited, go ahead and be an early adopter, otherwise it's okay to wait a couple years to see if it has legs.

  • Ultimately none of us can predict the future, just as none of us could have predicted the present. Just try to do the best you can, live according to your values, and enjoy the ride.

  • That's all from me for the year; new workshop dates when I get back. See you in 2024!

    If you're reading this on the web, you can subscribe here. Updates are 6x a month. My main website is here.

    联系我们 contact @ memedata.com