Photo by Glenn Carstens-Peters on Unsplash
I Wrote More Than 90 Articles on 2021: Here Is What I Learned
This article summarizes my experience as a writer during the pandemic year 2021
Below you will find many resources and tools, and my method and tips for writing a lot.
TL;DR: Several advices to write great articles
My Background
I have a degree in computer science. π¨π½βπ¬
I use the scientific method and Occam's razor.
I have researched for 30 years both in the academic and industrial fields.
I don't have the absolute truth.
I try to support my opinions with evidence. π
They are my opinions and are very subject to change.
My tools and secret sauces
I Have a (very) long list of draft articles.
I often skip the waiting queue and write about some inspirational source (and quote it).
I use a different template in all my series.
For example, I have an empty Code Smell template.
I write Everywhere πΊοΈ
I proofread all my articles with HemingwayApp, Grammarly, and Google Translate (all free) π‘
I parse the markdown in my articles and convert them to HTML to republish on many platforms at once.
I heavily use the canonical URL tag to avoid search penalties. π
I Follow very interesting people on Twitter and blogging platforms. β¨
I take a new course every week, usually on a subject that is far away from my comfort zone.
I add many references and quotes to my articles.
Time management
I read a lot of articles early in the morning and bookmark them during the day. π
I use Trello, Inoreader, Pocket, and Obsidian.
I Use The Pomodoro technique to focus when writing. π
I avoid perfection. I publish them when they are ready.
Then I make corrections following other people's comments. Even after months.
I Garden my articles.
Dealing with Criticism
I have different opinions than many other developers.
Software Design is a creative activity.
My articles are suggestions and not rigid rules.
I try to have intelligent and polite discussions.
I have zero tolerance for hate speech and unprofessional comments.
I never feed the troll.
Common Criticism
- I get the same comments over and over again, these are the common critics I get and my opinions:
Opinions
Revealed Truth
I don't have the same opinion as many people.
If you think [NULLs|Undefined|Singletons|...|Whatever] are awesome, I have a different point of view.
Readability
I need to see the complete code in a sheet
If you need to see long methods/scripts to understand your solution, that's fine.
I prefer to have small/reusable/testable functions.
A 15 lines long method is not 'long'
IMHO, a 6 lines method is too long
You can always break them using refactorings. π οΈ
You don't need to see the big picture and the details at the same time. π³
Trust your implementation and write good tests.
The code in your articles is not Compiling/Working/has errors
I try to add code samples for clarity.
Most of the code snippets work.
Some of them are pseudo-code for educational purposes. π¨βπ«
I have used 25+ different languages in my articles.
Whenever possible, I test the code in a repl.it
I am not an expert in NONE of these languages.
Languages are accidental, and Software design is essential.
Why do you rotate the programming languages?
I use different languages on purpose.
Some Code Smells are language-dependent.
Imagine what would happen if I write them in, for example, Javascript.
Everyone would argue and associate Javascript with those languages.
No language is perfect and that is my point.
I Have a trick in INSERT LANGUAGE to improve the code.
Most of the articles are language-independent.
The solution tries to avoid language perks and cleverness.
Performance
Your solution is not performant/optimal/memory efficient
I write about backend business software. π₯οΈ
This is the domain I've been working on.
I know that some tasks require more performant solutions (for example DApps).
I will always choose long descriptive names over smart performance optimizations.
First, make the code right. βοΈ
Then, optimize it only if you have strong evidence.
Complexity is not enough evidence.
You need a genuine benchmark in real use case scenarios. π
If I need to sort 20 elements in a collection, I will always choose bubble sort because it is easier to read.
Premature optimization is the root of all evil. π
Anti-Patterns
Helpers, DTOs, Singletons, Nulls, Setters, Metaprogramming, Castings, Comments are standard. π
I write a lot on these anti-patterns with the reasons why I think we should avoid them.
You can keep thinking they are good and that's fine.
My arguments against them are in all articles.
I reply polite comments about them.
Your solutions have too many indirections
Coupling is our worst enemy. π
We need to avoid direct relationships.
I Hate the word 'Code Smell'
- I didn't coin it. I was Martin Fowler.
You have too many rules and constraints
- There is just one rule
-- Always follow the bijection π