When AI is used properly, it’s doing one of two things:
1) Making non-controversial fixes that save time and take cognitive load off the developer. The best example is when code completion is working well.
2) It’s making you smarter and more knowledgeable by virtue of the suggestions it makes. You may discard them but you still learn something new, and having an assistant brainstorm for you enables a different mode of thinking - idea triage - that can be fun, productive, useful and relaxing. People sometimes want completion to do this also, but it’s not well suited to it beyond teaching new language features by example.
The article makes an interesting assertion that AI tools “fail to scale” when the user has to remember to trigger the feature.
So how can AI usefully suggest design-level and conceptual ideas in a way that doesn’t require a user “trigger”? Within the IDE, I’m not sure. The example given of automated comment resolution is interesting and “automatic”, but not likely to be particularly high level in nature. And it also occurs in the “outer flow” of code review. It’s the “inner flow” that’s the most interesting to me because it’s when the real creativity is happening.
"Grief, I've learned, is really just love. It's all the love you want to give, but cannot. All that unspent love gathers up in the corners of your eyes, the lump in your throat, and in that hollow part of your chest. Grief is just love with no place to go."
Jamie Anderson
Felix Revello de Toro - Woman, 1965
This is going to sound ridiculous, but thinking about time as a 4th dimension helped me. The past never disappears from our universe, it's just the previous page of the book we're reading, and always there just a short distance away along the axis.
This helped me reframe the loss from "they're gone forever" to "they're alive, in the past".
It's now an inaccessible location to you, but the past exists in no less of a real way than the present moment.
And while that's not the page we're on anymore, that ink never fades. You shared those pages with them.
And if it occurs to you to think this way before they're gone, then I hope it also encourages you to fill those pages with the happiest times together that you still can.
You've discovered what many other people have: The cloud is the new time-share mainframe.
Programming in the 1960s to 80s was like this too. You'd develop some program in isolation, unable to properly run it. You "submit" it to the system, and it would be scheduled to run along with other workloads. You'd get a printout of the results back hours later, or even tomorrow. Rinse and repeat.
This work loop is incredibly inefficient, and was replaced by development that happened entirely locally on a workstation. This dramatically tightened the edit-compile-debug loop, down to seconds or at most minutes. Productivity skyrocketed, and most enterprises shifted the majority of their workload away from mainframes.
Now, in the 2020s, mainframes are back! They're just called "the cloud" now, but not much of their essential nature has changed other than the vendor name.
The cloud, just like mainframes:
- Does not provide all-local workstations. The only full-fidelity platform is the shared server.
- Is closed source. Only Amazon provides AWS. Only Microsoft provides Azure. Only Google provides GCP. You can't peer into their source code, it is all proprietary and even secret.
- Has a poor debugging experience. Shared platforms can't generally allow "invasive" debugging for security reasons. Their sheer size and complexity will mean that your visibility will always be limited. You'll never been able to get a stack trace that crosses into the internal calls of the platform services like S3 or Lambda. Contrast this with typical debugging where you can even trace into the OS kernel if you so choose.
- Are generally based on the "print the logs out" feedback mechanism, with all the usual issues of mainframes such as hours-long delays.
Part of the issue here is defining what it means to “achieve”. I was a gifted child and graduated at the top of my fancy Ivy League university. Did I go on to conquer the world? No. And many days I stress and feel bad about that. But that’s mostly when I allow myself to judge myself by the external validation system of society. Society values a big bank account or fancy awards which is fine. A happy life spent with family, spent learning and pondering lots of different things rather than focused specialization, spent achieving enough to live well but not make the Forbes rich list or a Nobel prize are considered external failures to live up to potential. But it is a happy life and in the end that is all that matters. It isn’t easy to tune that out and be thankful for what you have but it is vital to my sanity.
I have children now who are very smart and capable. If they want to conquer the world that’s great. But what I really try to reinforce is that they should find a life that makes them happy and try to ignore the sentiment that they MUST be a Supreme Court justice or a unicorn CEO if that isn’t what their soul tells them.
You may like the Japanese phrase 一期一会 (ichi-go-ichi-e). To me it means that you should cherish each relationship and encounter, regardless of whether you know it will last a long time or not. You may never get the chance to experience that particular relationship again. I actually learnt this word firsthand from a man that it applies to, an middle-aged Japanese guy who was volunteering with kids near where I live. We got along well, laughed and ate, but he went back home and I will never see him again. But that doesn't diminish the worthiness of experiencing of getting to know him and enjoying time together, because all things have their place. I'm writing this as much for me as for you or anyone else here. Good night
My personal advice would be to follow the Ira Glass quote:
> Nobody tells this to people who are beginners, I wish someone told me. All of us who do creative work, we get into it because we have good taste. But there is this gap. For the first couple years you make stuff, it’s just not that good. It’s trying to be good, it has potential, but it’s not. But your taste, the thing that got you into the game, is still killer. And your taste is why your work disappoints you. A lot of people never get past this phase, they quit. Most people I know who do interesting, creative work went through years of this. We know our work doesn’t have this special thing that we want it to have. We all go through this. And if you are just starting out or you are still in this phase, you gotta know its normal and the most important thing you can do is do a lot of work. Put yourself on a deadline so that every week you will finish one story. It is only by going through a volume of work that you will close that gap, and your work will be as good as your ambitions. And I took longer to figure out how to do this than anyone I’ve ever met. It’s gonna take awhile. It’s normal to take awhile. You’ve just gotta fight your way through.
That is, code a lot of stuff. And, while doing so, pay attention to how you feel. Sometimes it'll be exhilarating, or you'll be proud of what you done. Other times, you'll be confused, or afraid, or pissed off about how something you wrote earlier is now unmaintainable or hard to make work. This is how you actually learn the insights behind all the dogmas, rules of thumbs, heuristics, good practices, etc. That's how you develop taste - that intuition which will help you write good code.
Just in my own experience, after having started a very small company several years ago that is moderately successful for me, nothing Hacker News would care about in the million and billion scheme, but it pays my mortgage and gives me a comfortable life, I found that you will naturally fall into wasting time during work to relax if you ignore it at the expense of said work.
Granted, this time doesn't offer much benefit in the course of the working day, personally I'd find if I started work early, that sometimes the meat of my day really wouldn't be productive until later, even though I had been at work for several hours before productivity really took off.
When I had my second son and my wife stayed home for three months, I found myself spending most mornings going to the park with my children and wife and just enjoying the first part of my day with them. Each day I did this I came into work in the afternoon with a lot more energy and focus and finished the same amount of work, or more, plus I was able to enjoy my family and felt more fulfilled overall.
If I had started my day rolling groggily into the shop with coffee in hand and heroically pounding away, it would have taken me those same hours just to wind up into productivity, and my day would feel more tiring and unfulfilling in the end.
Honestly, 7 years in now, I've found I have a natural rhythm to my day, hours I'm focused, hours I'm tired, hours I just don't care and want to do something else, and if I try to work outside of this rhythm, it doesn't make me any more productive, just busy on my own time and needlessly braggadocios towards others when I can say I "worked" 16 hours yesterday when really only 5 hours had anything get done.
This is my own experience though, and to each their own. I tried all the productivity hacking and life hacking and it seemed for me, at the end of the day, that finding time to not work did more to help my work than working for the sake of work.
Applicant Doctor: "They're double membrane-bound organelles found in all eukaryotic organisms, commonly between 0.75 and 3μm in diameter, that generate most of the cell's supply of adenosine triphosphate"
Recruiter: "No. They are the powerhouse of the cell".
1) Making non-controversial fixes that save time and take cognitive load off the developer. The best example is when code completion is working well.
2) It’s making you smarter and more knowledgeable by virtue of the suggestions it makes. You may discard them but you still learn something new, and having an assistant brainstorm for you enables a different mode of thinking - idea triage - that can be fun, productive, useful and relaxing. People sometimes want completion to do this also, but it’s not well suited to it beyond teaching new language features by example.
The article makes an interesting assertion that AI tools “fail to scale” when the user has to remember to trigger the feature.
So how can AI usefully suggest design-level and conceptual ideas in a way that doesn’t require a user “trigger”? Within the IDE, I’m not sure. The example given of automated comment resolution is interesting and “automatic”, but not likely to be particularly high level in nature. And it also occurs in the “outer flow” of code review. It’s the “inner flow” that’s the most interesting to me because it’s when the real creativity is happening.