The human side of programming
I learned a few human elements of software engineering, all thanks to my business partner and co-founder, Celento C George
We don’t need more engineers, now
When I said we need more engineering hands to add speed, he said, No it will slow us down, as work cannot be simply measured in man-months because complex programming projects cannot be perfectly partitioned into discrete tasks that can be worked on without communication between the workers and without establishing a set of complex interrelationships between tasks and the people performing them. Therefore, hiring more programmers now will make us slow down. The time required for the new programmers to learn about the project and the increased communication overhead will consume an ever-increasing quantity of the calendar time available which can be better utilized in executing what we need now. When n people have to communicate among themselves, as n increases, their output decreases and when it becomes negative the project is delayed further with every person added.
AI or Blockchain is not a silver bullet, on day 0
When I said we need to use existing data sets to predict better results, he said just the use of algorithms and rule-based programmatic responses to simulate intelligence is not AI. We need to instead design to solve the problem the way the humans seem to solve it, and just it much more efficiently and accurately. We need to grow the software organically with incremental development to make it essential as per what people want and not accidental. Accidental complexity when writing code relates to problems which we as engineers, designers create and can fix. Essential requirements emerge from the problem that needs to be solved, and nothing can remove it; if users want a program to do 30 different things, then those 30 things are essential and the program must do those 30 different things.
Keep it simple and let’s not over-engineer it
Sometimes inflated expectations of self make the software bloat. He simply says, let's think about it when we get there, our predictions can be wrong we need to build as per what motivates users (Safety, recognition, acceptance, gratitude) and not as per what we think they want. Our desire to provide the consumer with a more useful product, in order to increase sales or distribution should not be a result of feature creep but it should be the most simple and intuitive design.
There’s so much more to learn from him as we build a platform where we and our community can progress in life and careers. Much gratitude!