8 ms·
Ask HN: What is the most underrated skill software engineers should learn?
Also curious about highest value skill for least duration
- kazinator 7y agoHow about: learning to type fast, with all ten fingers, without looking at the keyboard.
- sgillen 7y agoI would say 10 fingers is optional if you can manage the other two. Fun fact I type with 3.5 fingers at a reasonable speed and without looking at the keyboard. I never have problems with wrist pain. I tried to teach myself to use all 10 fingers and within a day or two was experiencing very noticeable pain! I switched back to my ad hoc method and haven’t looked back.
- highhedgehog 7y agomaybe cause you never used them?
- muzani 7y agoI used to think so, but I switched to an ergonomic keyboard, which split the keyboard to two parts. After properly learning to type, my work speed increased tremendously. It also helps a lot having a 100% accuracy rate on brackets and apostrophes.
- forgotmypw 7y agoThis is why I lug around a standard keyboard to go with my laptop. I know exactly where the keys are, including directional and navigation.
- AnimalMuppet 7y agoI've done that, too, when I was going to have to do real work on the laptop. For me, laptop keyboards have two problems. The key spacing is wrong. I don't have laptop-keyboard-sized hands. The other problem is key travel. I like keys that push a bit farther than laptop keys do.
- forgotmypw 7y agoYep. Desktop keyboard were designed for typing. Laptop keyboards were designed to fit inside a laptop.
- aprdm 7y agoIs writing speed a real bottleneck for any software development...? The other day someone posted how 10 lines of code a day is the avg as per the mythical man month book which the author of Redis agreed with! I've worked with people who barely knew how to type, which was annoying to see, but were extremely senior and productive.
- jklein11 7y agoMaybe not for development but it certainly comes in handy for note taking
- abd12 7y agoWriting. It helps to clarify your thinking. At your job, it will help you explain concepts to others and multiply your efforts. Externally, it can help make great friends and boost your career if you blog & share things you've learned.
- afarrell 7y agoIf you read the parent comment with feeling of frustration and dread, ask yourself: "Am I bad at writing a first draft? Or am I bad at editing my writing?". These are two different things. ----- For learning to edit a piece of writing you've already written, I recommend this book: https://www.amazon.co.uk/Style-Clarity-Chicago-Writing-Publishing/dp/0226899152 https://www.amazon.co.uk/Style-Clarity-Chicago-Writing-Publi... It is full of advice more actionable than Strunk and White. ----- For learning how to write a first draft without wanting to dig your nails into your arms or more drastic forms of self-harm, I recommend: 1) "Start with Why" -- Start each draft by writing your goal and then writing the "signs of success" which you can use to recognize making progress. I find a particularly motivating form of "why" is a description of a problem someone finds themselves in which they want advice about. Reddit is a good source of these if you want inspiration, but you might be better off giving advice to your future self. 2) Take inspiration from automated testing -- If you are anxious about some section being [maliciously] misinterpreted, write down that anxiety with a pointer to the section and a promise to yourself to have a trusted friend read it. 3) Question-Driven-Drafting -- Start with a question. Write the first flawed answer that comes to mind. Write the first question or objection that comes to mind from that answer. Write the first response that comes to mind from that etc... Don't delete. 4) Alternate focusing with exploring -- Set a pomodoro timer. Use my method from #3 or another to produce a bunch of text. When it goes off, congratulate yourself and meditate for 2 minutes. Then set another pomodoro timer and start to turn your ideas into a structured outline: Try to extract the one-sentence key point from the text you just wrote. Then try to build a pyramid-shaped hierarchy under it with the names of the supporting points. When this pomodoro ends, meditate again and start another rambling pomodoro based on the most interesting point. 5) Be willing to "overthink things" -- When you have a question, be willing to actually trust yourself that the question is worth answering. If someone else thinks the answer is obvious, just move on to ask someone else. If someone screams at you that your question is excuse-making, bullshit, or procrastinating, just move on from them. You no longer have parents nor teachers to endure and can write from your own desire to understand the world and communicate ideas. The confusion you notice in yourself is worthy not of ridicule but of sympathetic curiosity. 6) Go for a walk -- Its just a generally good idea. 7) Dictate into otter.ai -- It is as good a use for your time while walking as any. The resulting text will be heavy with misspellings, but you'll be able to edit it and it will restore your sense of confidence in your ability to generate ideas. 8) Work with a writing coach or therapist if you can find a good one. They might be expensive, but they're less expensive than getting fired because you handed in a blank performance self-evaluation.
- jghn 7y agoPresentation skills, speaking in general. Learning how to read a room, drove consensus, and tease apart what someone is really after
- photawe 7y agoDealing with bugs in other APIs. This is such a sad truth of today's software - you are dependent on other libraries, and as you use them, you encounter bugs - and quite a few, I may add. And even sadder, Microsoft ('s APIs) is not the exception, Microsoft is pretty much the norm.
- codingslave 7y agoThe only thing that matters is data structures and algorithms. If you cant master those, you wont get far/your pay is forever capped and should move into management or another career entirely.
- brailsafe 7y agoYou forgot the /s
- codingslave 7y agounfortunately im serious
- brailsafe 7y agoThat seems bizarre to me. Perhaps in generalized see roles at certain companies in certain locations and when you are grinding the interview process, but how do you feel it applies as a progression in skill alone?
- pepper_sauce 7y agoYep, the best advice a software developer can get is to optimise for what interviews are selecting for.
- dflock 7y agoIf you want a purely technical skill, being fluent in SQL, including DDL, joins, etc... would be a pretty good candidate.
- cvaidya1986 7y agoSetting expectations and communicating them clearly and continuously.
- pid_0 7y agoIf you want to make lots of money, soft skills. You can be a decent engineer and a good presenter and make $$$
- thewileyone 7y agoTesting. I've never known any great developer with at least good testing skills. I've met many awful developers who don't know how to test.
- thorin 7y agoCorrect. Testing can mean so many things though and could include debugging, unit and component testing, integration testing, reading 3rd party code/documentation to understand why your code fails to work as expected. Also documentation of what was expected and what happens... Current crop of programmers seem good at writing unit tests, but poor in terms of overall system understanding and related skills (security, performance, networking, unix tools, databases etc). This is as an EE/developer for last 25 years working often with offshore developers on large projects/accounts.
- JamesBarney 7y agoEstimation.
- cbanek 7y agoGood listening skills: Reflective listening, active listening, etc. https://en.wikipedia.org/wiki/Reflective_listening https://en.wikipedia.org/wiki/Reflective_listening https://en.wikipedia.org/wiki/Active_listening https://en.wikipedia.org/wiki/Active_listening
- master_yoda_1 7y agois to understand that you can NOT get away with poor coding skill by developing only underrated skill ;)
- moralestapia 7y agoProper math. It's also easier than you think, even a year of (casual but) serious study will open up your vision and make you feel extremely more confident with your work.
- ahpearce 7y agoAny idea where to start? I've always found it extremely challenging, in regards to both motivation and direction.
- moralestapia 7y agoI don't like giving you a vague answer to this but math is truly vast so it depends a lot on what you're doing. Tell me more and I could give you more suggestions. In my particular case, I started with Linear Algebra and that led me to some Applied Geometry and now I'm reading some (basic) things about Topology as well. I've also read a lot about Category Theory, in part thanks to HN as it keeps surfacing here often.
- hamiltonc 7y agoStatistics and probability. I've lost count how many times I inferred stuff by common sense and hunch, just to be proved wrong. Our intuition is mostly off for statistical phenomena like confidence levels, odds of something happening again given some sample, some event being (statistically) relevant or not, etc.
- ahpearce 7y agoI have a Bachelor's and Master's in stats, more or less, but my confidence is still extremely low.
- sn9 7y agoIt depends both on your current background and your goals. What's the highest level of math that you know so well you could walk into any classroom and teach it? For many, it's been so many years since they've had to use anything from even middle school algebra that they might have to start there. Make sure you're building on a strong foundation if you wish to build something grand that persists. You want to find the highest level that feels too easy, and then gradually increase difficulty from there. You can use sites like Khan Academy to find that point. Alternatively, you can just embrace the fact that you may be overconfident and work through books that seem "below your level" just to verify that you really have mastery over the subject matter. You could spend a year or two going through the Art of Problem Solving books which cover pre-collegiate math at a deeper level and use SRS like Anki to schedule review of concepts and problems you've understood and solved. At the college level, assuming you're a programmer, the first subjects to master are probably how to write proofs well, calculus in single and many variables (e.g., Spivak followed by Hubbard and Hubbard), discrete mathematics (e.g., Rosen or Epps), linear algebra (e.g., Strang, Axler, Shilov, etc.), and statistics and probability. Hang out on math forums like the math subreddit and you'll see many books recommended over and over again. Be sure to examine the preface and introduction of any book you're thinking about buying. They usually include a section on the intended audience and what their background should be to productively engage with the text. The most important thing is that you solve or attempt to solve many problems, and avoid looking at the solution until you've really spent a good deal of time banging your head against the wall trying to figure it out. How much time you should wait scales with the difficulty of the subject (e.g., less than an hour for high school level material, a week or more for advanced undergraduate level material, etc.).
- thorin 7y agoSpeaking, writing, listening, thinking ( which includes debugging, designing, how things fit together, how people use their stuff, how you use other peoples stuff). Communication seems to be the main thing I see missing, and caring whether what is produced is fit for purpose (not just your bit). As I move towards being an architect/less coding, this is something I'm thinking about more.
- amirbehzad 7y agoDiagraming, such as ERD and UML Sequence Diagrams
- rasikjain 7y agoSoft skills - Speaking, Team Building, Listening patiently, Able to translate technical details to non-technical audience, Ability to help/volunteer the team during the crisis mode. This helps a lot in shaping the career and boost self confidence.
- blaser-waffle 7y agoSales, and selling. You're selling yourself and your skills on an individual level. You're selling your team and your pieces of the codebase on a manager level. You're selling your product or your vertical on the executive level. This isn't Wolf of Wallstreet or "Coffee is for Closers", but if you're not able to sell yourself a little then you'll be struggling against an equally good coder who knows how to put a little spin and polish on what they're doing.
- eliasbagley 7y agoAny resources for this?
- soulchild37 7y agoDefinitely https://kalzumeus.com https://kalzumeus.com for selling yourself careerwise, and https://stackingthebricks.com https://stackingthebricks.com if you are planning to sell your own product
- tboyd47 7y agoDebugging
- erkanerol 7y agoFixing a lot of small issues to make the codebase ready for production without getting bored. Unfortunately, only small portion of software engineering is sexy and cool.
- airbreather 7y agoEffective Problem Identification and then Requirements Capture. Few do it well, a poor start almost guarantees a poor outcome regardless of the quality of the team.
- boltzmannbrain 7y agoPatience.
- ak39 7y agoRelational data normalization at least to 3NF.
- medialucky20 7y agoWriting,know the reason behind developing this product or code. many times we end up just developing what asked to do without knowing its purpose, usage, impact etc. Sometimes these factor influence your work to feel belong to something
- frogperson 7y agonegotiating/sales.
- ironschool 7y agoNaming