Pages

Friday, September 16, 2016

Computers only do what you tell them to.

This happened while I was in my 3rd year, Computer Science. As part of our curriculum, we have to take an Open Elective subject, that's one which is not from our branch. I ended up with Cryogenics from Mechanical department.
So one day in class, the projector did not start. Our professor gives the lecture as powerpoint presentations, so of course he was unable to proceed with his lecture.
After trying for about 15 minutes, he asks, "Can anyone please fix this? Any computer science students?"
Me being one of the 4 CS students there, he looked right at me. Further, the person sitting right next to me, a 3rd year chemical engineering student, pointed his finger right at me. I looked at my fellow CS friends, they all had an expression like -_- -_- -_- .
The professor asks me, "Can you please fix this?"
I replied as politely as I could, "Sir, I don't know how". Instead of "Dude... CS students don't fix projectors."
I hate it when people associate CS engineers with everything that's related to computers.
Also, this has happened so many times that I cannot count: people associating something I did with being a computer science student.
Like, this one time, some guy had a problem with his windows laptop. As you know, windows has lots of bugs that can be fixed simply by restarting. I don't remember what the problem was, but I do remember that I fixed it by a simple restart. So this guy looks at me and says, "CS guy after all..."
Many of the existing answers revolve around management and users of the software you write, so I want to address a couple of more general non-user annoyances.
  1. Computers only do what you tell them to.
    Nothing can be further from the truth. Perhaps in the most trivial, deterministic cases, but these days computers are being put to use in highly nondeterministic tasks, and have all kinds of programming patterns and approaches and the like to deal with it. Anything that is “event-driven” is inherently nondeterministic. Everything from typing on your computer and using the mouse to writing to and retrieving data from your (hard or SSD) drives, playing multiplayer games, even using social media sites like Quora, Google+, and others.

    We have to put a great deal of effort into actually making the computer do exactly what we want. Bugs are when the computer is doing what you don’t want. And it can range from your web page being rendered badly to crashing a plane or killing a patient or losing millions on the stock market. We don’t want those things, neither do we tell it to do those things.
  2. Computers will never be able to do (x).
    I think this less of an issue today than it was 20 years ago, but sometimes it still crops up. Mainly when it comes to some human quality we cherish. But as we push back the mysteries of how our own brains work using the latest neuroimaging technologies and the like, it becomes more and more clear just how computable — and therefore not so inscrutable — we really are.
  3. Computers are just bits and bytes, ones and zeros.
    Not true, anymore true that you are just atoms and molecules. Or that all your brain is is a collection of neurons firing. Obviously, in each case there is emergence happening, a powerful synergy giving rise to new phenomena not easily explainable in terms of mere atoms or firing neurons.
The above are related insomuch that humans have always imagined themselves to be at the “center of the Universe”. But as our understanding of our universe grows, it becomes all the more apparent that is not the case.

Most other answers mention this question. “How long will it take to code X?” But wait…
This question is such a land mine, because if you answer it, you have committed to a schedule without even being shown the scope of work. But the thing that really kills me is when you dare to give an answer, and the asker, usually a manager, says “Wow, I’m pretty sure we can do it in [50% of your estimate].” Now you are accountable to a schedule that, in your best professional opinion, and assuming you have correctly guessed the scope of work, is unachievable. People wonder why software projects run over budget. They shouldn’t.
A similar answer is, “Well, we need it to take [50% of your estimate].” There’s no explaining that you just told them how long it would take, and that wishing it would take half that long is just magical thinking.
I once led a team of software engineers in estimating the full schedule cost of a traditional waterfall project. We used an excellent scheduling methodology, spending about five weeks to produce our very best estimate. I brought the schedule to my project manager, who looked at the detailed Gantt chart that Microsoft Project produced, and said with obvious horror in his voice, “I can’t take this schedule to management. They’d cancel the project! Aren’t you concerned you would be laid off? You need to go back and find a way to do it in [30% of your estimate].”
Now, it was 1995, and I was absolutely the most employable person I knew. So no, I wasn’t particularly concerned about losing my job. And management should cancel the project if it was more than they could afford. But to my shame, I went back and re-did the schedule, taking out the iteration reviews and integrations, taking out the padding for unanticipated work, and assuming that the code base for a previous project was in good enough shape to port.
Guess which schedule estimate was right on the money, 45 man years later. Oh, and that code base from a previous project? It had been written under exactly the same schedule pressure as the project I was estimating, so it was totally unusable. Oh, I could a tale unfold whose lightest word…
It was no comfort that we were closer to our estimate than the hardware team, who assumed 100% availability of all their staff.

Any variant of, “I have an amazing idea for some software. [I just need you to / how can I find a programmer who will] do the work for [free / exposure / fun / a share of the eventual profits]”.
I’ve answered a few questions on Quora that start like this. Ideas without execution are worthless. Assuming that an idea alone is valuable is a kind of idiocy that could only arise in an “information economy”.
Don’t be an “idea guy”. Bring something to the table that has value. If you have skills - whether in design, implementation, marketing, networking, whatever - bring that. If you have resources - money, investors, an established business, materials, whatever, put it on the table. If you have nothing but time and the willingness to work just as hard as everyone else around you to make it happen, at least offer that. Don’t bring me an idea and expect to sit back and watch the cash flow. Bring me something I can work with.
If all you have is what you think is a great idea, I can find someone else with a great ideaplus something actually useful to work with instead. Or I can cut you out of the equation and do it myself, since you’re not offering anything. Or if I want to work for free I can work on a free software project that will make my hard work available to other people for free, enriching everybody who uses it - instead of enriching one person who had the gall to think he was entitled to money for his unrealized idea.

I recently got a call from a friend, here’s how it went:
He: Hey, you do website development right, do you do apps also
Me: Nope, but I can get you through someone who does.
He: Awesome! I want both, a website and a mobile app.
Me: Cool! So what’re you looking for?
He: Ok So I want a platform that has:
  • Calendar / Event Management
  • VOIP
  • Video Chat
  • Group Call
  • Self-destructing messages
  • Geo Location
  • File Storage
  • File Sharing (Multiple Formats)
  • Push Notifications
  • Social Integrations
  • Sync & Store
  • Multimedia Sharing
  • Screen Sharing
  • 2-way opt in through Mobile No or Unique ID
  • Encryption
  • No Ads
  • Should match Whatsapp speed
  • Preview of Image
  • Voice & Audio Clips
Me: …
Me: Ok, I got the idea, a collection of everything Skype & Whatsapp & Hangouts & Slack & Telegram does. Right?
He: No! We’ll be better than that - It should work on all platforms, browser, mobile (android first), desktop also. I want a desktop app too, can you build that.
Me: …*What kinda dingbat is this guy*

No comments:

Post a Comment