Tuesday, February 25, 2025

Monday, February 24, 2025

Full-Stack Development vs Split Frontend & Backend Development

I see a lot of uninformed posts online that misunderstand the benefits of Full-Stack Development vs Frontend/Backend Development. Know that only Software Engineers who have the full context of the value being delivered to customers end-to-end will be able to deliver max value to businesses while simplifying the Software Design and Code maximally across the Frontend and Backend! 

Anyone thinking "specialization" is useful in this case is like someone thinking that specialization in pressing the gas pedal vs the break pedal is important when driving a car even though that obviously over-complicates how to drive a car with multiple people unnecessarily as it overthinks the complexity of pressing a gas pedal vs a break pedal! It's true that specialization is useful sometimes, but this is certainly NOT one of those cases. One must take into account the complexity of work to decide on whether specialization is useful or not. Frontend Development in its essence isn't complicated enough to warrant specialization that is different from Backend Development. Remember that Software Engineers build Desktop Applications as having both the Frontend and Backend in the same application. Web Development isn't that different. In the end, users have to interact through a User Interface and pull data from a Database. Some people use Frontend libraries that are too over-engineered/over-complicated like React and Angular though, and then use them as an excuse for misplaced "specialization" while lazily coasting at lower productivity by unnecessarily focusing on Frontend Development alone while their fellow Backend Developers coast at lower productivity by unnecessarily focusing on Backend Development alone.

I have worked at several Software Development companies that employed Full-Stack Development as a unique approach that gave them a unique business competitive advantage as Developers like me and others were able to do the work of clients at much higher productivity and with much better realization of customer requirements because we had a Full-Stack perspective. And, we were as SKILLED at Frontend Development as we were SKILLED at Backend Development; in fact, more skilled than our consulting clients' Frontend Developers and Backend Developers despite them being specialized and us being Full-Stack Developers! 

From different jobs I held throughout the years, I have experience in both the Full-Stack Development approach and the split Frontend Development and Backend Development approach (on both sides of it). In 100% of my experiences with companies that split Frontend Development from Backend Development, Frontend Developers ended up overthinking and over-engineering the Frontend while Backend Developers ended up overthinking and over-engineering the Backend, so we ended up with about double the workload that would have been needed had development been done by Full-Stack Software Engineers for both the Frontend and Backend. That's why we end up with crazy-complicated React.js and TypeScript codebases that contradict and break all Ruby/Rails principles! So, never accept BS excuses for "specialization" between Frontend and Backend! They're all misguided and come from laziness and acceptance of terrible over-engineered/over-complicated technologies like React and TypeScript.

Software Developers who cannot put a stake in the ground regarding Full-Stack Development vs Frontend/Backend Development just to be "nice" to some devs they know while being unnice to their paying customers are exactly the kind of spineless pushovers that allow ridiculously over-engineered and over-bloated codebases to happen! They're the kind of Software Developers that must be fired first and NEVER hired in the first place!

In summary, always do Full-Stack Development to avoid overthinking/over-engineering your codebases and to ensure delivering the best business value to customers end-to-end!

Friday, February 07, 2025

Ruby Programmer Happiness Explained!

'Ruby Programmer Happiness' means 'happiness for having the ability to deliver useful business value to customers as productively and as simply as possible with the ability to maintain the code with very little effort for years to come'.

Some devs misunderstand 'Ruby Programmer Happiness' as a Technology that makes them happy only when in fact, the term assumes Ethical Software Engineers, meaning Programmers who derive their happiness from serving customers (who pay them) in the best way possible.

That is something to think about! 

Remember that all Software Engineers are paid to make Customers happy, so if they were to use a Technology that made the Programmers happy only, then they would fail at their job. 

Besides, I am sure there are many things that would provide much more happiness to Programmers than Ruby in general like playing video games, playing board games, playing sports, attending sports events, watching movies, bing-watching TV series, connecting with loved ones, etc...

But, Ruby is literally much more productive than other programming languages like JavaScript, Python, and Java at delivering business value to customers (assuming there are no special performance-optimization requirements), so using technologies other than Ruby causes frustration and unhappiness in Ethical Software Engineers. On the other hand, unethical programmers stubbornly stick to ineffective programming languages while writing 2x or 4x the code needed in Ruby in a more cryptic "clever" manner just because the other programming languages "make them happy" for personal reasons (like "feeling clever" or "belonging to a cool community") without any regard for how happy their customers who pay them are as a result of their work as compared to how they would be when using better technologies like Ruby. 

This disproves that happiness of the programmer using Ruby is what makes Ruby so great and proves that it is programmer happiness as a result of customer happiness in Ethical Software Engineers that is the real reason for 'Ruby Programmer Happiness'.

In conclusion, we do not use Ruby just to make programmers happy. We use Ruby to make customers happy, and being Ethical Software Engineers, we become happiest as we deliver the best work possible to customers (who pay us) with Ruby.

Imposter Syndrome vs True Imposters

I see too many posts on imposter syndrome and not enough posts on the other side of the spectrum, true imposters. You can’t trust an argument if it doesn’t cover both sides as otherwise it might be a covert scheme to get more unqualified imposters into the field of software engineering to steal the work and pay of truly qualified software engineers. Imposters often write shit code that hurts companies the most after the imposters have quit them to greener pastures, which is a common theme with them. They’re often unloyal and unreliable as they don’t stay in one place for long. Beware of imposters! They’re people who don’t have a 4-year degree in any field that relates to computers, engineering, or science, and who often don’t think for themselves, yet just mindlessly repeat what blog posters and open source project owners who work at large rich companies say on the Internet without questioning them with any proper pros/cons/tradeoffs analyses for their specific customer situations. 

To cover both sides of the argument as any proper argument should, imposter syndrome is different from being a true imposter because it happens in software engineers who are 100% qualified by having a 4-year university degree that related to computing, but are new to the software development market as professional workers, or are new to a position they have recently gained like engineering manager or CTO. Those software engineers are only suffering from lack of confidence in applying themselves to the field of software engineering as they feel out of place due to being new to their position. Once they have improved their practical skills enough (like by reading practical work software engineering books and building toy or open source projects), have accomplished enough successes at their job, and have humbly accepted coaching by more senior software engineers, they get over imposter syndrome and start feeling like they belong 100% to the field of software engineering. 

Saturday, January 25, 2025

Be a Good Steward of Open-Source Software!

I had to ban a troll from my GitHub projects who never behaved like a good member of the open-source software community as he always just talked and talked without ever taking any useful actions, like reading documentation, following instructions, creating examples, writing documentation, contributing pull requests, or sharing code examples in issue reports, forgetting that open source projects are 100% free community contribution efforts and aren't paid closed-source software that entitles the user to anything.

Reminder of how good members of the open-source software community behave:

  • They make an effort to read an open-source project's docs and try it out on their computer to answer their own questions before asking questions about an open source project.
  • They build and share real examples of using an open-source project when reporting issues instead of just writing down very abstract words that might not relate to reality and might miss the fact that the project does provide solutions for the reported issues.
  • They give back by writing documentation they feel is missing from an open source project and use that as an opportunity to become open source contributors to the open-source project.
  • They give back by contributing simple issue fixes as pull requests to an open-source project, using that as an opportunity to become open source contributors to the open-source project.
  • They interact with open-source project maintainers with an attitude of humility and respect of their effort and time.

Bad members of the open-source software community behave this way:

  • They act entitled like they are more important than the creators of open-source projects (as opposed to equal to them) and think they are owed the privilege of paid service on 100% free and open source software projects, expecting 100% hand holding on everything, instead of being expected to be responsible strong software engineers who can figure things out for themselves by reading open-source code and minimalistic documentation. Also, they don't realize that they are being evaluated by open-source project creators on whether they are competent Software Engineers and respectable members of the open-source software community instead of being entitled devs that lose merit if they ask questions without putting in any of their own effort or demonstrating understanding of solid Software Engineering and open-source software principles.
  • They do not spend at least 10-30 minutes reading documentation or trying out an open-source project before asking very trivial questions they could have answered for themselves with very little effort.
  • They complain about missing documention instead of realizing this is 100% free open-source software, not paid closed-source software, and using missing documentation as an opportunity to gain the honor of becoming contributors to an open-source project.
  • They report issues without writing any code examples and they ask questions with a very haughty rude entitled attitude as if they are more important than the open-source project creators when in fact, their entitled attitude loses them merit and drops their importance way below that of the maintainers who at least spent time and effort to contribute something to the worldwide open-source software community for free.
  • They do not contribute pull requests for very trivial issues that they could have contributted fixs for themselves to intelligently gain the honor of becoming contributors for an open-source project.
  • They do not contribute time beta-testing or using an open-source project in low-risk situations to help contribute feedback to very novel and innovative open-source ideas to show good faith in wanting to support innovation/excellence and help open-source software.

Good stewards of open-source software are the kind of Software Engineers that is considered the top of the line when hiring at Software Businsses. Be a good member of the open-source software community to help it come up with better ways of serving customers with open-source software while improving your resume and your hirability and job retention!


Friday, January 24, 2025

Glimmer DSL for Web Wins in Fukuoka Prefecture Future IT Initiative 2025 Competition

Glimmer DSL for Web (Ruby Web Frontend Framework) won an award in the Fukuoka Prefecture Future IT Initiative 2025 competition after I presented it to Yukihiro Matsumoto (the creator of Ruby) and other Fukuoka competition judges earlier this week on January 21, 2025! It's official! Matz approves of Glimmer DSL for Web!!!

GitHub Repository for Glimmer DSL for Web (Ruby Web Frontend Framework): 

Slides for Glimmer DSL for Web Fukuoka Prefecture Future IT Initiative 2025 Presentation (10-min):



Thanks to the maintainers of Opal Ruby (Fukuoka Ruby 2023 Award Winner) for making it possible to build something as amazing as Glimmer DSL for Web today! You guys totally rock!!!

Thanks to everyone who attended my first talk about Glimmer DSL for Web at the Montreal.rb Ruby Meetup on March 6, 2024 last year as you guys literally witnessed history in the making! This is similar to discovering Ruby in the early days of Rails in the mid-2000s, but on the Frontend instead of the Backend. A couple of weeks ago, I got approval by my managers at work to start using Glimmer DSL for Web in my work Rails web app and to explore it as a replacement for React.js. So far, the results have been absolutely amazing! Truly, I feel a 200% improvement in productivity, maintainability, simplicity, and code readability in Ruby Frontend code compared to using plain JavaScript or React.js. I look forward to the bright future of Ruby in Frontend Development of Rails web applications, as enabled by Glimmer DSL for Web, now a Fukuoka Award Winning project!