Categories
Software

Give me something Quick and Dirty

Give me something Quick and Dirty !?

That’s one of the most common statement that gets good engineers agitated .

It used to disturb me the most when I was a young Architect .But with experience now am able to understand the situation from where this statement originates .Once you see this it will also help you feel calm at workplace by not feeling Us vs They conflict or feeling that your craftsmanship has been questioned .

Here is where it originates

Clarity and certainty are the two most important things that Managers/Directors get asked about . The world will look like heaven if software engineers could given their managers certainty that the job will be done with quality and on what-time . And guess what , this almost doesn’t happen .

So the second thing that manager will seek is clarity . Are you past the roadblock ? what could he do to help you ? and so on. And finally it again comes down to : the next certain date of delivery.

The world of the software engineers

This is in stark contrast with the world the software engineer. To begin with there is lot of ambiguity in the requirements .It has always been there ! There is also lot of interdependency with everyone else’s work . And on top of that there are all the patterns , designs ideals and cross cutting concerns one need to take care of . This is one of the main reason we all could write solution to our LeetCode algorithm problems in a near predictable timeframe but we cant be sure of when our teams can finish the project .

The issue oftentimes is that we as software engineers are poor at communicating all these dependencies that we feel and know .Hell we even expect “them” to know it beforehand !

In great teams there are individuals or mechanisms that help developers verbalize and communicate it .But it is not so common .

What Quick and Dirty actually implies

This where the Quick and Dirty comes in ! The manager ,pushed to the walls of deadline is asking you.

1. Can you please do the most direct code to the requirements , the design ideals can be applied later .

2. Make working assumptions on the missing pieces .

3. Eliminate the dependencies on others to the maximum extent possible .

4. Look for something already available or even an alternative approach.

5. Brute force is allowed instead of elegance (for now).

6. Do not produce buggy or insecure code .

So the call for Quick and Dirty is really a call for software engineer to move from craftsman’s role to the role of savior ,communicator and negotiator (bargainer if there is a word like that ).

What has been your experience with the call to Quick and Dirty ?Did you avert the crisis ? Did you bargain of extra time to make everything proper later ?

ps: What happened to the work of Tech Managers you may ask ?that in next blog

Categories
Software

Dotpe and Software Engineering Discipline

#dotpe and Software Engineering Discipline

The issue with dotpe API

Since last few hours, dotpe ,an Indian startup catering to restaurant is in news for the funny hacks one could do in their API .I am sharing the archived sub stack article below for the details . It a fun read where a techie found out most ordered items at different branches of Social bar .He then goes on to hack the api by ordering an item on behalf of a table next to him . Read to know what items folks in India prefer with their drinks . Damn i did not know Social is so big (are they open to Private Equity :)).

image copyright Pea Bee

Why would a startup miss the basics

But the intention of the post is not the ridicule dotpe .It is clear that they missed enforcing basic authorization for their APIS .It is very unlikely that their engineers didn’t know about elementary practices on auth. The most likely it is case of features overpowering the discipline .Someone totally missed modelling the system boundary since “all the API was doing is to order food from menu” only to later realize that once you keep the gate open anything can walk in.Thats a generic take.

More specifically probably dotpe wanted customers to order food by scanning a QR code without any friction of singup. This resulted in a clientless API sans any id or possibility of auth. You can this of this as using postman . Its is very likely that someone did point it out internally but lost the argument in favour of frictionless experience given by a powerful designation.

This is also points at larger problem i.e lack of regard to the discipline of Software Engineering Indian startup industry .

The maturity deficit

As industry we don’t have a good supply people across experience levels who have built software from ground up and run it earn their salary .It is one thing to hire bright engineering’s with brilliant leetcode and MBA credentials .But brilliance is not a substitute for wisdom and having nerves .It is in such cases it is very likely that he QoS/concerns like auth-performance-maintainability-resilience or more such ability is missed .Or even if they are taken care by the developers they loose the argument in favor of “release it now” argument. This is the spectrum from skills to wisdom to nerves . And that is the craft of Software Engineering ( as opposed to just code and build).

Dotpe’s redemption

back to dotpe ,they should scrutinize their people dynamics as opposed to punish the engineer in charge .Better still they should turn this into a marketing opportunity by release monthly dotpe food trends .

Here is the whole story https://web.archive.org/web/20240923081639/https://peabee.substack.com/p/whats-inside-the-qr-code-menu-at

Categories
Software

Value Transitions at Work

Value Transitions .

Every time you read about grooming teams or individuals you would hear that they need to have role clarity . A clear definition of what their new role is ,what is expected of them by A/B/C/D/E/F and G. Its a separate fact that at many places even this doesn’t happen .But people eventually figure it out ,to the best of their ability .

What they invariably fail to also realized that with each role the values they believe in also need to change. Say you are an expert developer ,who takes pride in producing “prefect” code .Now that you have grown up or the team has ; you get promoted to a Lead . How do you now extract “perfect” code from multiple people ? Sure there are reviews and test cases ,but how do you get code as perfect as you would have done ?

This is really the moment where your values are challenged. Left unchecked it can easily morph into micromanagement , playing favorites (to the geek developer just like you) or even pent of resentment (about them).

What has to really happen is that this tech lead has to know that his value has to change from being perfect to being watchful , from being particular to being mindful ,from being meticulous to being organized .

Because as the role transitions from individual to lead they levers you used to pull have changed so has the values that make you select these levers .

Just to be comprehensive you values would get challenged with every change i.e. role/team/project/economy/Time .

Just to be void confusion : habits are different hurdles to cross than values .Its easy to vocalized about habit but things that are part of your individual success process(ISP) are difficult to identify for the individual ,leave alone transitioning them .Values are the foundation of your ISP .

Categories
Software

Peter Principle still holds true

Peter principle is classic book on promotions . It says that every person rises to his level of incompetency .That is people in a hierarchical organizations keep getting promoted till they reach a level for which they are no fit/ready/skilled .

The principle and book by the same name is from the 70s .And it still holds true…

And before you think of one particular person in your hierarchy where this principle has manifested , the right question to ask is how can we ourselves escape this.

The fundamental problem problem is modern workplace is that promotion i.e rising up in the hierarchy is the only mainstream way to grow . However with each role change the skill demands change .There are organizations and individuals who are aware of this and take effort to skill people up.

At the same time there are a lot who miss the target . For a change , just ask yourself and your friends if you were told and trained about the shift needed in your role ,the last time you were promoted to Tech Lead ,Manager, Architect or whatever junior role you were promoted to 🙂 .

Another approach some companies take is that of internal startup that shakes up the culture of static-stable-hierarchical way of working towards competitive-renewal-delivery based reorganization .

There are few more variations of these things where companies essentially try to avoid power ladder , salary ladder and value ladder . All of which feed into peter principal .However avoiding these ladder is tough ask so Peter principle keeps manifesting at workplace .

Read the book ,its good .

https://en.wikipedia.org/wiki/Peter_principle
Categories
Software Uncategorized

Can you bargain for your craft , Techies ?

Can you bargain for your craft ?

The world of techies is full of ideals . They have “design patterns” that are “proven” . Architectural “styles” that “fit” the domain. “Best Practices” that absolutely everyone needs to follow. And of course all the code and designs need to be “proper” , “standard” , “clean” .

If you see all of these terms you realize they are qualitative. Not everyone in them understands them the same . In fact the world of techies come crashing down when “they” come to meeting .They just don’t get it .

This they is an interesting tribe. They only speak in terms of dates , completions , estimations ,schedule , priority , severity , escalations , showstoppers ,budget . Everything They have is urgent and there is no time for “idealism” here .Things have to happen ASAP so all we need is “just this/that”.

If you see all these terms you realize they are quantitative .It might be made up ,in some cases ,but they are numerically relatable .Human understandable , as we say .It no wonder that when the time comes for our Techies to bargain with They ,most often it results in some sort of frustration for techies .

Whenever I train my folks for Architect roles my first question to them is “Can you bargain for your craft ?” .It makes them uneasy. Most of them believe that there are some other roles that exist for this .Some believe that there are processes for this .Some say it is part of good tech culture that such questions shouldn’t be asked to techies . Fact is all of these are right point .But fact is also that human discussions don’t happen in a linear , boxed manner .

So our techies cant escape bargaining for their craft. That’s a minimum; techies need .

How do you negotiate for a proper design with your Product/Manager/Support/Test/They is how emotionally contentful your work and work experience will be .

Categories
Software Uncategorized

Dixit’s dilemma of Generative AI

How do you verify output of thing more intelligent that you ?
That’s Dixit’s dilemma of Generative AI. Its not famous yet 🙂 .

But as we employ Generative AI more this dilemma will become famous . Take the case of code generated by GenAI , you need the developer using it , to be more skilled than the complexity of the code being generated to find out correctness of the output .
A corollary of Dixit’s dilemma is that our Qualitative gains from GenAI are capped by the Quality of the verifier !

Did someone talk of GenAI making your job redundant ? It can in the quantitative domain but not in qualitative domain (it the mundane can be but the classy can’t be ).

EDIT : Some more clarifications

The holy grail of code generation .

The holy grail that we all are chasing from tools like copilot is that they can generate the whole code from requirement documents .This is not a stated need but that is what people are hoping for . read on .

If you see the popular demos on code generation by GenAI tools there are few scenarios that occur often :

1. Given a table or json generate complete webservice

2. Find the performance or security bugs in code

3. Find structural issues with code as per the language specification

4. Flag issues with dependencies from deep within codebase

5. Document my code

6. Write test cases , elementary ones .

Now if you see the capabilities of IDEs , code generators ,profilers ,linters such things existed since decades for most of the programming languages .But they were in siloed in nature .So we can give credits to LLMs tools for bringing it all together .This can benefit existing codebase a lot .

The situation becomes interesting for new code base . The demos where one can make the tool write a script for managing a server or sorting algorithm are in essence demonstration of smart lookup (for relevant code fragment ).This can benefit seasoned developers by saving few keystrokes .What next ?

What do we all expect next is , can the tool take long format requirements and generate functional code .That is to say can it read my Jira requirements and understand my user persona , interfaces , domain jargon ,different flows so on and so forth . It is certainly passible to give lots of prompt context to AI tools and create such a demo .

Can we do it at scale for an organization ?

Can we do it in a manner where prompting the requirement context doesn’t becomes as complex a job as that of programmer ? AND

How can we validate that what ever is generated is functionally correct without needing a new battalion of validators ?

These are the practical question for which we don’t have answers .

This is not to say its not passible , domain languages for automatic code generation has been in place for long . Coupled with GenAI they can do wonders .Its just the current breed of GenAI are not made for this sole purpose .The day that happens , all the GenAI demos will happen to CTOs instead of CEOs 🙂 .Read that again 🙂

Categories
Software

Pair Programming with a Large Language Models

Pair Programming with a Large Language Model .

Guess this wording settles the debate against the developers . The narrative has been set for use of LLM for productivity boosts with this phrasing !But are developers burdened with expectations or is there some hope of real usefulness to developers with the help of AI?lets check .

Using llm for coding task is expected to give huge productivity boost . Mckinsey already released a report on measuring developer productivity .Organizations like ChatGPT/OpenAI/Microsoft and the likes of meta/CodeLLma are coming up with code LLMs and numbers on productivity boost .There are new coding LLMs or LLMs with such capability coming up every week ,so this list is non exhaustive .

Paid to code or paid to recollect ?

However the question remains , can LLMs in its current form boost developer productivity across the board . The answer is no .Its only the developers who have a clear picture in mind of what they want ,can save some time with typing work with tools like copilot .

However the cognitive work for the developer now shifts towards reviewing the code generated by AI .Which is heavier mental work then writing code via learned skills .

This also raises a question of memory recall of such AI generated code at scale ! .Developers after all are not paid just to “code it” . They are valued for knowing their code , maintaining it and debugging it . Will the developers have a clear mental model of such AI generated code ? and what is the limit of such active recollections ? For now we we don’t know answers to these questions .We can take some guess from our experience with social media .This experience tells as we honestly don’t have first class recall of the virtual updates from our network when compared to actual moments spent in physical world. Even if someone argues that social media is not approached with the serious ness coding is ; the limits of our fatigued brains are known now. So I would conclude that the so called boost to developer productivity is overhyped .

The Future of coding with AI

There is however a good case of vendor curated assistants .Imagine an coding assistant from spring/java or vuejs or likes. These can help us with smarter code highlight ,offer deeper code review and provide standardized lookup code samples for developers to use. They can also have a real connection to the language runtime and offer are better suggestions on optimizations and debugging .

This is probably the less shiny ,less geeky middle path to developer productivity with the help of AI. Exactly in the spirit of Pair Programming with a Large Language Model .

(image via genecraft )

Categories
Software

ChatGPT LLMs , AI for consumers and Future

Talking tomcat (copyright Fandomwiki)

Remember “talking tomcat” ? This was one of the unsung hero’s that made android OS popular .A cartoonish cat that can echo what you spoke in cat voice .This was a fine demonstration that with prevailing hardware android could replay voice with modification . Of course the lay uses would not word it this way but they got the point anyhow .This is exactly how technology goes mainstream . What followed tomcat is set of apps that could then add dog face to your picture then to your video and so on .By then the novelty had faded , the capability was taken for granted .People expected mobiles to this much at least and then moved on .

Users perceive ChatGPT as bright teenager

ChatGPT in its current form is talking tomcat of AI .This is first time common lay person is getting a demo on how much more can be done with AI . For all he knows ,its nice chatbot that can do brainy stuff . How brainy you ask ?

This is important question to ask .If we were to equate the “general” feel that ChatGPT gives to most common interactions people have then what would it feel like ? Remember spelling bee contest that are held in USA ? For most of the lay users chatgpt feels like a smart teenager that is G.K bee (in that sense). This is how consumer mass market sees innovation . Simplified and equated to mundane things in his/her life .

Two directions LLM needs to evolve

LLMs for consumer use cases

The above discourse make it clear that large language models(LLM) need to evolve and also be understood in 2 distinct set of parameters . One is the consumer angle . Taking a leaf from how android was seen or how voice assistants were seen ,LLMs for lay consumer simply means that computers can now answer diverse and more complex answers(#1).This also implies that how much ever the the press focuses on ChatGPT , the future of LLM is in the usage driven consumer space . These are specialized models that do one or few things in one are with unambiguous and immediate utility . Imagine an app that can take your picture or live videos and suggest fashion makeovers to you (ideal copyrighted hereby 🙂 ). Or take for example BoomberGPT that aims to cater to offer targeted consumer utility for end users . Similar such gpt models can be built around legal advisory ,medical first line help ,cultural adjustment needed during travel .A general LLM that can filter money laundering names can makes life easy for regulators .

OpenAI is aiming to be THE general purpose engine for all such use case via its plugin architecture .Can it succeed in giving curated user experience is matter of debate with ChatGPT 4 .With future versions of ChatGPT things might change .But it can also be case of diminishing returns where the model size and compute cost cant justify future refinement . As far as end users of AI are concerned they are interested in the utility than specifics of the software internals .

LLMs for AI community

Information ownership and privacy leakage are tow important issues any LLM has to handle .We have learned many lessons from years of legal cases and government request of page take downs to search engines . Once the hype subsides the LLMs fed on public information will soon get into all of this mess .

And don’t even think what will happen if ChatGPT gives an answer that is blasphemous in some culture . This is my main reasoning as to why GPTs in chat mode wont harm Google’s search business .There is need for sanitizing ,curating and localizing the outcomes and none knows it better than google .Just that they need to offer same LLM toppings on their pizza too .

But as community we need to keep pushing the boundary on parameters .Efforts will also be made to plugin knowledge representation (universal or specific ) with LLMs for more deterministic answers .Size/cost optimization and Realtime model updates at this scale and geodistributed LLMs are few directions in which efforts can go

Premature Universal Knowledge claims by LLMs PRs

Its not the AI scientist but the PR machines that are claiming that we are very close to general intelligence .So far computing is concerned LLMs have given a feel that they are generally intelligent .We must remember that Googles LamDA was the first LLM that was said to be sentient (funny how google lost the PR battle ). So on the basis of “feels like human” the LLMs have started giving a feel that it is human level or intelligent or both . Moreover given a focused effort a “self” neural module can be built into LLMs .Say an LLM that can sense that its cloud billing is crossing the daily threshold and its starts feeling tired now .

This is funny example but its tells you the inherent problem with sentience of machines .Without change and limitations that living being experience , machines can achieve plant level equality to being alive .For animal level behavior they need to have ability to grasp animal concepts staring from reptilian to mammal and then human Brain .And also the concept of emotions that affect their whole existence (as opposed to giving a feel of an emotion).

So far the end user experience is concerned LLMs in current form do “feels like human !”

The second challenge is do LLMs have universal knowledge .Any one working on web search or elementary ML knows the answer is NO. Current LLMs are limited by the thin slice of information it was fed .So in reality this is more of a media claim than anything an AI scientist believes .

Societal Impact of post LLM era of AI

How has TV or mobile or internet affected humans/Students/Kids ?

The cognitive-behavioral impact that above waves of revolutions had on humans will be further multiplied by the capability expansion brought by AI (Apart from LLMs , image search was one such capability expansion but it was under hyped). So this issue and the debate and the remedies that follow are known to us .

However the issues of cultural, individual and situation sensitivity is something that the centralized models are not geared up to handled . Nor are the efforts behind them are aiming to .So good number of “situations” where “feels like human” AI did not really “work like human” will come up in coming decade .

New AI frontier

LLMs have not expanded the frontier of AI as field .However they are first class coming of age story for the community .As next level evolution AI can now evolve into two directions .

Personal Models

Current efforts in AI designs come from corporate style centralized AI desings .If there is any effort where a personal model can exist it will be more revolutionary than LLMs . A sort of “AI thing ” that stays with individual and monitors and learns and advices him/her .Imagine your fitness tracker which can suck data from your online activity and also listen to your speech and brain MRI .The corporate business case for this is lacking but the challenges pursuit of such “AI thing” can have on the AI community is huge .

Architecture for Sentient AI in 2026?

Leaving aside the debate of whether we really need it ,once the LLMs are seen as normal a concerted effort of AI labs can work on developing new neural architecture ,that learns from evolution on sentience in living organisms .Whether we will succeed or not ,AI community deserves to pursue its own “voodoo doll” moment like all branches of science .In fact if present AI labs gets enough money they might work on it sooner than 2026 .It is one of those effort worth failing .

Categories
Software

is Gen Z changing the interview dynamics ?

Classical Nature of Job interviews

Job interviews were always 2 way street . At least on paper it was always the case . For most of the time as millennial the candidates were more kind and silent in this process towards the other side .The most common diligence my friend circle used to do while appearing for IT jobs was pay scale .However the Gen Z are turning the tables . I have seen them matching the Hiring manager and HR questions with equal scrutiny .

Gen Z has different attitude towards Jobs

A typical “why did you change company so often ” is matched by “what is your turnover rate” . A “Tell me about your skill sets” is matched by “what are my leaning opportunity”. A “The salary you are asking is high” is cleverly countered by “what is your growth rate/hike rate etc” .A probe on hard work , flexibility , learnability is match by “what is support system/work arrangement ” . Ofcource these are my wording and slice of my socio-work sphere .

In many cases where start up and stock options were applicable these generation shows equal grasp of these dynamics .In many case my senior friends form these circle told me that “inspiration” ,”growth”,” making dent in universe ” are not having the impact it used to be during there conversation .This attitude is seen candidates from not so elite colleges also !.

Gen Z mindset shift

But a good amount of Gen Z have started looking at workplace as lifestyle choice (now/India) as opposed to earning “opportunity” earlier . In 90’s IT pioneers in India used to talk of themselves as offering social upward mobility for first generation Engineers from rural India .That basically summarizes work place as employment opportunity ,trend that previous generation displayed . However when I specifically probed about this strata assuming that folks from this segment might still be seeing world like my generation things did not change .The youngsters with no so privileged background seem to have caught the same attitude (as that of urban/settled section ) towards work and workplace .This is how social scientist define a generation ! The attitude change is generational and here to stay .

Changes the hiring side needs to do

What this now means is that people on the other side of “conference call” have to now shift the mindset from “hiring”-“recruiting” to “teaming up”-“tribe formation” .We are no longer giving them job .Instead they are choosing to spend their life with us . to A big shift for my generation of people .

PS : these are my observations and not a scientific study with large-diverse sample space .My slice of the world in india/IT centric …..But it made sense to plot this point in space for anyone to spot the trend .

Categories
Software

calling the BS on system design interviews

diagram
( copyright design gurus/Arsalan Ahmad , included for critique ,which is fair usage )

This great diagram about system design also exposes the hollowness of this system design trend . Apparently system design expects you to know
1. Load Balancing
2.Caching
3. Queues
4. Search
5.Streaming
6.Observability
7.All databases
8. Cloud compute for scaling

What are we interviewing for ?


But what we are basically asking is can a candidate design this fictitious FaanG system using Aws with 5-7 years experience . I am sure a sharp mind can read and answer anything about Graph DB to partitioning to blob storage but it is a fact one needs good number of years of hand on practice to be reliable professional in this area .I will be suspired to see a candidate so lucky that every 6 months he/she worked on a project that exposed him/her to each one of this area .Very unlikely .Have we then started believing that knowing random bits of designs from FaanG companies is somehow a skill akin to knowing distributed computing with guaranties !

What system design interview might mean


What system design interviews then probably means is we are looking for team mates who understand cloud scale vocabulary .What it might also mean is the expectation is restricted to only vocabulary and there is some other Senior fellow or team doing the actual Architecture .It might then just be simpler to ask AWS certifications instead of system design.
Next problem is what frameworks do we expect these candidates to use ? Java/spring in lambda is different ballgame than nodejs in container .REST is a different skill than how you package your services as micros while keeping functional sanity and quality of services. So is UI or big data. Very few system design talk of this complete stack (cloud to framework to code).I am sure lot of these interviews also cover performance ,security , build and such areas but how is that coherently weaved to the typical system design questions is a question worth pondering !
And i am totally discounting the fact that most great internet companies build their own platforms , a skill that is more challenging than system design in current interview flavor .

The reality check

In all probability system design interviews are outgrowth of the full stack engineer myth we created in industry (my old post on this topic) .Here 2 questions are worth asking :
1. Are we really creating tribe of cloud aware candidates with whom we do mutual fakery that we can design netflix video stream or uber scheduling with no deep experience to back it up ?

2. What is you job designation ? system designer engineer I/II/III ? or system design architect ?

ps :Here is also a detailed skill matrix for you to plan your growth https://docs.google.com/spreadsheets/d/1lAFfBj7UM3NZrS3ywsHZsK4pnWN5eWZJCeSt-UtQyu0/edit?usp=sharing