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

Maximiliano Contieri
3 min readDec 31, 2021

Below you will find lots of resources and tools and my method and tips for heavy writing.

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 cite 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 with 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 smart 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, so these are the common critics I get and my opinions.

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.

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.
  • I am not an expert in ANY of these languages.

- Languages are accidental, Software design is essential.

I Have a trick in *INSERT LANGUAGE* to improve the code.

  • Most of the articles are language independent.
  • The solutions try to avoid language perks and cleverness.

Your solution is not performant/optimal

  • I write about backend business software. ๐Ÿ–ฅ๏ธ
  • This is the domain Iโ€™ve been working on.
  • I am aware 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 real 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. ๐Ÿ˜ˆ

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.

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.

Your solutions have too many indirections

  • Coupling is our worst enemy. ๐Ÿ™…
  • We need to avoid direct relationships.

You have too many rules and constraints

  • There is just one rule.
  • Always follow the bijection ๐Ÿ”€

--

--

Maximiliano Contieri

Iโ€™m a senior software engineer specialized in declarative designs. S.O.L.I.D. and agile methodologies fan. Maximilianocontieri.com