Hey John, I hope you are well. I am really passionate about CS (specifically Software Engineering) and I want to pursue a career in it. But I can't help but be a bit concerned about the future availability of coding jobs due to Al (chatgpt4 and stuff). I understand it's hard to predict how things will be in the next 10-15yrs, but my main concern is that I may be putting in all this hard work for nothing. I'm concerned Al will make my future job(s) obsolete before I even get it. Any thoughts on this?
If you build full "product skills" and use the best tools for the job, which today might be hand coding, but later may be Al guiding, you will probably be fine.
I see....by "product skills" do you mean hard and soft skills?
Software is just a tool to help accomplish something for people many programmers never understood that. Keep your eyes on the delivered value, and don't over focus on the specifics of the tools.
Source: https://twitter.com/ID_AA_Carmack/status/1637087219591659520
Saw the above discussion on twitter and it got me thinking with advent of ChatGpt4 and Github Copilot X, what can I do to not get negatively affected by this change.
What are the various skills referred to as "product skills" mentioned in the above discussion and how should we go about developing them?
Saw the above discussion on twitter and it got me thinking with advent of ChatGpt4 and Github Copilot X, what can I do to not get negatively affected by this change.
I'm not afraid of AI at all when it comes to replacing software engineers, and you shouldn't be either. In 95%+ of cases, the best software engineers I have worked with had a massive arsenal of useful skills on top of raw coding ability. This is because building quality software is an extremely ambiguous and complex process that only gets more multi-faceted as companies and user volume scale up.
Once you move past the scale of an early-stage startup, the engineering part of shipping software includes more of the following:
I can easily come up with 10+ more things, and as you can see, all of these important behaviors are non-coding.
All of this reflected in my career as well: By my later days across Meta and Robinhood as a tech lead, coding was maybe 20% of my day. If a robot is going to abstract that 20% away from me, I don't really care - I still have this whopping other 80% to add value to my team.
For a great resource on how you can also make this behavior shift and be safe from the robots, I recommend this video: This Is How You Become A Layoff-Proof Software Engineer
What are the various skills referred to as "product skills" mentioned in the above discussion and how should we go about developing them?
My interpretation of "product skills" is just reading it as is: Skills that improve the product.
Of course, writing code is one of the most straightforward ways to improve a software product. But it's far from the only way to do so:
A very accessible way that anybody can improve their product skills is to build side projects, which I talk about in-depth in this video: How To REALLY Level Up Your Coding Ability With Side Projects
I have shipped ~30 apps to Google Play with 3 million+ users combined, and having to own each of those products end-to-end helped me build up a lot of non-coding product skills like:
Lastly, here's a good thread around how to develop into an exceptionally well-rounded software engineer: "What are the Core skills a SDE should be consistently developing?"
Hard work is never wasted if it is used to build good habits.
The "product skills" Carmack is talking about is basically capital D "Design", specifically Human-Centered Design since he's not talking about art or philosophy but something with utility. AI is probably centuries away from figuring out what we want, value, and find aesthetically pleasing. That is my guess 🤷♂️
In case you're wondering what I mean by "capital D Design": https://start.uxdesign.cc/