Note: while I was writing this post, Julia Evans published a wonderful entry on her blog entitled Some tactics for writing in public. I highly recommend reading as it includes some wonderful guidance about how to preempt some of the discussion I reference in this post, as well as a short but highly relevant section on analyzing negative comments. You can think of this post as putting some of that theory into practice. Thanks to Julia for being an inspiration when it comes to learning in public!
Last week’s post got some mixed feedback on HackerNews. While the HN community is frequently criticized for its pedantry, and sometimes outright vitriol, it remains an important space for discourse around science and technology. I have found it most effective to engage with comments from a posture of learning maximization. If a comment says that a post I wrote is bad, I look for the rationale, try to give it the benefit of the doubt, then stash the takeaway as an entry in my private notes.
Interestingly, since I announced publicly that I am investing my time and energy into developing my skills around chip design, it has become much easier for me to avoid getting discouraged by comments that skew more towards criticism than critique. I am committed to doing it, so if you think I am bad at it, getting better is the only option as I have taken quitting entirely off the table. In fact, a barrage of criticism is more useful to me at this stage than people following the old adage of “if you don’t have anything nice to say, then don’t say anything at all”.
The following comment from the thread on last week’s post serves as a good candidate for extracting value from what I would consider a mix of valid critique and somewhat lazy criticism.
Sadly the article explains nothing. For example, it doesn’t explain how the Verilog (or VHDL) code will be implemented at gate level, is it expensive or not (in terms of gate count), how long the critical path will be, can we pipeline it, how to implement several writing ports etc. I think that one shouldn’t write Verilog/VHDL code unless one clearly understands how it will be transformed into gates.
The comment starts out with hyperbole; the post certainly does explain something. However, unlike some comments on HN, the author actually does take the time to enumerate the rationale for why they believe the hyperbolic statement to be merited. The primary critique here is omission; there are topics that they view as imperative that are not reflected in the post.
- Description of synthesized design
- Analysis of synthesized design (size and timing implications)
- Outline of performance improvements
- Design variations
These are all important topics, and this commenter has given me a set of subject matter that I can both invest time in ensuring I have a deep understanding of, as well as produce future content on.
The other aspect to analyze in this portion of the comment is whether the post in question would have been “better” if all of those topics had been included. Because one’s outlook on this is somewhat subjective, it is hard to say conclusively. However, the important context around the post in question is that it is a weekly installment of a larger body of work, and I have explicitly chosen to lean into shorter form posts in order to both maintain consistency and share knowledge that I have gained earlier.
Those who have read my writing over a longer period of time are aware that this is a challenge for me in and of itself. In fact, the most common critique I have received on my writing over the last ~5 years is that “no one wants to read a 30 minute post”. As someone who frequently reads long-form content, I don’t actually agree with it, but I think the feedback is valid. My overall outlook is that the length of the post should be correlated to its purpose; if the content is meant to be comprehensive, it may merit more words.
That being said, that fact that the commenter felt as though this post was lacking reveals an important truth: most writing, especially on the internet, is taken out of context. While I can complain about that as much as I want, I think a more useful tactic is to ensure that posts are infused with as much context as possible. This not only helps readers better understand the subject matter, but also enables them to provide more constructive feedback. For example, it is possible that this commenter may have gone and read my other writing and provided feedback on the growing body of work as a whole, which would have been a win for me. One very tangible way I could have provided more context on this specific post is my choosing a more appropriate title, as another commenter helpfully pointed out.
The last sentence of the comment is a bit more pointed, as one may interpret it as saying that the fact that the post was not as comprehensive as they would like is evidence that I don’t understand the process by which a HDL is translated into circuits. This is a common refrain from hardware designers who believe that there is a great danger of folks writing descriptions of hardware in a higher level language and synthesizing designs that are at best inefficient, and at worst incorrect. As someone who has always valued understanding how systems work at the fundamental layer, this resonates with me. It also, if I’m being honest, cuts deeper than other feedback because it feels as though it is questioning my engineering rigor, which is a value I hold deeply.
However, my brain is already doing a fair amount of assuming, which is ironic given that is what I am also critiquing the commenter for. They don’t explicitly state that they believe this post is evidence I don’t understand what I am talking about, and even if they did, it is valuable to analyze why someone who is presumably experienced in the field had this takeaway. Perhaps the most likely reason is the previously discussed omission of information. However, another could be that I am early enough in my journey and the language that I use to share knowledge in this domain is still maturing. I would imagine there is truth in both, and this comment, as well as others in the thread provided me with useful information to improve on those dimensions.
Crafting a Response Link to heading
While I don’t advocate for responding to everyone that comments on your work on the internet, I think it can be useful in some contexts. Generally, I will respond if I want to provide additional information, or I want them to clarify a portion of their feedback. In this case, I saw an opportunity to invite this commenter, who cares enough to provide feedback on my HN post, to read my other writing and potentially provide feedback on it as well. My response is copied below.
Author here – thanks for the feedback! This is a quick post that is focused on how to logically think about the circuit, but I agree that all of the attributes you enumerated are valuable information as well. I plan to continue diving deeper in future posts. I am currently posting every Friday as part of my goal of gaining a deep understanding of chip design. Please feel free to continue to provide feedback on future posts as well!
I hope the content and voice of this response communicates my desire to continue to engage with this commenter. The worst case scenario for me is someone choosing not to share information that would make me better, even if it causes some temporary pangs of insecurity.
Continuous Evaluation Link to heading
Putting your work out on the internet can be scary, but the increased rate of
learning it can offer is mostly unmatched. I remain undeterred primarily because
I have committed to a mission, and part of that mission is publicly
demonstrating the journey that someone from a software background goes through
while gaining a deep understanding of hardware. However, there is a fine line to
walk between publicly iterating on initially crude work and just putting more
unhelpful noise into the universe. I am sure that I will oscillate on that
spectrum throughout this journey, and I look to y’all to help keep me
accountable. Thanks to @codedokode
and all those who commented on last week’s
post for doing so.
And a special thanks to those who have commented on HN and elsewhere providing words of encouragement. While I always try to take the stance outlined in this post, I am a human being, and sometimes a simple “keep going” or “this was helpful to me” goes a long way.