Hi. I see articles like Top 5; Top 10; why we should use/not use a specific technology; how I got rich by making an app; etc. However, I don’t see many developers post about their development experience/decision-making while they are developing the product. That’s what I want to talk about.
I have read the book Soft Skills: The software developer’s life manual by John Sonmez which gave the idea to start blogging about something. So I decided to create a blogging software about which creation I could blog. I will write about how https://www.programmersdiary.com was built from start to deployment, covering most of the features. The software is open source and is available on Github: https://github.com/TheProgrammersDiary. Contribution is welcome. The license is AGPLv3 since I believe the more open-source projects we have, the more knowledge sharing occurs and therefore the more progress the world receives.
I have logged almost every feature in my development journey so the reader can understand why some lame decisions were made, how good decisions were formed, and how much refactoring was done. I did not share these logs right away: probably because I was unsure if the content would be interesting.
And now instead of posting the whole diary at once, I would wait for some time before posting each entry. That way I believe those who are interested in this journey could read an entry in several minutes instead of reading a whole book which has a higher likelihood of being skipped after a few pages. Maybe by doing this I will receive contributors to the project’s repos since readers will be able to understand features by encountering a short article about how these features were built.
Here is the first entry:
— — — — — — — — — — — — —
2023–08–06
In Soft Skills book the author John Sonmez suggests an idea to blog regularly. The point is to learn something and teach others. That fits me, since my mom is a teacher and it seems I inherited some interest in teaching. So I want to implement this amazing idea. However, first I need a blog page. In soft skills, there were several options suggested, one of them was to buy a page. But let’s face it: I will need something to write once I have a blog. I think I’m creative but inexperienced. To write a blog, I will need experience I can share. I need some blog post backlog so my blogging will not stop. And I know nothing better to start gaining sharable practical experience I could share than programming a webpage. Hosting would be easier, but developing a blogging page from scratch would give me sources to blog about.
Since I will be developing my own webpage I can experiment with technologies. Microservices today are a trendy thing. I work in a team which makes them. However, I did not join the team at the start — when I joined microservices were already there. I would want to make microservices from scratch, but I have read books about them and the books suggested not building microservices from scratch, since it’s complex. Also, the books advised researching log aggregation in-depth before building microservices. Books suggested first building software as a monolith and then breaking it apart in small steps, or start adding new simple functionality as a separate microservice.
One thing that is holding me back from starting this journey is my lack of experience in technology. I need to learn React. I figured that’s just an excuse. In the team I work there is a junior. I suggested he start reviewing code — we do peer reviews in our codebase. He was reluctant because he had not finished reading a Java book which would enhance his technical skills. But you can’t be prepared for peer reviews by reading books, preparation comes with practice. Seeing junior’s reluctance to peer review due to a self-created excuse, I noticed the excuse in myself — not knowing React well enough is an excuse. I can start creating the blogging website, and if I decide I need React, I can learn it while developing the website. My nearest goal is to develop a blogging website, not learn React. Learning React can come as a bonus mid-journey. React is just a tool to achieve my goal, not the goal itself.
So let’s do it this way: I will be creating my blogging website. I will start from monolith, and try to implement microservices. This will give me material to teach others.
— — — — — — — — — —
When I wrote a diary while programming I wrote the text quickly so there are some hard-to-read sentences. To help readers understand the text this version is a little bit modified. To find the original one, you can visit https://www.programmersdiary.com/post/0de558ed-8ca7-4877-8190-ef303d789229, click the date dropdown and select the oldest date.
After each entry I will post key learnings. Here is the first one:
You don’t need to know a programming language extensively to create a product with that language. Your goal is the product, not the specific programming language/framework. Having product goal as a driver will automatically help you learn that language along the way. So don’t make excuses preventing you building a product. BUILD the product.
Look, I had excuses but threw them away and now I have a product: programmersdiary. Don’t doubt, DO.
The next entry will be posted after some time.
If you would like to use or contribute to this open source project, go to https://github.com/TheProgrammersDiary/Docker and follow the setup instructions.
Thank you for listening.