05 Jan 2024

GitHub Copilot

Ever since I got really interested in technology, I’ve wondered what it was like for the early tech pioneers to use a computer for the first time.  What sort of magic did they feel?

I feel similarly about the internet.  Story after story of people remembering the first time they used the internet.  Those times created lots of great companies.  Those people just seemed to know that the internet would be huge.

I don’t remember the first time I used the internet.  I remember the first time I remember using the internet, but it wasn’t special or impressive.  My pre-ten-year-old-self thought it was dysfunctional.  I remember it was dial up.  It was slow.  There wasn’t much to do.  I never used the Yellow Pages to find contact information, for example, so I didn’t know how much better the internet was.

Now, I have my own version of that story.  It starts 4 years ago.

Four years ago, just over a year into starting my company, I hired my first developer.  I’d written code for several projects, but I wasn’t a coder.  It wasn’t something I was good at; it was something I had to do if I wanted to make money.

There was an enormous learning curve.  What’s more, none of that had to do with writing software that actually solved a customer problem.   It all was the work you did once you solved the customer problem.

I was great at logic.  I was great at knowing what I wanted the code to do.  I was terrible at actually writing the code.

I remember the night I learned about database pagination.  I had no idea that some databases are divided into “pages,” and, in order to get all the necessary data, you needed to scan each page.  It seems simple when you put it like that, but I assumed a database naturally scanned all the data.

I remember the day I learned how to connect a button to code in building a mobile app.  I also remember re-learning that same technique just a few weeks ago.  It was easy for me to code what the button should do, but it was difficult for me to connect the button to the code.

I remember the night I learned about the importance of programming breaks in for website scrapers.  Once, for learning purposes, I used BeautifulSoup (another tool I was bad at and needed to learn) on my Macbook to scrape the entire Yellow Pages.  I set the scraper to start, went on a date, returned from the date, and found the scraper did work and now was no longer working.

In the troubleshooting process, I navigated to their website.  It was down.

That was also the day I learned about website DDOS-ing.  It was also the day I was never permitted to access the website from my apartment or computer again.

All these things are little nuances that I learned the hard way.  Even a moderately experienced programmer would know this, but I didn’t.

All I knew was logic and what I wanted the code to do.

Everything else was difficult.

So, just over a year into my entrepreneurial career, I hired my first developer, Jothi, to help out.  He immediately upscaled our technology, fixed bugs I’d written, instituted Github, added automated testing, and made us a real technology firm.

He also told me that I was not allowed to code anymore.

My job was relegated to running the business and writing requirements for him.  I would tell him what I wanted, and he would write the code to build it.

That process worked exceedingly well for the last 4 years.  Our clients, complexity, scale, and impact have multiplied.

I wrote the first version of the Lede AI code from scratch.  It took 6 weeks to go from 0 to production.

The first version had a dozen or so code files.  The magic of the Lede AI code existed in one of those dozen files.

The file was called “write_one_article.py” and I still remember putting it together.  It took me 3 days to write the code to write 1 football article.   I still look back on those 3 days as a magical 3 days in my career.

The other 5 weeks and 4 days was spent writing all the code you need to write so you can write one article.

We, essentially, made no changes to “write_one_article.py” for the past 4 years.  Maybe small tweaks here and there, but nothing major, until this past quarter.  The development team has made changes to every single other file, and added quite a few more, since then.

What’s that tell me?

There’s so much other stuff that goes into making the magic work.  Our method for writing one article was so unique.  It was so creative.

It was so simple.

It was so human.

Everything else was so robotic.  It was creating data structures, then making sure it flowed properly.  It was outputting the articles in an easy-to-use way.  It was rudimentary data science.  It was stuff that needed to happen so you could write an article, but it was hardly magic.

Recently, we expected our developers to use about 60 developer-hours to automate a task.

About a month before the project start, I stumbled upon Github Copilot.  It’s an AI developed by Open AI in conjunction with Microsoft-owned Github.  You tell it what you want, and it writes code.

I started a test project.

The objectives of the test project were to calculate the amount of time Miranda and I have been digital nomads.  It seems simple enough, but I haven’t written code in several years.

Within 2 minutes, the project was done.  More importantly, it used methods that I didn’t know how to use.  I told the AI to write a method that calculates the number of days between two dates, and allow me to enter the dates.

GitHub Copilot got it right on the first try.

I tried a more advanced test project.  It required a bit more hand-holding.

It wasn’t perfect.  Sometimes I would give it instructions and it wouldn’t understand my instructions.  Sometimes it would write code to do something I didn’t need done.  It was compelling enough, though, for me to try it on a real-world use case.

I tried it on this new project.  I took 1/7 of the project (with very strict requirements) and I told the AI what I needed it to do.  The AI wrote some code, I edited it (in conjunction with the AI) for about an hour, and I tested it.

It worked.

So I took another 1/7 of the project.  Same result.

The first 2/7 were code I could’ve written, so while I was impressed, and it definitely did save time, it wasn’t groundbreaking.

I did part 3 of 7.  This part requires capabilities I don’t have.

Not only that, but it’s also the most complex part of the project.

Once again, I know what I want, but I don’t know how to make it work.  Even down to the “import” statements.

It took just over 4 hours.

The first two nights after using GitHub Copilot, I could hardly sleep.  I told everyone about it.  My Italian tutor even knows about Github Copilot.

In total, we expected the work to be done in 60 hours.    It was completed in 11.

Github Copilot is my perfect compliment.  It knows how to code, but it doesn’t know what to code.  It needs the oversight of someone who knows enough about coding to be dangerous, but not enough to be good.

It’s so good at writing code that sometimes I can hardly read the code it writes.  It writes code that is far more advanced than I could ever write.

But it needs to be told what to write.

It doesn’t understand the bigger picture.

It doesn’t create the idea.

It doesn’t understand how the code solves a customer problem.

A senior developer wouldn’t have as transformational an experience as I am having.  It can’t do the really hard stuff that my team focuses on.  It’s a lot less impressive when you know all the ins-and outs of coding.  Maybe a senior developer saves 10% or 20% of their time with this.

But I’m no senior developer.  I’m just a guy who can hack his way through.

This takes me from writing requirements to building prototypes.   It allows us to iterate faster.  It allows us to build even better products.  I’ve already started dreaming about all the ways this type of technology can be used.

The first few nights after I started using it, I couldn’t sleep.

What would a tool like this do to most junior developers?   At least right now, GitHub Copilot doesn’t replace a senior developer, but it definitely gives junior developers and indie hackers like me superpowers.  How might this change the job market for junior developers?

What if we could lower the cost of development projects by 5X?  What if we could lower the cost by 10X?

What if complex automation could be fast and easy?

I imagine this is what it felt like to use the internet for the first time.

 

Featured image credit DALL-E with the following prompt: An image of a computer flying an airplane. The image is taken from the perspective of the copilot. It’s a sunny day outside, and the computer is happy to be flying. It’s even wearing a pilot’s uniform. Make the image wide screen.  The image should be photorealistic and taken from the perspective of the copilot aiming the camera to the side to the pilot, who is a computer, like a front-seat passenger in a car taking a picture of the driver. The computer (pilot) should have its head turned 90 degrees toward the camera.

05 Jan 2024

GitHub Copilot

Ever since I got really interested in technology, I’ve wondered what it was like for the early tech pioneers to use a computer for the first time.  What sort of magic did they feel?

I feel similarly about the internet.  Story after story of people remembering the first time they used the internet.  Those times created lots of great companies.  Those people just seemed to know that the internet would be huge.

I don’t remember the first time I used the internet.  I remember the first time I remember using the internet, but it wasn’t special or impressive.  My pre-ten-year-old-self thought it was dysfunctional.  I remember it was dial up.  It was slow.  There wasn’t much to do.  I never used the Yellow Pages to find contact information, for example, so I didn’t know how much better the internet was.

Now, I have my own version of that story.  It starts 4 years ago.

Four years ago, just over a year into starting my company, I hired my first developer.  I’d written code for several projects, but I wasn’t a coder.  It wasn’t something I was good at; it was something I had to do if I wanted to make money.

There was an enormous learning curve.  What’s more, none of that had to do with writing software that actually solved a customer problem.   It all was the work you did once you solved the customer problem.

I was great at logic.  I was great at knowing what I wanted the code to do.  I was terrible at actually writing the code.

I remember the night I learned about database pagination.  I had no idea that some databases are divided into “pages,” and, in order to get all the necessary data, you needed to scan each page.  It seems simple when you put it like that, but I assumed a database naturally scanned all the data.

I remember the day I learned how to connect a button to code in building a mobile app.  I also remember re-learning that same technique just a few weeks ago.  It was easy for me to code what the button should do, but it was difficult for me to connect the button to the code.

I remember the night I learned about the importance of programming breaks in for website scrapers.  Once, for learning purposes, I used BeautifulSoup (another tool I was bad at and needed to learn) on my Macbook to scrape the entire Yellow Pages.  I set the scraper to start, went on a date, returned from the date, and found the scraper did work and now was no longer working.

In the troubleshooting process, I navigated to their website.  It was down.

That was also the day I learned about website DDOS-ing.  It was also the day I was never permitted to access the website from my apartment or computer again.

All these things are little nuances that I learned the hard way.  Even a moderately experienced programmer would know this, but I didn’t.

All I knew was logic and what I wanted the code to do.

Everything else was difficult.

So, just over a year into my entrepreneurial career, I hired my first developer, Jothi, to help out.  He immediately upscaled our technology, fixed bugs I’d written, instituted Github, added automated testing, and made us a real technology firm.

He also told me that I was not allowed to code anymore.

My job was relegated to running the business and writing requirements for him.  I would tell him what I wanted, and he would write the code to build it.

That process worked exceedingly well for the last 4 years.  Our clients, complexity, scale, and impact have multiplied.

I wrote the first version of the Lede AI code from scratch.  It took 6 weeks to go from 0 to production.

The first version had a dozen or so code files.  The magic of the Lede AI code existed in one of those dozen files.

The file was called “write_one_article.py” and I still remember putting it together.  It took me 3 days to write the code to write 1 football article.   I still look back on those 3 days as a magical 3 days in my career.

The other 5 weeks and 4 days was spent writing all the code you need to write so you can write one article.

We, essentially, made no changes to “write_one_article.py” for the past 4 years.  Maybe small tweaks here and there, but nothing major, until this past quarter.  The development team has made changes to every single other file, and added quite a few more, since then.

What’s that tell me?

There’s so much other stuff that goes into making the magic work.  Our method for writing one article was so unique.  It was so creative.

It was so simple.

It was so human.

Everything else was so robotic.  It was creating data structures, then making sure it flowed properly.  It was outputting the articles in an easy-to-use way.  It was rudimentary data science.  It was stuff that needed to happen so you could write an article, but it was hardly magic.

Recently, we expected our developers to use about 60 developer-hours to automate a task.

About a month before the project start, I stumbled upon Github Copilot.  It’s an AI developed by Open AI in conjunction with Microsoft-owned Github.  You tell it what you want, and it writes code.

I started a test project.

The objectives of the test project were to calculate the amount of time Miranda and I have been digital nomads.  It seems simple enough, but I haven’t written code in several years.

Within 2 minutes, the project was done.  More importantly, it used methods that I didn’t know how to use.  I told the AI to write a method that calculates the number of days between two dates, and allow me to enter the dates.

GitHub Copilot got it right on the first try.

I tried a more advanced test project.  It required a bit more hand-holding.

It wasn’t perfect.  Sometimes I would give it instructions and it wouldn’t understand my instructions.  Sometimes it would write code to do something I didn’t need done.  It was compelling enough, though, for me to try it on a real-world use case.

I tried it on this new project.  I took 1/7 of the project (with very strict requirements) and I told the AI what I needed it to do.  The AI wrote some code, I edited it (in conjunction with the AI) for about an hour, and I tested it.

It worked.

So I took another 1/7 of the project.  Same result.

The first 2/7 were code I could’ve written, so while I was impressed, and it definitely did save time, it wasn’t groundbreaking.

I did part 3 of 7.  This part requires capabilities I don’t have.

Not only that, but it’s also the most complex part of the project.

Once again, I know what I want, but I don’t know how to make it work.  Even down to the “import” statements.

It took just over 4 hours.

The first two nights after using GitHub Copilot, I could hardly sleep.  I told everyone about it.  My Italian tutor even knows about Github Copilot.

In total, we expected the work to be done in 60 hours.    It was completed in 11.

Github Copilot is my perfect compliment.  It knows how to code, but it doesn’t know what to code.  It needs the oversight of someone who knows enough about coding to be dangerous, but not enough to be good.

It’s so good at writing code that sometimes I can hardly read the code it writes.  It writes code that is far more advanced than I could ever write.

But it needs to be told what to write.

It doesn’t understand the bigger picture.

It doesn’t create the idea.

It doesn’t understand how the code solves a customer problem.

A senior developer wouldn’t have as transformational an experience as I am having.  It can’t do the really hard stuff that my team focuses on.  It’s a lot less impressive when you know all the ins-and outs of coding.  Maybe a senior developer saves 10% or 20% of their time with this.

But I’m no senior developer.  I’m just a guy who can hack his way through.

This takes me from writing requirements to building prototypes.   It allows us to iterate faster.  It allows us to build even better products.  I’ve already started dreaming about all the ways this type of technology can be used.

The first few nights after I started using it, I couldn’t sleep.

What would a tool like this do to most junior developers?   At least right now, GitHub Copilot doesn’t replace a senior developer, but it definitely gives junior developers and indie hackers like me superpowers.  How might this change the job market for junior developers?

What if we could lower the cost of development projects by 5X?  What if we could lower the cost by 10X?

What if complex automation could be fast and easy?

I imagine this is what it felt like to use the internet for the first time.

 

Featured image credit DALL-E with the following prompt: An image of a computer flying an airplane. The image is taken from the perspective of the copilot. It’s a sunny day outside, and the computer is happy to be flying. It’s even wearing a pilot’s uniform. Make the image wide screen.  The image should be photorealistic and taken from the perspective of the copilot aiming the camera to the side to the pilot, who is a computer, like a front-seat passenger in a car taking a picture of the driver. The computer (pilot) should have its head turned 90 degrees toward the camera.