Why I love hiring junior engineers

When it comes to hiring engineers, it seems to me that most companies subscribe to the “conventional wisdom” of hiring experienced (a.k.a senior) engineers. They want people that “have been there”, “done that” and who can “hit the ground running”.

While there is nothing wrong with hiring senior engineers, the fact remains that there are more job openings than there are senior engineers to fill them. This scarcity leads companies to “cannibalize” on each other’s resources while overlooking a perfectly legitimate pool of high quality resources.

In the past couple of years I was fortunate to work with some really bright “junior” engineers and I decided to sit down and summarize that experience and why I believe that hiring up-and-coming engineers is not only a viable alternative but in fact an advantage.

Experience is overrated

While having extensive experience using the language of choice in your company can be helpful, it represents a fraction of the knowledge required by the engineer to perform their job duties. Any engineer you hire is going to have to spend a fair bit of time understanding your business particularities. No two businesses are the same. Not even within the same industry.

Remember those 12 legacy systems you have that don’t really talk well to each other? Yea, so they’re gonna have to understand how they work. Remember that huge monolith code base that is severely lacking in documentation? Right. So they’re gonna have to spend a fair bit of time wrapping their heads around that one. That’s where the real learning curve is!

What you want is somebody that has problem-solving skills. Someone who is a quick learner. Someone that can get the ball rolling without you having to sit there and hold their hand. Not someone that have some meaningless number of years writing Java code on their resume.

Motivation is underrated

Just like toxic attitude is contagious, the opposite is also true. Junior engineers are typically a very enthusiastic and motivated bunch. They have just discovered the beauty in what many of us take for granted: having the ability to convert your ideas and dreams into real-world, living, breathing computer programs.

This breath of fresh air has an uplifting effect on the moral of the rest of your team and promotes an atmosphere of help where your more senior engineers are suddenly taking on more responsibility by mentoring the more junior engineers. (Assuming your team is not solely composed of egomaniacal a-holes).

Likewise, motivated people will compensate for what they may lack in knowledge with sheer determination in order to achieve results. I’ll hire that kind of person over any senior engineer you put in front of me with indifferent attitude any day.

They are not as “clueless” as you think

In the past year I trained two junior engineers with almost no experience writing professional software. In both cases, I was able to ramp them up within days to start contributing meaningful, production code to our core platform.

My approach was simple but effective: treat them as professional adults, give them just enough to get going on the task at hand and check up on them every now and then to see if they need any help. That’s it.

The “overhead” in training them (which added up to maybe a couple of hours per week) paid itself many times over as these fledgling engineers became more and more productive and were able to tackle bigger and bigger tasks.

This is not an isolated case. In another team within the same company I witnessed similar results: within 3 months of hiring 2 new junior engineers to their team, they have doubled if not tripled their output.

Reciprocity

Decent people feel the urge to reciprocate when treated kindly. This translates to loyalty to your company, evangelizing your business and company culture, referring colleagues to work for you and generally having a fan on your side.

Bottom line

If your company has policies that forbid hiring junior engineers, it may be time to revisit these policies. Be as picky as you like in your hiring process but don’t let past experience be the main drive behind your hiring decisions. Look for bright, promising candidates who can compensate with their attitude for what they lack in experience.

Tips on getting started with programming

A nice fellow recently asked me for advice on how to get started as a programmer.

This is a surprisingly difficult question to answer and there’s hardly “one good answer”, but I think that there are a few guideposts that can help anyone in their journey.

Purpose

Seems obvious but you’d be surprised at how many people study programming to “know programming” without any clear direction as to what they’re going to do with it.

It’s like spending all your days learning every possible chord for a guitar without ever playing a single song. It’s no fun and you feel like you’re going nowhere.

Decide what it is you want to build. Have a clear image in your mind of what it is you want to make and work backward from there.

For my first project I wanted to create a phone book application. I had no idea on how to do that, but I knew there was a need for it in the place I was working. That gave me a sense of direction and a place to get to.

I went to the store and bought a book that taught me how to build database applications. I read just enough to build the first screen or two. Then I got stuck. I went back to the book and continued reading through it. 30 pages later I had my answer. I used what I learned to build a couple more screens. Then I continued alternating in this fashion. By the time I finished the book I was done with my 3rd project.

Which leads to me the next point:

Commitment

There’s a really interesting paradox of choice today. There are simply too many options on how to get started as a programmer. There’s YouTube videos, online courses, tutorials, projects, bootcamps, books, meetups, colleges and on and on ad nauseam. This can get overwhelming quickly and scare away new programmers.

My suggestion? Pick something that works for you and stick with it to the bitter end.

You can’t attain anything beyond superficial skills by constantly jumping around. Resist the temptation and stick with whatever course of action you picked. When you’re done, you can pick something else.

And finally,

Write a ton of code

Reading books and watching videos alone is not going to make you an expert programmer. To really grok programming you need to write a lot of code. Write code and don’t worry about getting it perfect. A year from now you’re going to look back at that code and feel sick to your stomach. That’s okay, because a year after that, you’re gonna feel the same about the code you wrote the year before. It means you’re getting better.

Happy coding.

That programming book you never finished

Tell me if this sounds familiar:

You walk into a bookstore, browse through some shelves and run into a programming book about a subject you always wanted to learn. Maybe it was about machine learning or algorithms or some other cool technology.

You read the back cover, the intro and you get really psyched. You think to yourself: “I think I can really get this”. And, “when I’m done with this book I’m gonna have super powers” and “I’m gonna show the guys at work what a rock star I am” etc.

You get home, open the book that is about to change your life and 20 pages into it you’re starting to sleep after seeing one too many mathy squiggly thingies.

Then you start thinking some other thoughts, such as “oh, not math again!” And “I’ll never get this, I suck at math!” And “I guess I’m just stupid” and other such nonsense.

If I had a dollar for every time… anyway.

So I’m here to tell you that math has a dirty little secret that will help you get through these books: mathematicians like to use big scary words and symbols to describe small and simple concepts.

Let’s look at an example. Chances are you ran into the scary looking Sigma symbol:

I don’t know if it’s because it’s big or because it looks like Egyptian hieroglyphs, but something about that symbol freaked me out the first time I saw it. But it turns out that it’s almost idiotically simple.

Sigma simply means “sum up”. What do you sum up? The thing on the right (i*2 in this case). And you do that starting at the number below the Sigma (i=1 here) until the last number designated above the Sigma (100 here).

So this particular Sigma equals to: 1 * 2 + 2 * 2 + 3 * 2 ... + 100 * 2 = 10100.

So the easiest way for me to think about Sigma is to think of it as a `for` loop, where the lower boundary of the loop is specified under the Sigma and the upper boundary of the loop is specified above the Sigma. Here’s how it would look like in python:

def sum(i):
  s = 0
  for n in range(1,i+1):
    s = s + (n*2)
  return s

I know, it’s almost disappointingly simple.

This may sound like over-simplifying the situation. That some math concepts are just impenetrable and beyond mere mortals grasp. Well if that’s the case then I haven’t ran into it yet.

On the other hand, this is not a “get math quick” scheme either. To understand these math concepts you’ll sometimes have to drill into other concepts that the original concept builds on — recursively. This can take hours, days or more to accomplish, depending on the concept.

But the point is the same. It’s just fancy words and symbols. And as long as you keep going down that rabbit hole using dictionaries, tutorials, videos, whatever you can get your hands on, to define these words and symbols, you’ll eventually get it. Try it sometimes.

Happy learning.

How does it feel to run the New York marathon?

Last November I was able to strike a major item off my bucket list: run a marathon. But not just any Marathon. It was the New York Marathon, no less.

As far as I can remember myself I was into running. But it wasn’t until I read the book “Born to Run” circa 2011, that I really got excited about long distance running. This book completely reconfigured my thinking about running and what a human body is capable of doing.

So I started pushing myself to run longer and longer distances. At first I was only able to do a couple of miles. But as I kept pushing myself I was running longer and longer distances.

One particular Saturday I went running an 18 miles course. This was something I never attempted before and wasn’t sure that I can do. The day was particularly hot and humid but one way or another I was able to push myself to finish. When I arrived back at home I plopped myself on the sidewalk and was literally motionless for about 45 minutes.

But what I wasn’t expecting, was finding myself in a particularly wonderful state of mind. It’s very hard to explain in words, but as best as I can describe, I felt a complete clarity and serenity of mind. One I have never experienced before. It’s as if life’s burdens, troubles and pains were momentarily gone. It lasted for the rest of the day and was something I would never forget.

This particular experience proved me that I was onto something and convinced me to set my goal to running longer and longer distances.

But like in any good story, there’s always a “bad guy” and the “bad guy” in my particular story was getting into smoking. What started with a couple of cigarettes a week turned to a couple a day, then half a pack a day and then chain smoking. Soon enough I was running less and less and forgot about my dream of running long distances.

Until one day after feeling particularly sick to my stomach. Particularly disgusted with my health condition, particularly disgusted with how every item of clothing I own smell like a god damn ashtray I got up and decided to make a big change. I ripped whatever cigarettes I had left and threw them to the garbage, washed all my clothes and yes went for a nice long 10 mile run.

It felt great, it felt like I was being reborn. Sometimes in life you just know when you make the right decision. And this was one of these times.

After getting back from that run I vowed to never smoke again. But I wanted something more. I needed something bigger.

A few days later I ran into a friend of my wife. He told me that he is planning on running the New York marathon and wanted us to come and cheer him. I asked if I could run it too and he said that the lottery is already closed and that he was waiting for 7 years to run this marathon until his name was finally picked up.

I wasn’t ready to give up yet and if anything the challenge of not being able to get in motivated me even more. I found out that it’s possible to run with a group while helping them raise money for charity. I did my research and found a Jewish group and contacted them to see if I can run with them.

The next morning I opened my email and couldn’t believe my eyes. I was accepted for the race! I was literally jumping up and down with joy.

As the race day neared I was pushing myself to run harder and harder. Luckily I found an experienced runner who was willing to take me under her wing and was coaching me and getting me on a proper running plan as opposed to my previous “run a lot” plan.

The night before the race was nerve racking. Can I do this? Can I finish the distance? Am I fit enough? Will I finish last in disgrace? You know, all this internal pep talk we all love to do with ourselves before something big is going to a happen.

I woke up at about 5am and headed out to the Staten Island ferry. The place was packed. There were people all over the place of all shapes and sizes. I didn’t feel alone in this anymore. Others are doing it too. And they seem to be figuring it out themselves as well.

At about 10am I finally made it to the start line. My adrenaline was at its peek. People were cheering, the national anthem was playing and the air was electrifying. The gun went off and we all sprinted ahead. Like many around me, I’m sure, I was thinking “holly crap! I’m running the NY Marathon!”.

As I was running through the various boroughs I was struck with amazement with the people on the streets. I’ve had old people I never met in my life high fiving me. Moms holding their babies to wave at the runners for good luck. I’ve seen mariachi bands coming to cheer the runners. I’ve seen christians, muslims, jewish, police men, fire men, moms, dads, republicans and democrats all coming together and dropping their differences and hatreds. It was shocking. If I needed any reassurance that the human race still has hope, this was it.

And so after 4 hours 10 minutes and some seconds I crossed the finish line. But once again, the biggest surprise wasn’t with the physical challenge — although I can attest that there was definitely plenty of that — but that indelible experience that changed me forever.

What’s next? Well, I was lucky enough to be accepted again this year so I’m training pretty hard for that. Hopefully I can break that 4 hour barrier!

Algorithms in the real world

Computer scientists that need to write code for a living, constantly straddle the line between the beautiful and neat little world of theory and the somewhat messy, “macgyverish” world of practical software engineering.

In the theory world, cute cuddly objects pass messages of peace and love between each other. They live on a beautiful planet, replete with natural resources.

In the practical world, objects sometimes try to set each other on fire. They drunk drive, and they live in a 100 sq ft apartment with their wive’s mother who moved in after they got married to that hot method from that other project.

But all the same, computer scientists are always trying to bring some of those cute objects back with them from Theory planet whenever they go on a visit.

One time, even I got lucky. A large company I worked for needed a directory system to help customers navigate their city-block-size building. You know those You-Are-Here maps they have in the malls with a red big dot that tells where you are. So like that, but on big digital screens.

Anyhow, long story short the project manager predicted this project will take many weeks to complete due to the perceived complexity involved in routing customers from any point A in the building to any point B.

In fact I thought so myself too. But then I remembered our networking guy saying something about a “shortest path algorithm” a while back. At the time he was trying to explain to me how network packets travel in an efficient manner given several possible paths.

A simple Google search brought back a complete implementation of an algorithm called the Dijkstra’s algorithm. The whole thing, top to bottom must have been 100 lines of code in Java. Very concise.

Since I didn’t know a thing about how it works or what it’s trying to solve I pulled up the Wikipedia article:

Dijkstra’s algorithm is an algorithm for finding the shortest paths between nodes in a graph.

For example, if the nodes of the graph represent cities and edge path costs represent driving distances between pairs of cities connected by a direct road, Dijkstra’s algorithm can be used to find the shortest route between one city and all other cities.

Oh, okay. So all I have to do is model all the points in the building as “nodes”, link them using “edges” and assign a distance to every edge. Then the algorithm can use this information to figure out the shortest path from any point A to any point B. Sounds easy.

I copy pasted the code to my project, fed it a few sample points and tested it on pair of endpoints. It worked.

I tried it on a few more endpoints, added alternative paths for the algorithm to choose from and it worked flawlessly every time.

I deployed the code to our dev environment and showed it to the project manager. He couldn’t believe it. I was showing him a working demo of the product within days of receiving the assignment.

He then proceeded to test it himself. Certain he could find edge cases which would break the algorithm. He even came to me a few times proudly announcing that he found one. But in each and every case we found out that his input was at fault and not the algorithm.

So what’s the moral of the story? Well, for me at least, it was the realization that Computer Science is a useful subject and that it is a distinct activity from software building.  Moreover, it taught me that there are powerful, fundamental principles to programming. And that it’s absolutely worth learning these fundamentals very well, because the time invested in learning them will pay itself back many times over.

Staying human in a digital era

This is not a technical post. But in light of the recent tragedies I decided to take a moment and reflect about us. Humans.

Without a doubt, the last few decades had given us many technological wonders. Personal computing gave us the ability to create incredible things. The Internet took down our artificial barriers and made it possible for us to freely exchange ideas regardless of our physical location. The web gave us access to the world’s information and open source leveled the software playing field.

Computers are also giving us self-driving cars, delivery drones, chess mates, better science and a million other great things.

But no matter how much faster, better and smarter our computers get, there’s one thing that computers will never be able to give us. A simple human touch.

As programmers we tend to get lost in the cyber world. We work there, we play there, we communicate there, we buy our groceries there and we have less and less opportunity to step out and take a break.

But we are still human. And we sometimes forget that the world is full of other humans. And most of these other humans are actually pretty awesome. Some of them are working hard to keep us healthy, others are keeping us safe from harm, still others are growing the food we eat and every one of them no matter who they are, or what they do, is waking up in the morning to make the world a little bit better than yesterday in their own unique way.

Maybe we need a Human Day. Something to remind us once a year that we’re all human.

So say hi to someone you don’t know today. Smile to another human being. Say hi to that pretty girl or handsome guy you like. Take a break from that computer. Turn off your phone. Go for a run. Meet a friend for coffee.

It’s okay to be human.

The self taught programmer’s journey

I remember my first programming gig. Being a self-taught programmer I figured it would be minutes before I would be exposed for the fraud that I was.

I pictured one of the other engineers take a glance at my code, frown their eyebrows, look at me and say: “wow, that is the worst piece of code I have ever seen in my life. Did you even pass your CS 101?”. About that time, someone from HR would then storm into the office with my resume and ask “where did you go to school? I can’t find it on your resume?!” And then I would wake up in a pool of my own sweat. Well, not really. But that’s how I would do it if I was in a movie.

If you’re a self taught programmer there’s no question that you had your fair share of self-conscious moments. Someone at work would start reminiscing about their college years and another would join and before you know it there’s a whole discussion going on while you’re trying to blend into the back wall before someone notices you and asks where you went to school. I know. Been there.

So I did a little bit of research and you’d be happy to hear that we’re not in a totally terrible company. Self taught programmers, scientists, artists and even philosophers have existed since time immemorial. Here’s an extremely incomplete list of some of them:

  • George Boole – The man who developed Boolean Algebra and without whom computers as we know them today could not have existed was a largely self-taught English mathematician, philosopher and logician, most of whose short career was spent as the first professor of mathematics at Queen’s College, Cork in Ireland.
  • Ada Lovelace – was the world’s first programmer. She is best known for creating the first program, designed to run on Charles Babbage’s proposed mechanical computer called the Analytical Engine.
  • Jimmy Hendrix – considered by some to be the greatest electric guitarist in music history. In 1957, while helping his father with a side-job, Hendrix found a ukulele amongst the garbage that they were removing from an older woman’s home. She told him that he could keep the instrument, which had only one string. Learning by ear, he played single notes, following along to Elvis Presley songs, particularly Presley’s cover of Leiber and Stoller’s “Hound Dog”.
  • Ernest Hemingway – considered as one of the greatest English-language writers. the American novelist and short story writer, was primarily self-educated after high school.
  • Herbert Spencer – the single most famous European intellectual in the closing decades of the nineteenth century was educated in empirical science by his father.

To be clear, this is not a rant against universities or against education. Quite the opposite. I’m a huge proponent of education. But I also happen to believe that there is more than one way to enlightenment and mastery. Some find formal education to be the preferred method of learning. Others, like myself, prefer to design their own curriculum and follow it at their own pace.

Whatever your approach is, make sure that you never stop learning. One of my favorites is the story attributed to Jigoro Kano, the founder of Judo. According to the legend, on his death bed, Kano summoned his students and asked them to bury him in his white belt. As the most senior Judo practitioner of his time, he wanted to be remembered as a life-long learner rather than a master.

No, you’re not bad at math

Sorry, but I’ll have to disagree with you about this one. Wholeheartedly. If you have the idea that you’re “bad at math” then you’re simply wrong. Dead wrong. How do I know this? Because no one was worse at Math than I was. I was at the bottom of my class throughout my teens and was convinced that Math is nothing but a torture device in the hands of my sadistic teachers.

Last week I published a post describing my personal Math journey. Several people have commented on the article on social media to the effect of: “I’m bad at Math”. the purpose of this post is to thoroughly disabuse them of this notion.

In his 2015 TED Talk, Mr. Sal Khan argues that the approach taken to teach math today in most public schools accounts for the high failure rate in the subject. Students are grouped together, typically by age and are shepherd together through the curriculum. Every few weeks the students will receive a test to asses their knowledge and regardless of how each individual student did on the test the class — as a whole — would move on to the next subject.

That, right there, is the heart of the problem. You see, mathematical concepts build on one another. You can’t understand Algebra without first understanding Arithmetic. Similarly, you can’t understand Calculus without understanding Algebra first. It’s just the way it is. But remember that time you got 85% or even 95% in your Math test when you were in middle school? Well, guess what? That gap was never corrected and later on when you tried to tackle the next subject you were missing 5%-15% of the required knowledge to understand it. So now you’re only getting 70% on your next test and soon enough you’ll be well on your way to hate Math and anyone and anything connected with it.

To really drive his point home, Mr. Khan used an analogy to Home Building:

To appreciate how absurd that is, imagine if we did other things in our life that way. Say, home-building.

(Laughter)

So we bring in the contractor and say, “We were told we have two weeks to build a foundation. Do what you can.”

(Laughter)

So they do what they can. Maybe it rains. Maybe some of the supplies don’t show up. And two weeks later, the inspector comes, looks around, says, “OK, the concrete is still wet right over there, that part’s not quite up to code … I’ll give it an 80 percent.”

(Laughter)

You say, “Great! That’s a C. Let’s build the first floor.”

OK, so that’s all nice and good. But you might be asking yourself: “yea, but why do I need to learn Math? I got it that you’re excited about Math and all that. Why do I need to care?” Well, if you’re reading this post, chances are that you’re a programmer. While many programmers try — and to varying degrees succeed — at ignoring Math, they are painting themselves into a very tight corner. Computer Science has its roots firmly established in Mathematics and therefore ignoring Math means ignoring the very foundation upon which the entire subject rests on.

Eventually, automation will catch up to the more trivial tasks of programming and those with only superficial understanding of the subject will be at risk of being replaced — ironically — by their own tools.

OK, so hopefully by now I convinced you that you’re not “bad” at Math. That you’re not lacking some mysterious Math gene and that Math is not something that is reserved to the exceptionally smart.

Where do you start? Personally, I like the way Khan Academy is broken up by subjects and grades:

Khan

When I signed up I decided to swallow my pride and start at the very beginning. Yes, I was doing arithmetic and kindergarten level Math again. But since I was doing it at my own home, on my own time, no one was there to judge me or tease me. And by doing so I was making sure that I was covering every gap in my Math education. And you know what? I found gaps as early as the 1st or 2nd grade!

Next thing you know I was gaining ground and tackling more and more complex subjects. These same subjects I flunked throughout my high school years. So I know it can be done, because I’ve done it.

Cheers.

Math: from hate to love

Programmers don’t typically like to admit that they’re bad at Math. Also, it doesn’t help that most non-programmers have this idea that all programmers are some kind of Math geniuses. Unfortunately for me though, I wasn’t blessed with any Math superpowers. Not by a long shot. In fact, I used to hate Math more than anything else in the world. Just the thought of going to Math class at junior high brings back memories that look something out of a Pink Floyd video.

By the time I got to high school I was convinced that Math was totally beyond me, that I lack that mysterious Math gene and that only people blessed with a mind for numbers can approach the subject and get good at it. I am simply not smart enough, I figured.

Around the same time though, my high school began teaching us Computer Science. Quickly, I found out that I liked it and was even pretty good at it. I was solving the algorithmic problems relatively easy while other classmates were struggling and I seemed to have a knack for it.

After graduating from high school, I was drafted to the army where I managed to get myself into a position of writing computer database applications. As I got better and better at it I wanted to know more. I wanted to truly understand how computers work down to the atoms, learn these more advanced algorithms I keep hearing about, understand how cryptography work, how computer animations are generated and so on. I was enthralled with the possibilities.

So I signed myself up for a remote university course to study for a Computer Science degree. After exactly 4 study periods of introductory Math course, my head was spinning so hard from Set Theory that I dropped out like my life dependent on it and never looked back. I felt like a complete failure and was ashamed to be so incompetent in Math.

After I finished the army, I managed to get a job as a computer programmer. Through diligent self-study of mostly books, I was able to advance my understanding of programming and software and built myself a rather successful career by average standards.

But while this was fine, and my work was paying the bills, my understanding of the subject was on the surface. I lacked the in-depth understanding required to truly master the subject. And I knew it. But each time I tried to penetrate the subject matter on a deeper level, I would inevitably hit a wall. Math seemed to be everywhere.

One day, while minding my own business, I ran into a TED talk given by a man named Sal Khan. Sal, previously a hedge fund analyst, quit his job in 2009 to work on a website he’d created to teach Math — for free — to anyone who wishes to learn the subject. He talked about the trouble in the Public School system: kids are moved through the curriculum in bulk, accumulating gaps in their knowledge due to a one-size-fits-all approach. So by the time they get to the more advanced subjects, their foundation was so shaky that they hit a wall they couldn’t pass. He website, he said was solving this very problem.

His speech really resonated with me. But I was still skeptical. This sounds great in theory. But can I, me, personally, benefit from it? I didn’t know yet.

I signed up and began watching videos and doing the exercises in order from the very beginning. I was literally doing arithmetic. The concepts were explained with crystal clarity and I could watch them again and again. I could also use the built-in exercises to practice these subjects and really drive the concepts home.

Next thing you know, I began tackling more and more advanced subjects which were previously completely occluded from my understanding. And was doing so with success and even ease, now that my mathematical foundation was rock solid.

Today, according to the Khan Academy website, I have mastered over 700 distinct skills. It truly recovered my Math education, my self-esteem and even ignited a real appreciation to the beauty of Mathematics. But maybe even more important than that, it unlocked many doors to understanding my profession and my real passion in life: computer programming.

P.S.

The image you see at the top of this post is a so-called Fractal. Fractals are patterns that are self-similar across different scales (Notice how the flower pattern repeats itself over and over as you zoom in).

They are created by repeating a simple mathematical process over and over rather than describing and encoding every detail. Fractal patterns are extremely familiar, since nature is full of fractals. For instance: trees, rivers, coastlines, mountains, clouds, seashells, hurricanes, etc.

That time when programming saved my life

The year was 2000 and I had been a soldier in the Israeli Defense Force beginning my second year of my mandatory 3 year serving term.

My post in the army was nothing glamorous. By strange chance of events I found myself in charge of a small seamstress office, in a small army unit that had nothing to do with computers (I think it had about 5 computers between all its offices). Needless to say, my life was not fulfilling and I was actually quite miserable.

Prior to joining the army, at high-school, I discovered my passion to programming and even did pretty well at that. Unfortunately the Deputy Commanding Officer (who hated my guts) at the unit I was serving, wanted to hear none of that when I asked for a re-appointment as a computerization officer.

Additionally, my less than rudimentary high-school computer science training gave me no real-world skills when it comes to building any usable software.

One day I came across an army manual which was explaining how to use Microsoft Access to build applications. The manual was quite small and was only covering the basics but it made me realize that the army has approved Microsoft Access as a technology for building applications.

Since I didn’t know the first thing about Access, the next time I got an off day from the army I went to the nearest book store next to my home and bought the biggest book on the subject that I can get my hands on. I think it was this one (in Hebrew):

MS Access Book

Now I just needed a project.

So I walked around the various offices in the unit, sniffing around for a project. After a little bit of searching, I found out that the “Hamal” (a mix of receptionist and phone operator) had stacks of hand drawn phone books and other scraps of paper all over the place with phone numbers on it. So I decided to build a phone book database. Seems easy enough.

I started reading the book and got into it just enough to build the first few screens. Once I got stuck I opened the book again and resumed reading until I got my answer. Then I got back and continued writing some more code, fixed a couple more screens and hitting yet another wall. Opened the book again, continue enough to get my answer and then get back to the code. Rinse, repeat.

Bear in mind, the internet was not as ubiquitous, Stack Overflow didn’t even exist for the next 8 years and Google was not really a thing yet. So my only option was to continue on with my book.

After building a significant portion of the application I decided to give it a go with that phone operator guy. He seemed interested but somewhat skeptical. But was willing to give it a go.

The next day, when I came to visit him, he had already entered most of his phone books and scraps of paper into the application and had a big smile on his face. This made his life so much easier — he said — and gave me my first list of feature requests.

Feeling like I’m onto something, I decided to take a leap of faith and give that Deputy Commanding Officer a demo. Heck, I got nothing to lose. It’s not like I can get fired.

So I walked into his office and asked if I can show him something. Reluctantly, he agreed. I started up the application and I could tell that I got his attention. I continued to explain the problem with the hand written phone books, how phone numbers get lost to wear and tear, how hard it is for the operator to share the data with other offices in the unit and the positive feedback I got from the operator.

He was sold and within days I was re-appointed as a computerization officer which led to many more interesting projects (one of which was featured in the army’s magazine) and ultimately what started me on my career path.