Friday, December 9, 2011

Gratitude

The youth activity following the First Presidency's message in the Ensign this month suggests making a list of 100 things that you are grateful. It even helps by suggesting 10 categories that you can list 10 things in. Here is my list.

The item are not listed by priority. Absence in the list does not denote ingratitude (there's only room for 100 things).

10 physical abilities you are grateful for
  • Clear mind and intellect
  • Hearing
  • Eating
  • Speaking
  • Seeing
  • Smelling
  • Walking and running
  • Eating
  • Laughing
  • Singing
10 material possessions your are grateful for
  • Apartment (not technically mine though)
  • Clothes
  • Food
  • Computer and printer
  • Books
  • Money
  • Car
  • Journals
  • Wedding ring
  • Tupperware
10 living people you are grateful for
  • Wife
  • Daughter Christine
  • Dad
  • Mom
  • Brother
  • Older sister
  • Younger sister
  • Mother in-law
  • Father in-law
  • Grandma York
10 deceased people you are grateful for
  • Grandpa Clark
  • Grandma Clark
  • Grandpa York
  • George Washington
  • John Adams
  • Joseph Smith
  • Abraham Lincoln
  • Ezra T Clark
  • Edward Moroni Thurman
  • Gordon B Hinckley
10 things about nature you are grateful for
  • Sunshine
  • Snow
  • Mountains
  • Trees that provide shade and clean air
  • Fall foliage
  • Rivers
  • Waterfalls
  • Four seasons
  • Green grass
  • Colorful flowers
10 things about today you are grateful for
  • Snow
  • Fasting
  • Church
  • First Presidency Devotional
  • Family
  • Food
  • Testimonies in church
  • Reading the Ensign
  • Home Teaching
  • Naps
10 places on earth you are grateful for
  • Home in Sterling
  • Provo Temple
  • BYU
  • Chile
  • Wife's home
  • St Louis Temple
  • Apt N201 in Campus Plaza
  • Washington, DC
  • LDS chapel in Sterling
  • Our current apartment
10 modern inventions you are grateful for
  • Plumbing and running water
  • Electricity
  • Cars
  • Cell phones
  • Microwave
  • Dishwasher
  • Washing machine
  • Electric razor
  • Planes
  • Trains
10 foods you are grateful for
  • Water
  • Milk
  • Bread
  • Cheese
  • Macaroni and Cheese
  • Citrus fruit
  • Meat
  • Pineapple
  • Ice cream
  • Lo mein noodles
10 things about the gospel you are grateful for
  • Christ's Atonement
  • Eternal Families
  • Priesthood
  • Blessings of the temple
  • Book of Mormon
  • Character building
  • Leadership
  • Friendship
  • Scriptures
  • Mission

It Still Isn't Easy


The following is a short essay I had to write for a class.

Its common for people to say that the level of entry into the field of software development has never been lower. Development tools have never been cheaper and easier to use, there is an infinite supply of programming tutorials on the internet, and the growth of the development market is rapidly outpacing the supply of software developers.

When we say that the level of entry has never been lower, it sounds like we're saying its easy to get started. But it we are strongly something much more than that. We are implying that the possibility of an average person becoming successful in the industry is approaching the possibility of success for a person who has been formally trained and educated; we are saying the Ubuntu, Eclipse, W3Schools, and StackOverflow are a worthy replacement for a bachelors degree in Computer Science. That is just as ludicrous as proposing that you could train to be a surgeon by watching YouTube videos and practicing on rats.

I don't mean to say that a getting a degree in Computer Science is a requirement to be a good software engineer. It is possible for a programmer without a degree to be better than a programmer with a degree. There are plenty of terrible programmers who earned a BS degree. But there aren't as many stellar programmers that don't have CS degrees. Why? Because software development isn't easy!

I recently attended a university job fair where multiple companies told me that they will no longer hire Electrical Engineers for software development positions because they just can't manage the advanced programming techniques and theories. But those can be learned with experience, right? Not easily. I know a guy who has been freelancing for 20 years but can't code a recursive binary tree traversal.

Large tech companies understand the difficulties of software development. Google is much more willing to hire someone with a masters degree than with a bachelors degree, even though they have to pay him more. The assumption is that he has received more education concerning advanced topics and is therefore closer to being an expert programmer; and they're usually right.

The trend of outsourcing programming to India is also ending because people are realizing that talent does not come cheap, but coding monkeys do.

A contributor to Forbes recently wrote an article titled “The Rise of Developeronomics” which states that demand for good developers is quickly outpacing supply which is causing the rise of what he calls developeronomics. Companies are acquiring other companies purely for talent (not necessarily for products or technology) and investors are keeping talented developers busy on fluff projects just to keep them around. If the level of entry were low and the promise of success were high, then the supply of good developers would not be a problem.

But the shortage of talented software developers is a problem because the level of entry isn't low. It will remain that way until there is a fundamental change in the field; new tools, resources, and languages cannot make this happen.