If 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 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.
The market is shaping each generation. Unfortunately, it's pretty common to interact with engineers that don't think before doing, they just start doing with the hope of "figuring it out as we go". This leaves no room for beautiful, simple code.
Is it a side-effect of the web boom? How much of this was the result of the PHP and JavaScript subcultures? Couldn't say.
Dealing 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.
I 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.
I 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.
I'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.
Is 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.
The 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.
That 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?
Correct. 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.
Proper 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.
I 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.
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.
It 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.).
Appreciate your response to this. I guess it's tough to go back and try to pick things up and move forward from a particular point. I feel like getting a much more solid grasp on Probability and Linear Algebra would be the most beneficial to my profession (data science), but again, not sure that I have the motivation.
The way I think of it, we all likely have decades left in our career. Consistently spending a few hours per week studying mathematics or some other technical subject related to our goals will only take a few years to reach a non-trivial level and then you still get to enjoy decades of returns off that initial investment of time.
How much more effectful will you be with a deep understanding of the fundamentals of your craft? How much more fulfilling will your work be when you have a top X percentile set of skills within your field or a unique combination of skills that give you unique insights or career leverage?
And that doesn't even touch on the aesthetic beauty of the subject matter itself! How will it affect the way you view and understand the world around you?
Remember the lessons of compound interest: a small increase of investment consistently made early on will likely have outsized effects down the line.
Speaking, 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.
Soft 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.
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.
Fixing 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.
Writing,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
50 comments
[ 5.6 ms ] story [ 109 ms ] threadIt 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.
-----
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-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.
There is no thinking without writing and drawing.
I HIGHLY recommend reading Julian Shapiro's guide on writing: https://www.julian.com/guide/write/intro
The market is shaping each generation. Unfortunately, it's pretty common to interact with engineers that don't think before doing, they just start doing with the hope of "figuring it out as we go". This leaves no room for beautiful, simple code.
Is it a side-effect of the web boom? How much of this was the result of the PHP and JavaScript subcultures? Couldn't say.
And even sadder, Microsoft ('s APIs) is not the exception, Microsoft is pretty much the norm.
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.
I've worked with people who barely knew how to type, which was annoying to see, but were extremely senior and productive.
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.
https://en.wikipedia.org/wiki/Reflective_listening
https://en.wikipedia.org/wiki/Active_listening
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.
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.
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.).
The way I think of it, we all likely have decades left in our career. Consistently spending a few hours per week studying mathematics or some other technical subject related to our goals will only take a few years to reach a non-trivial level and then you still get to enjoy decades of returns off that initial investment of time.
How much more effectful will you be with a deep understanding of the fundamentals of your craft? How much more fulfilling will your work be when you have a top X percentile set of skills within your field or a unique combination of skills that give you unique insights or career leverage?
And that doesn't even touch on the aesthetic beauty of the subject matter itself! How will it affect the way you view and understand the world around you?
Remember the lessons of compound interest: a small increase of investment consistently made early on will likely have outsized effects down the line.
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.
This helps a lot in shaping the career and boost self confidence.
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.
Few do it well, a poor start almost guarantees a poor outcome regardless of the quality of the team.