Live data from Hacker News

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

news.ycombinator.com

41–50 of 51 posts

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

#41
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.

After that communication skills are huge. You'll almost never work in total isolation. The better you can communicate the greater bandwidth you'll have with the rest of your team and customers. That bandwidth will bottle neck you far more than typing speed.

Unless you are not touch typing yet. That is a must. If for nothing other than comfort.

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

#42
* 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.

* 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.

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

#43
A couple that come to mind:

- Learn to learn. This touches every facet of being a SWE. There'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.

- Listening and understanding. You'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't being said.

- 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're not appropriate when dealing with people outside of the scope of technical work.

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

#44
post #39

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. For using the keyboard exclusively, I would recommend using the text editor Emacs which is very old…

> Emacs which is very old (as old as linux?)

Emacs is much, much older than Linux. The original Emacs was written in 1976. Gosling Emacs, the first Emacs to run on Unix, was written in 1981. Gnu Emacs was written by Stallman in 1984.[1]

Linux was first released many years later, in 1991.[2]

[1] https://en.wikipedia.org/wiki/Emacs

[2] https://en.wikipedia.org/wiki/Linux

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

#45
post #13

Writing, especially technical writing. 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. It doesn't matter what you know, if you can't explain it to someone else.

Any recommendations on resources to learn/improve this skill? I completely agree with you but it seems pretty hard to hone that skill if there's no one to give you feedback. e.g. you write some internal docs but then no one lets you know how could they be more useful/understandable, until someone else comes and re-writes the docs.

Read. Read a lot. Look for successful documents and emulate their patterns. First, understand what the author was trying to accomplish with the doc, then study the structure of the doc, then dig into the language choices. But, if I had to pick one thing to study, it would be structure. I frequently read tech docs that come off as a stream of consciousness. You have to understand your audience and put the effort in to give them context (the problem, the requirements, the methodology) before giving them the solution.

Also write. Write a lot. And ask for help. If you work with/know someone who is considered a good tech writer, I bet they will help you.

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

#46
post #13

Earlier quoted context omitted.

Any recommendations on resources to learn/improve this skill? I completely agree with you but it seems pretty hard to hone that skill if there's no one to give you feedback. e.g. you write some internal docs but then no one lets you know how could they be more useful/understandable, until someone else comes and re-writes the docs.

Read. Read a lot. Look for successful documents and emulate their patterns. First, understand what the author was trying to accomplish with the doc, then study the structure of the doc, then dig into the language choices. But, if I had to pick one thing to study, it would be structure. I frequently read tech docs that come off as a stream of consciousness. You have to understand your audience and put the effort in to…

Also learn how to diagram and do quick mock-ups. Visuals can help bridge the gap between what you can articulate and what the reader needs to develop a good mental model of the proposal.

[this comment is coming from someone who writes mostly technical design documents needing to communicate a technical solution to a problem while also considering multiple alternatives]

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

#47
post #40

Listening is what I would pick. Learn to actively listen to what people are saying, what they don't say, and, most importantly, what they mean. This will serve you in any career, but software devs who can grok what is meant rather than what is said are especially valuable. 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 gras…

[dead]

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

#48
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 "fractal communication": an email that makes sense at different abstraction and "zoom" levels. A pre-requisite to do this is to know your audience and what matters to them, and how they view things.

I'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.

Everyone has a receptor to bind to or a port to plug into.

It is also useful to write the "bottom line up front", or "BLUF"[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.

Another useful "skill" is "problem solving". We'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 then solve that problem. We're not "AI enthusiasts/influencers" and we don't shy away from telling clients they don't need machine learning for the problem we identified. We've been approached by many who want the stereotypical "AI blockchain IoT" and we don't like solutionism.

Books:

- "General Methods for Solving Physics Problems". It is a book that recognized the problem many students have: they know the formulas and laws but they don't where to apply them, when, and how to know what a problem is, or when a problem is solved. Its definitions are delightful.

- "The Complete Problem Solver" 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.

- I recently discovered a book titled "Cracked It!: How to Solve Big Problems and Sell Solutions Like Top Strategy Consultants". 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.

- "Change by Design" by Tim Brown. There are many useful concepts in there, but that also describes our approach, especially when they talk about "desirability, feasibility, viability".

Finding the right questions to ask, identifying the problem, then solving it will save you.

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's a large amount of reading and understanding to do. That is valuable for the project itself, but also for subsequent projects.

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.

Generally speaking, there are many skills like design, "business", sales, marketing, that are very useulf.

- [0]: https://en.wikipedia.org/wiki/BLUF_(communication)

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

#49

Earlier quoted context omitted.

This. And then nearly equal in importance (or maybe more depending on your position), speaking. If you can code well, write clearly, and cogently argue your case without being a jerk about it, you will do well in the software business. Join toastmasters for at least a year. You make money by being able to do things other people can't do, or won't do. Most programmers won't or can't learn to do these well, so those th…

'Speaking' has my vote over 'Writing'. If something is not clear then people turn to 'talking'

I agree on the order of importance, to be honest. But being able to write well really helps one's speaking too.

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

#50
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's little benefit in productivity. I've stuck with it in the hope that it avoids RSI in the future.

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/practiced, not such a big deal, or so poorly described as not to be of use. Whenever I come across one that I can't make sense of, that's what I try to understand. Of all the 'patterns' I've read or used, the one about policy vs mechanism was one that read like 'ok that seems good' but I couldn't recall consciously applying. After thinking on that a good long while, it's now becoming internalized and I see it everywhere, or clearly see where it could have been used to good effect and wasn'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.

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 'factors' 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.

Post reply on HN