Posts

Quality and Performance

Image
If you ask any engineer or manager, they will tell you they want quality. No one would say they do not wish to have higher quality. The reality as human beings is that we always want the best. Now, what does quality means? How do we determine if something is of quality or not? How can we learn how to see problems and how can we make things better? Hopefully I will be able to address all these questions in this blog post. In the 1980s there was big quality movement driven by Lean and other methods. Today quality is often misunderstood and took into the the wrong lenses. If you don't understand what quality is, and how good looks like vs how bad looks like, you don't know what's going on, and you certainly cannot make it better. Perspective and vision are everything. This post is not about QA. Having QA also does not guarantee quality. Like security quality is everybody's job. 

AI Agent Patterns

Image
Previously, I was blogging about AI Abstractions and the various levels of abstraction. Now, I want to delve deeper into some patterns we can leverage while writing software using LLMs/APIs and building AI Agents. Many people still question the value of Gen AI, and I understand that, scams, delusional objectives and expectations, FUD, and many other incidents . However, for engineering, it's clear that there is value, and engineering as we know it may never be the same again. Agents are interesting because we can tweak how much autonomy we give to them; they could be bound to a straightforward and repetitive task like bumping the minor version of log4j, or could be used for complex tasks like booking a complete week of vacation with car, hotel, plane tickets, experiences, and plans. So imagine there is a dial that we can tune up or down, and how much autonomy we want to give to agents. Besides open-source models like DeepSeek or Llama , the cost remains complicated. However, clou...

AI Abstractions

Image
Today, we see the reality of "AI" being sprinkled everywhere. That's a magic icon, now has dozens of variations . I recall a time, not far away, when the "stories" were popping up everywhere. Hopefully, this moment will pass and move on to more interesting features that utilize proper AI abstractions. AI is increasingly blending with engineering, and that's likely how we will make it useful instead of a fad. We have seen things move very fast over the last two years. Specifically, we don't know if we will continue to evolve at the same pace, but we don't need perfect technology to create value and disruption. AI might look like and feel like magic when it works, but it is not magic . Artificial intelligence (AI) is disrupting and transforming the way we learn. We might not realize it, but learning has already changed and is yet to change much more.

Understanding is the Key

Image
Have you ever tought about the difference between a Senior and a Junior? IMHO, the best definition is that the Senior can figure out things by himself, deliver his work on time, and even teach others. A junior requires much more help and takes much longer to deliver. It's very common for companies at scale to not hire juniors. Usually, managers expect only to receive senior engineers. That works well until you start hiring juniors, because now, the things that were working just stop working. Have you ever thought about the key thing that would make the junior more productive and start getting more senior? IMHO, it's understanding. In the technology field, we think we can hack things, but in reality, we can only do a decent job when we understand what we are doing. It's impossible to make sense of software if we do not understand what's going on. What about AI and LLMs? They might allow juniors to finish narrow and straightforward tasks, but they will likely not be learn...

No Delay: Leaders Delay Cost a lot

Image
Let me remove the obvious issues before I make my point. Ignoring problems is bad; ignoring problems at scale is even worse. If we have a network effect of ignoring things at scale, that's the worst thing we can do. Ignoring problems leads to Ignoring culture . Being aggressive with problems is not being reckless; it's not about moving so fast that we break things by doing it so. When applying for software, we ask some apparent questions but sometimes forget to apply for people. In software, we don't want to discover all the bugs in production; we want to shift left and find as many problems as possible before going to production. We must apply the shift left to people and address the issues immediately. The sooner we find problems, the sooner we fix them, and the sooner things improve. 

The Roads Approach

Image
It's normal for engineers to think of the best solution possible when we think of solutions. A bad engineer would deliver as fast as possible without even considering whether his work is good enough or right. A "good" engineer would think a lot about how to do it and be very slow. A great engineer does both things. So, how can you be fast and slow at the same time? When we are working on a pretty small problem, or in a green field(a new project where you can do whatever you want), and/or a small company or startup with very little software. We all want to have success, and we want companies to thrive; success means more software, and more software often means more technical debt, and it becomes impossible to change everything all the time.

The Dark Side of LLMs: part 2

Image
July 2024: I wrote the first blog post about The Dark Side of LLMs . During these 7 months, many things have changed; the usage of AI and LLMs in engineering has kept growing. LLMs and AI are cool. However, they are not a free lunch and have consequences. If you have not read the first blog post of this series, go there and read it because it will be relevant to this one. One significant open-source development in LLM was  DeepSeek .DeepSeek is interesting for two factors: one that is considerably cheaper and second that is open source. Deepseek introduced a series of optimizations like parallelism, chain of thought (COT), which step by step so we can fix the model where is wrong and usage of Reinforcement Learning (RL) along side with Destilation. RL is how robots roll and self-driving cars also move in a city.  Deepseek's being open source is great for the community; however, we also see interesting moves from big tech companies like  Meta ,  Microsoft ,  Goog...