TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Ask HN: Which everyday skill is important to master as a software developer?

41 点作者 atosatto大约 4 年前
I&#x27;m a software developer who recently started to work 4 days a week and consequentially I have some free time I want to dedicate to self improvement. I&#x27;m not looking to learn new programming languages or framework, but I just want to learn or improve code agnostic skills to do my work more efficiently.<p>My first idea is to improve the way and how much I use the keyboard with the final goal of typing faster and use the mouse less (my wrist will be happy about that).<p>Is there any other everyday skill you think is important to master? Any advice on how to improve it?

23 条评论

thomascgalvin大约 4 年前
Writing, especially technical writing.<p>There is an art to writing concise, accurate text that someone can easily follow. Very few people are capable of this, and those that can have a serious advantage in their career trajectory.<p>It doesn&#x27;t matter what you know, if you can&#x27;t explain it to someone else.
评论 #26115741 未加载
评论 #26114779 未加载
评论 #26114821 未加载
评论 #26115069 未加载
评论 #26114835 未加载
technicolorwhat大约 4 年前
I learned the most actually from discussing with others. Also I learned a lot from doing a lot. I.e. ideation, sales, putting in production, maintaining, upgrading, documentation, and sunsetting. This removes one from a tunnel vision that I used to be in, seeing things in broader scope.<p>In regards to learning itself.<p>- Trying to be open to any language, stack or technology concept or paradigm. And be devoid of fanboyism. Pick no favourites but trying really to look at the broad spectrum of software development. See what different paradigms bring to the table.<p>- Be good at discussing technology with people and listening to them. Learn to communicate in an open manner, ask &#x27;Why&#x27;, &#x27;How would you solve X&#x27; instead of &#x27;That won&#x27;t work&#x27; when you are unsure of the ideas of others.<p>- Try not to search for affirmation but try to find honest discussions.<p>- Leave your ego behind<p>- Become good at selecting which whom you discuss with, and divide your energy and attention accordingly. I.e I usually have more meaningful discussions with people that tried a lot of different paradigms, technologies and finally settled at some stack.<p>- Understand that sometimes you choose a lesser technical thing or solution, because the team can&#x27;t work with it yet. - Become good at dissecting hype, but be open minded and not bitter.<p>- If you want to grow hang out with people that are better then you and learn a lot from them.<p>- Learn how to learn.<p>- Keep a learning log&#x2F;diary for yourself. For reference and to see how far you&#x27;ve become.<p>- Find the right attitude and motivation for learning. Try not to think I can&#x27;t do this. But think. In 3 years I&#x27;ll be able to do X y z. I can still suck a little for 2 years hurray!
kstenerud大约 4 年前
Typing speed beyond an intermediate level will not improve your software development prowess. The more experience you gain, the less of your time developing will be spent hitting keys on the keyboard. If you&#x27;re spending more than 10% of your time typing, you&#x27;re probably not thinking enough.<p>The biggest bang-for-your-buck skill to learn as a software developer is delving one level below what you&#x27;re working at and learning enough about how it works so that you can debug effectively. It will also expand your horizons so that you can see more possibilities than the next guy. Problem solving is the bread and butter of the software developer.
评论 #26114285 未加载
offtop5大约 4 年前
Know how to manage your stress levels.<p>Know when to leave a bad situation. And make sure you don&#x27;t work too hard. If you work too hard you can be perceived as showing off, and make others feel insecure. I&#x27;d even argue it&#x27;s better to work too little than to try to constantly upstage people. If you&#x27;re trying to upstage your boss or your coworkers they&#x27;ll try to get rid of you. If you&#x27;re not doing all that much, assuming you&#x27;re not a complete jerk they&#x27;ll first try to help you get back on track, and if not you can probably hang out a bit longer while they work through the process of finding a replacement.<p>But seriously if you&#x27;re a jerk, you&#x27;ll be fired and they might not even care to find a replacement.
Justsignedup大约 4 年前
Things that have made me a better programmer:<p>- Mentoring<p>- Outsourcing my thoughts to discussions with other engineers. Help leverage their knowledge, and help myself.<p>- Thinking about error handling when integrating 2 systems. Expecting failure should be part of the solution.<p>- Making systems that are designed in the &quot;there are obviously no problems&quot; vs &quot;there are no obvious problems&quot; which I have succeeded in various degrees. Every time I hit the latter I get sad that I failed.<p>- Knowing when a test is absolutely critical, and when one is optional.<p>- Knowing how to abstract better, into more testable code.<p>- Knowing what &quot;project ownership&quot; means and practicing it heavily.<p>Honestly, I still use the mouse _A LOT_. I don&#x27;t use VIM for coding, I like it but I prefer JetBrains for everything.
评论 #26115256 未加载
JulianRaphael大约 4 年前
Listening&#x2F;observing and writing.<p>Listening&#x2F;observing because you really need to understand why you build what you build and depending on what you are building you&#x27;ll only figure out the &quot;why?&quot; if you listen &#x2F; observe deeply without preconceived notions. I&#x27;ve tried to improve this skill for years and still struggle with it!<p>Writing because once you&#x27;ve absorbed the information, you need to synthesise it and there is no better way to challenge your own thinking than writing. I always thought I was good at writing until I read a few books about writing skills and then read a few books (both fiction and non-fiction) and assessed the quality of writing with these basic ideas in mind. Only then did I realise that I <i>suck</i> at writing. It&#x27;s really hard to write well, but if you can write well you have the most powerful tool at your disposal as it can scale the thoughts and ideas of one individual to millions or even billions of people. It might also just convince a bunch of teammates to follow your lead :)
评论 #26115774 未加载
评论 #26117097 未加载
mooreds大约 4 年前
Listening is what I would pick.<p>Learn to actively listen to what people are saying, what they don&#x27;t say, and, most importantly, what they mean.<p>This will serve you in any career, but software devs who can grok what is meant rather than what is said are especially valuable.<p>Why? Because so much of what we deal with are abstractions that can be slippery and mean different things to different people. Getting a firm grasp on everyone&#x27;s meanings is crucial to bridging divides and delivering value.
评论 #26122992 未加载
tuckerpo大约 4 年前
Soft skills. Make a point to talk to almost everyone. Most companies are not meritocracies. If you wanna get ahead, you have to know how to schmooze.
评论 #26115282 未加载
ctocoder大约 4 年前
Spending time with friends and family.
评论 #26115150 未加载
karmakaze大约 4 年前
I have also spent (too much) time on improving my typing--custom layouts etc--even though I was already a proficient touch typist. I realized I do way more thinking than typing and there&#x27;s little benefit in productivity. I&#x27;ve stuck with it in the hope that it avoids RSI in the future.<p>I always try to spend the most time on learning higher conceptual things. There are so many things that are written about, most of them are either already known&#x2F;practiced, not such a big deal, or so poorly described as not to be of use. Whenever I come across one that I can&#x27;t make sense of, that&#x27;s what I try to understand. Of all the &#x27;patterns&#x27; I&#x27;ve read or used, the one about policy vs mechanism was one that read like &#x27;ok that seems good&#x27; but I couldn&#x27;t recall consciously applying. After thinking on that a good long while, it&#x27;s now becoming internalized and I see it everywhere, or clearly see where it could have been used to good effect and wasn&#x27;t. In practice, it basically comes down to building an elemental set of capabilities or facilities that can then be flexibly combined to make the feature(s) you want to deliver.<p>The best every day skill is having a style of code that conveys the important ideas in small parts without having to hunt around and reverse-engineer the idea that should have been conveyed. This is usually through a good choice of &#x27;factors&#x27; when you refactor and giving an disproportionate amount of time naming things and mentally reading it back to see what another developer might think from reading it.
xupybd大约 4 年前
Being a software developer often means you have to use your skills to solve problems in domains outside of software development. Mastering the domain you work in makes life so much easier.<p>After that communication skills are huge. You&#x27;ll almost never work in total isolation. The better you can communicate the greater bandwidth you&#x27;ll have with the rest of your team and customers. That bandwidth will bottle neck you far more than typing speed.<p>Unless you are not touch typing yet. That is a must. If for nothing other than comfort.
toast0大约 4 年前
Good keyboarding skills are useful, but also pretty easy. Spend an hour or two reading and watching about how to do it properly, and then spend 30 minutes a day on PAWS, Mavis Beacon, Mario Teaches Typing, Typershark or The Typing of the Dead for maybe a month. Paying attention to your posture and proper technique more than everything else. Put a (paper) file folder over your hands so you can&#x27;t peek.<p>Get an ambidextrous mouse, and try left mousing from time to time. Try to left mouse at work, and right mouse at home to give your body more variety. Use page up&#x2F;page down to scroll instead of the scroll wheel; scroll wheels are super useful, but ergo nightmares.<p>But, that&#x27;s not going to help your work that much. Work on effective communication, which is gathering information from others as much as it is providing information to others. Sometimes the other is yourself. When you see some writing or speaking or drawing that communicates well to you, study it, and think about how you would have done it, and what you can do differently to be more effective. Practice this as well. Maybe you see a manual that&#x27;s terrible. Can you spend 30 minutes redrafting it and another 30 minutes communicating with the owner to get it updated?
kodah大约 4 年前
A couple that come to mind:<p>- Learn to learn. This touches every facet of being a SWE. There&#x27;s a clear difference between a SWE who has spent their entire career in one language and one domain and a polyglot engineer who just has a taste for understanding things in the world and implementing them. Of course, this generates a lot of shallow knowledge, so know yourself and seek improvement where possible.<p>- Listening and understanding. You&#x27;re going to hear a lot of inaccurate things from users, peers, etc -- learn to ask the questions that bubble the core concerns up and listen for the things that aren&#x27;t being said.<p>- Know your audience. The other day my friend sent me a screenshot of a network technician asking her (a teacher) about a demarcation point. Although technical (and often mathematical terms) are appropriate for use between engineers you know with a common understanding, they&#x27;re not appropriate when dealing with people outside of the scope of technical work.
ochronus大约 4 年前
Definitely communication (I know, a broad category)! Teamplay is key and good communication is the foundation of that. I&#x27;ve written a bit about this: <a href="https:&#x2F;&#x2F;ochronus.online&#x2F;communication-for-software-engineers&#x2F;" rel="nofollow">https:&#x2F;&#x2F;ochronus.online&#x2F;communication-for-software-engineers...</a>
sova大约 4 年前
Brainstorming and mapping out your ideas and concepts before diving in to code are very fundamental to an expert workflow. I would recommend getting a notebook with dots or gridlines for modeling out creative tasks, and getting a dry-erase board and some fine-tip dry-erase markers for quick drawing and task management.<p>For using the keyboard exclusively, I would recommend using the text editor Emacs which is very old (as old as linux?) and very stable, has keyboard actions for moving up and down by row, across by any number of characters, switching between buffers, and even has a built-in &quot;undo tree&quot; that you can walk back and forth to see code changes very easily.
评论 #26121274 未加载
austincheney大约 4 年前
* technical writing. There is a night and day difference between people who can balance brevity and precision and those who can’t. It’s like separating the adults from the children in the room.<p>* data structures. Some developers can grasp that data facets are composed into groups called structures internally divisible by something called relationships. Other developers don’t ever grasp that and simply view the world as a stream of search queries.
yannoninator大约 4 年前
Implementing algorithms.<p>I know, I know, but someone&#x27;s gotta do it.
DocTomoe大约 4 年前
1. People Skills - you can be the whizkid, but if you cannot relate and talk to the end user, your product will be worse off, and you will likely be out of a job soon.<p>2. How to ask the right questions - and how to ask them correctly. The clearer you are able to convey which information you are looking for, the less you will be sent on wild goose chases.<p>3. How to use Google well.<p>4. How to take a step back, relax, and refocus.
tkinom大约 4 年前
Able to write full automated system level regression tests for every platforms&#x2F;app&#x2F;system you develop for.
simplecto大约 4 年前
You need to reach out to this guy. Hes written a book on the subject.<p><a href="https:&#x2F;&#x2F;themouseless.dev&#x2F;" rel="nofollow">https:&#x2F;&#x2F;themouseless.dev&#x2F;</a>
Jugurtha大约 4 年前
Writing people can understand and act on. Writing that ties several threads and abstraction levels when different audiences will be consuming it. For example, when writing an email and the recipients are executives, managers, sales people, engineers, advisors, and advisors, I write what I call &quot;fractal communication&quot;: an email that makes sense at different abstraction and &quot;zoom&quot; levels. A pre-requisite to do this is to know your audience and what matters to them, and how they view things.<p>I&#x27;ll write an email that describes the high level objectives and the strategy I think will lead to success, then describe why I think it is true, then describe the hurdles, and then go deeper for what needs to happen right to the issue number on our issue tracker, and a pesky line of code or pull request on a third-party library.<p>Everyone has a receptor to bind to or a port to plug into.<p>It is also useful to write the &quot;bottom line up front&quot;, or &quot;BLUF&quot;[0]. Conclusion, then the underlying research and data that lead you to reach that conclusion. If there are actions people need to take, write those at the top properly tagging the people who need to do them.<p>Another useful &quot;skill&quot; is &quot;problem solving&quot;. We&#x27;re a tiny boutique consultancy specializing in machine learning, and we have good outcomes working with our clients because we spend the necessary time to extract the problem out of our clients and clearly define it, and <i>then</i> solve that problem. We&#x27;re not &quot;AI enthusiasts&#x2F;influencers&quot; and we don&#x27;t shy away from telling clients they don&#x27;t need machine learning for the problem we identified. We&#x27;ve been approached by many who want the stereotypical &quot;AI blockchain IoT&quot; and we don&#x27;t like solutionism.<p>Books:<p>- &quot;General Methods for Solving Physics Problems&quot;. It is a book that recognized the problem many students have: they know the formulas and laws but they don&#x27;t where to apply them, when, and how to know what a problem is, or when a problem is solved. Its definitions are delightful.<p>- &quot;The Complete Problem Solver&quot; by John R. Hayes. The book This is not a quizz collection, but an abstract way to think about problems, and then practical techniques to solve them.<p>- I recently discovered a book titled &quot;Cracked It!: How to Solve Big Problems and Sell Solutions Like Top Strategy Consultants&quot;. I only skimmed the table of contents for now and seen the authors talk about it, and it looks like what we do with clients.<p>- &quot;Change by Design&quot; by Tim Brown. There are many useful concepts in there, but that also describes our approach, especially when they talk about &quot;desirability, feasibility, viability&quot;.<p>Finding the right questions to ask, identifying the problem, then solving it will save you.<p>The skill of reading and synthesis is useful when diving deep in a domain. We work in diverse sectors and industries, and we must quickly be able to communicate with domain experts to define problems and find solutions. There&#x27;s a large amount of reading and understanding to do. That is valuable for the project itself, but also for subsequent projects.<p>Another extremely useful skill is interviewing. We talk a lot with domain experts, and we must know how to extract problems from what they describe, frame the conversation, drive them to explain more, etc.<p>Generally speaking, there are many skills like design, &quot;business&quot;, sales, marketing, that are very useulf.<p>- [0]: <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;BLUF_(communication)" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;BLUF_(communication)</a>
watan0000大约 4 年前
hi
notoriousarun大约 4 年前
&gt; 97 Things Every Programmer Should Know<p>&gt; Any programmer wishing to be a great programmer should read this! <a href="https:&#x2F;&#x2F;www.amazon.com&#x2F;Things-Every-Programmer-Should-Know&#x2F;dp&#x2F;0596809484?dchild=1&amp;keywords=97+things+every+programmer&amp;qid=1613143781&amp;s=books&amp;sr=1-1&amp;linkCode=ll1&amp;tag=amazonpurch08-20&amp;linkId=d9f3275fb664f9fa5c7c92dae928d0f6&amp;language=en_US&amp;ref_=as_li_ss_tl" rel="nofollow">https:&#x2F;&#x2F;www.amazon.com&#x2F;Things-Every-Programmer-Should-Know&#x2F;d...</a><p>This book is an assemblage of short papers running on themes as different as Bugs, Error Handling, Customers, Refactoring, and Expertise.<p>The motivation behind the short exposition isn&#x27;t to address every one of your inquiries or be an authoritative manual for programming.