My first book, published 25 years ago

POOI wrote my first book when I was 20 years old. It was the first book in Portuguese about Object-Oriented Programming (OOP). At the time I was a student at the Federal University of Rio de Janeiro, also known as UFRJ (Universidade Federal do Rio de Janeiro).

You may ask: what makes a young student think that he should write a book? Actually it wasn’t my idea, I was convinced to write it by one of my teachers, professor Paulo Bianchi. At that time I was considered a “pioneer” using OOP on my graduation project, and had a good understanding of the application of object-oriented concepts. Then I had this conversation with my teacher:

My teacher: “I would like you to write a class-book about Object-Oriented-Programming.”

I answered: “I can do that, but this would be lots of work, the same as writing a book.”

My teacher: “You are right. Write a book.”

I still didn’t think that I was able to write a book. So we agreed that I would write the first chapter, then my teacher would review it, and if it was good enough I would write the rest of the book. As you can guess, my teacher really liked the first chapter, made several suggestions for improvements, and then I wrote the additional book chapters.

My book was published in 1992 by a publishing house that specialized in technical books: LTC – Livros Técnicos e Científicos. The book title was “Programação Orientada para Objetos com Turbo Pascal 6.0”. It was published in Brazil and sold also in Portugal. The first edition had 1200 copies, and all of them were sold. You can see the picture of the front-cover above. Note that it was authored under my Brazilian name (Ricardo Szmit), and now I use my Hebrew name.

The first edition had code examples in Turbo Pascal. The publishing house asked me to prepare a second edition using examples in C++. But at that time I was already in Israel, doing my M.Sc. studies at the Technion. I decided that my research was more important than working on a new edition of the book. Also, I already had the feeling that I would never go back to Brazil to enjoy my local reputation as a book author…

Of course I did not make much money from this book, but it was a great experience. I learned to think big, and to never underestimate my own capacity. I hope this serves as an inspiration for young readers of my blog.

Posted in OOP, Programming | Tagged , | 1 Comment

Good Code is Adaptable Code

Some people find the diagram below very funny: it basically says that there is no way to write good code. Of course I do not agree with this. The diagram implies that writing well is a slow process, and that the requirements will have changed before we finish writing our code. I claim that we should write Adaptable Code, so that when the requirements change we will not have to “throw it all out and start over”, as appears in the box in the bottom. In this sense, Good Code is synonymous with Adaptable Code. Now the question is: how do we write Adaptable Code? My answer is: Adaptable Design Up Front, an Agile approach to Software Design.

good code cartoon

Posted in Adaptable Design, Agile, Programming | Tagged , , | 1 Comment

On Happiness and Realistic Expectations

expectation vs realityIn general I’m known by my friends as a smiling person. Once a colleague asked me: “Why are you always smiling?” Then I smiled and answered him: “Because I have low expectations!”

Just think about it. What is frustration? What is dissatisfaction? What makes people complain so much about the difficulties they have? What is the reason so many people complain about their lives in general?

I believe in an extremely simple explanation: Frustration is the result of the difference between our reality and our expectations.

We can even express this as a Math formula:

Frustration = Expectations – Reality

The bigger the difference between our expectations and our reality, the more frustrated we will be. There are two ways to reduce this difference:

  1. Reduce our expectations
  2. Improve our reality

In general people tend to try to improve their reality instead of reducing their expectations. This is particularly true in our consumption-driven society in which success is measured by the accumulation of material goods.

There is nothing wrong about people trying to improve their reality. The progress and economic development of a nation are the result of the joint efforts of a population in which each individual is trying to improve his own life.

However there is a problem when many people have expectations which are not realistic. By definition only a few people will become rich. Only a few people will become famous. Only a few people will be able to achieve all their goals.

Being realistic does not mean not trying to be rich or not trying to be famous. Being realistic means being aware of your chances. It means being conscient about the difficulty involved in reaching your goals.

I think that this lack of realism is what makes most people fail. Because they underestimate their challenges, they do not work hard enough. Because they think it will be easy to reach their goals, they do not prepare well enough.

Thus reducing our expectations does not necessarily mean changing our goals. It means being realistic about how difficult it will be to reach our goals.

Keep your goals. Be realistic. Smile.

Posted in Efficacy | Tagged | 1 Comment

The Iceberg Illusion: Hidden Success Factors

Do you believe in luck? Are successful people luckier than the average person? Did they have more opportunities? Did they have access to things most people don’t?

I don’t believe so. I think that what makes people successful is their attitude. If you work hard you can win despite the obstacles. Most successful people faced the same challenges that the average person does. Their “secret” is illustrated in the picture below:

iceberg

Posted in Efficacy | Tagged | Leave a comment

On Italian Food and the Evolution of Software Architecture

I really like this picture. Besides being funny, I think it is also a nice metaphor. There is no such a thing the “right software architecture”, in the same way that there is no such a thing the “right Italian food”. You may choose the food according to the occasion, and choose the architecture according to the requirements. In particular, architecture choice depends on non-functional requirements. Bon appétit!

Software Architecture

Posted in Design Patterns, Software Architecture, Software Evolution | Tagged , , | 1 Comment

KashKlik at Pitch Tonight

Yesterday I had the pleasure to present KashKlik at the Pitch Tonight event at the Google Campus at Tel-Aviv. I explained the vision of KashKlik’s marketplace and how it solves two problems:

1) KashKlik enables advertisers to use Influencer Marketing, providing automation, scalability and measurable results.

2) KashKlik enables influencers to monetize their audience through the promotion of pay-per-click campaigns.

Below is the video of my pitch, followed by questions from the panel (in Hebrew):

About Pitch Tonight:

Pitch tonight was founded in 2011, with the goal of bringing business opportunities and tools to young entrepreneurs in the pre-seed and seed stage. The program focuses on high profile events, connecting investors, industry experts and entrepreneurs through valuable, relevant content.

The Israeli branch was founded in 2015 by Gil Shourka, Yisrael Gross, Nogah Senecky, Ariel Zaretski, Omri Ben Simon and Jonathan Gilat.

Previous Pitch Tonight events have been featured on Yahoo Finance, MarketWatch, The Boston Globe, Chicago Business News, Atlanta Business Chronicle, Dallas Business Journal, TheMarker, Epoch Times, Telecom News, The Israeli Channel 2 and more.

Panel members included:

Roy Povarchik, Advisor for startups on social media, content marketing, growth hacking and community building. Roy is Co-Founder of Stardom.io, and Co-Founder of Humans of Startup Nation.

Kfir Pravda, CEO of Pravda Media Group, a B2B demand generation and MarTech company. He loves good stories, good design and good whisky.

Mor Sidi, Director of Growth at Playbuzz. Mor has extensive experience in leading top-tier R&D, product and marketing teams, and holds a Master’s Degree in Computer Science from NYU.

Dan-ya Shwartz, Data Scientist at Alooma. Dan-ya is a Growth Hacker, data freak and music geek, experienced in conversion optimization and product management.

Posted in KashKlik, Startups | Tagged , | Leave a comment

Adaptable Designs for Agile Software Development

The Agile Café Meetup in Israel organized a special event about “The Architect Role in the Agile Era”. I was glad to be invited to give a talk about Adaptable Software Design.

Title: Adaptable Designs for Agile Software Development

Abstract: This talk introduces the concept of Adaptable Software Design, and explains why adaptability is essential for the development of complex software systems using Agile methods. The concepts are illustrated through practical software architecture approaches such as micro-services.

Bio: Hayim Makabee was born in Rio de Janeiro. He immigrated to Israel in 1992 and completed his M.Sc. studies on Computer Sciences at the Technion. Since then he worked for several hi-tech companies, including several start-ups. Currently he is the CEO at KashKlik, an innovative influencer Marketing platform. Hayim is the author of a book about Object-Oriented Programming and has published papers in the fields of Software Engineering, Distributed Systems and Genetic Algorithms.

These are the original slides of Hayim’s presentation:

Here is the video of the talk (in Hebrew):

Please see here my previous posts on Adaptable Software Design.

Feel free to share your comments below.

Posted in Adaptable Design, Agile, Lean Development, Software Architecture, Software Evolution | Tagged , , , , | Leave a comment