Perhaps one should refrain from posting their practice posts, then. Write bad blog posts to get better, sure, but it does not need to be published by necessity.
While I find value in writing things I don't ever intend to publish, that's a different sort of writing. For me, at least, a post written without intent to publish will be very different from a post written with intent to publish.
Writing a post without intending to publish is similar to writing pseudocode, never intending to compile. With great discipline one can learn to write good quality code without compiling it, but if you intend to compile, you actually think differently and produce better quality code.
The analogy doesn't work for me for a few reasons:
* That may be true for producing better code in a particular programming language or family of languages, but not designing better solutions. Designing software including prototyping and pseudocode independent of the constraints of a particularly development environment is invaluable. Too often I squish my problems to fit the tools I know best.
* Depending on the audience writing can be very different. This feels like a different spectrum of communication. I mentor teammates in improving all forms of written communication and this often starts with connecting with the audience of their email.
* Journaling (keeping a dairy) is being shown in recent studies to have all kinds of health benefits.
* Working out solutions free from the technicalities of the compiler and framework is a great technique, and one that I use often. Again, this is great for those who already know how to code, but if those technicalities still trip you up sometimes (as they do a beginning coder/writer), then you get a lot of value out of writing the code before declaring the problem solved (= publishing the blog post before declaring it written).
* For sure, and most people get a lot more practice with certain kinds of writing (email, technical documents, HN comments) than others. Blog posts generally have a certain audience in mind (you can specify at the beginning of the post which audience you're targeting, if you want), and it's a very different audience than most forms of writing. You should write blog posts if you want to get better at that.
* I don't contest the value of writing for an audience of one. It's just different from writing to an audience of a blog (even if that audience is mostly theoretical).
I should note that I disagree with the statement "every engineer should blog", as it has the usual failings of sweeping statements. However, if you wish to become a better writer, and in particular a better writer of content that can be widely understand by a relatively vaguely defined audience, then I highly recommend blogging.
Writing a post without intending to publish is similar to writing pseudocode, never intending to compile. With great discipline one can learn to write good quality code without compiling it, but if you intend to compile, you actually think differently and produce better quality code.