11/28/2017

What is Programming

Some would say that programming computers is like putting things together that don't have explicit instructions.  You sort of have to figure it out as you go.  Sure past experience is critical in arranging code in specific way to function logically, but more times than not, you have some level of flexibility and creativity to write the code as you see fit.

If you read other people's code, you wonder what they were trying to do, if they used the most practical approach, if they simply got it to work and didn't account for the unexpected, did they document their code by embedding some explanation of what was occurring, to let the next person have some indication when attempting to troubleshoot.

Coding is based on logic, yet flexible enough to add a personal touch.  So perhaps its a blend of science and art, of cognition and creativity, of repetition and free form.

That ain't too bad of a career choice.  Where else you going to find such ambiguity, without necessarily having to deal with people.

11/23/2017

Two robots debate the future of humanity

Interesting video on Robots.  Ben Goertzel has been researching Artificial Intelligence for 30 years, way before mainstream.  He focus on Artificial General Intelligence primarily, rather than Narrow AI, and I've seen many of his video's over the years.  He's got a project OpenCog, found here: https://opencog.org

Enjoy~!



11/05/2017

Humans Apply Bias to Everything Producing Less than Optimal Results

We're the best.  Best?  You're the only one. Yes, but who's counting.

We see what we want to see.  Wear blinders to confirm our bias.  What is bias?  It's our pre-assumed notions of life.

Hey Jon, you wear blue shirts.  I do?  Yes, 10 years ago, you wore blue shirts.  Well, that was 10 years ago.  Now I wear green shirts.  That doesn't align with my bias.  I will continue to think that you wear blue shirts.  I'd rather not adjust to new information, sure it's lazy, but I've already identified this and prefer not to change.

Bias is part of every equation.  You order a cup of coffee.  Some days they are nice.  Other days not.  Why's that.  Perhaps you look like their ex, we'll give your poor service.  Nobody's tracking service levels at a per customer basis, they'll never know.  I'll give you decaf instead of caffeinated.  In my little world, you will suffer.  Now drink your decaf, nobody's the wiser.

Oh, next customer is an old friend, we'll give them extra special service.

Human bias exist everywhere.  Medical offices, schools, you name it.  Special treatment for different people, based on hidden or blatant bias.  That's probably one reason why artificial intelligence is a difficult nut to crack.  Have to account for the "insanity" of humans, where they override logic based on emotions or what have you.

You can program a computer to use 100% logic.  Humans are anything but logical.  Give humans a choice, it will most likely not be based on logic.  At any point along the thought trail, there is human bias, for better or worse.

If you want to simulate human actions tied to thought process, simply identify the best possible solution using logic, and take the worse possible outcome at minimum 50% of the time.

You do know its probably better to pay your mortgage than go to the casino and gamble away your paycheck.  Of course, anyone knows that.  See you, I'm off to the gambling.

Humans use logic, and apply hidden bias to every equation, producing results that make no sense.  Hence, artificial intelligence embedded into robots is a bit complex problem to solve.

And there you have it~!

11/03/2017

The Golden Rules of Project Management

There are 40 hours in the work week.  During that time, you work on assigned tasks in specific order until completion.

More times than not, you work on more than one task item.  And throughout the week, more requests arrive.  Meetings, more work, assistance, whatever.  How do they get added to the stack of current items.


You'd typically reshuffle the list, prioritize the list again and reset expectations.


Sometimes you get requests from multiple people, it's not funneled in from a single source.  For example, Person A assigns 3 tasks.  Person B assigns 5 tasks.  Person C assigns 4 tasks.  Each of the 3 sponsors have no idea what you already have on your plate.  So they think their task item is top priority and should be done shortly.  Meanwhile, you have 9 task items all due at the same time.


So you set out trying to meet all your deadlines.  As you don't want to say no to the people assigning the work.  Surely they wouldn't deliberately overload you, better get busy.


I would say its possible to survive in these types of environments.  For so long.  You can put in extra hours to try and stay caught up.  All it takes is one hiccup and then the finger pointing as to why you missed deadlines.


The reason you failed is because you were set up to fail from the beginning.  By not following best practices on basic project management.


How do you prevent this.  You set expectations.  Assign any task item in any order.  Based on estimated hours and time available, this task item should be done in x days.


You can add resources to the tasks, more developers.

You can extend the deadlines.
You can remove some functionality to shorten the task item.

However, you can't add more task items, add more complexity, add more meetings, shorten the time lines, constantly change priorities.


You need to provide accurate estimates.  You need to provide your available hours for the week.  And need to disclose other task items competing for your time.  And you need to set expectations, and relay any changes upstream as soon as possible, if they have impact on deliverable.


The other thing you'll need to understand, it's nobody's responsibility to make this happen, except yours.


From your sponsors perspective, they don't know there's a problem.  "I only assigned you a few task items, what's the delay?".


Well, you added scope to the project, you didn't provide written requirements, you didn't communicate in timely manor to provide answers to questions, and you set the timelines without asking for developers perspective.  Also, I have ten other task items that need attention as nobody's prioritizing the workload.


It's up to you to manage expectations.  It's part of your job to let project managers know that the assigned deliverable's are impossible.  Let them know about the golden rules of project management listed above: add resources, extend timeline or remove functionality.


These tasks add up to 75 hours.  There are 40 hours in the week.  We'll need to extend the deadline, add resources or remove functionality.  What should we do?


Now apply that to the dozen task items assigned from various sponsors and you're good to go.  It's better they understand the implications of overwork beforehand, as if you wait until you miss every deliverable, it's all on you.


We don't want failed project.  We don't want to burn out.  We don't want to give away valuable time to the client for free.


The solution is, set expectations based on the Golden Rules of Project Management.