“The software engineering skill that's valuable is solving the problems—not writing the code.”
Awesome post, Logan! I’ve been thinking about this quote above, which I think is true for other functions as well: product, design, data, etc.
I’m wondering how all these functions change when, at their core, they’re all problem solvers, and a growing portion of the role is automated by AI. This is already true in many cases: a really great designer can pick up a lot of product work, a technical pm can straddle the eng / prod divide, and a great engineer can piece together a solid roadmap.
I’m really curious how these functions evolve over the next few years - would love to read a post on this topic.
Thanks again for sharing your thoughts, and especially grateful for the GitHub ML learning resource. 🙏
Thanks Reid! At this point, I don’t think anyone really knows how the progression of AI will shift a lot of these jobs or the time horizon for when it’ll take place. AI is still very young with a lot of unknowns. This is definitely something I’ll share more about as I learn more about it myself.
Enjoyed this post, Logan. I think you’re right on the money here. The thing that’s always mattered most is thinking and problem solving. Whether it’s programming or writing, that’s the skill we should be focusing on cultivating.
this is by far the most interesting and realistic post about Devin I've read so far. What you have pointed out in terms of what SE is and how it could be achieve is true and also voiced by many seniors.
I've heard this many times and it makes me think many universities aren't teaching CS properly (and probably many other majors for that matter).
I found my education to be beneficial but I definitely learned way more from doing things. Not sure how different that would have been without the foundation I had from my degree
Obe thing that i understood throuthough my programming years is not tought in university. And randomly / never mentioned at all. Programming is a linguistic activity. Translating of customer representation of a problem to a representation understood by computer systems.
Yes it involves technical knowledge, but the core essence is understanding the core issue to solve and express the solution in such a way that it works.
the branch of science and technology concerned with the design, building, and use of engines, machines, and structures. The engineering definition that needs major revisions when it comes to software “engineering “.
In a digital world one needs to redefine engines, machines, and structures. What is the engine of a software project? Is it the calculation Subsystem, the business rules, the I/o manager? All of it? Then what is the machine? Is that the business problem the software is solving? And structure is nebulous at best in a digital world. What part is Devin good at? It’s a pattern matching tool. All of engineering work is creative at its core. Devin doesn’t create. At best Devin is the draftsman that draws the design on paper following the detailed instructions of the engineer. However. Skipping the implementation step as an engineer inevitably makes you a terrible engineer. Lots of learning is had from working actual implementation. So as an engineer. Code. Do lots of it. Forget Devin. And also. Fundamental CS concepts never go out of style. Find a good University and take a few classes.
Excellent piece, this should be compulsory reading for anyone even considering becoming a software engineer. There's so many points I want to respond to, I'll start with one or two.
The most pressing thing here of course is that many software engineers themselves don't understand what they're doing (or need to do). Building solutions. Part of the problem-solving mandate also includes identifying the problem well enough in the first place, and, these days, being able to articulate it well enough to a code-generating LLM. When I started my career as software engineer I insisted (at least to myself) that it also included being a 'Business Analyst', which is traditionally seen as a separate position in the industry.
As I've written in my own work on this topic, as time passes, the tools will handle much more of the mundane, routine and predictable work, leaving us to figure out the more complex ones, ones which can't even be envisaged beforehand in a generalized manner.
"solving the problems" includes specifying the code, which is the set of specific instructions that the machine receives to solve the problem. If AI can do that then it's (at least) partially solving the problem, which makes the fear of developers rational. "repeated code" (e.g. crud apps) already was automated by code generators and frameworks. I'm not an AI doomer, just saying that the argument "focus on problem solving" won't be a good answer in case AI will be able to actually code and deploy entire solutions that are correct given a set of requirements, because in the best scenario a significant part of the developer work will be obsolete, so even if programmers are not replaced there will be less jobs or, maybe there will be more work for solutions on irrelevant problems (=more bullshit jobs).
This write-up is so intuitive and an eye-opener. Being a newbie, I almost thought it is over for my transition into tech when Devin was introduced - I was like, why now! But, understanding how Machine Learning works to an extent and seeing the potential and the import it will have on work-flow if implemented, I was flabbergasted to say the least. Now your write-up is like the icing on the cake. Thanks so much for this piece!
I'm glad you enjoyed it, Godwin! It was specifically written to clarify Devin's impact for those getting into tech/ML who are now incorrectly being told their job won't exist anymore.
Thanks Logan for reminding ourselves what is the most important value of coding (math, science principles, thinking clearly, writing, etc): solving problems to have a positive impact on the world. What would you say is the best way to structure a course in order to focus on learning how to solve real and important problems?
That’s a really question. Fortunately, a lot of CS principles help teach problem-solving skills. The time I see CS course fail to teach problem-solving skills is when they focus too much on a specific language (unless it’s a course on the language, of course). I think the best way to really help these skills sink in is to help others build using them to see why they’re important and valuable while also thinking through problems from beginning to end. Those are my thoughts, at least. What do you think?
I agree. When I'm being an instructor in a course, I usually put a realistic problem at the center and at the beginning of the class, and then I show the tools, concepts and principles that can help to solve the problem. As you said, "thinking through problems from beginning to end".
“The software engineering skill that's valuable is solving the problems—not writing the code.”
Awesome post, Logan! I’ve been thinking about this quote above, which I think is true for other functions as well: product, design, data, etc.
I’m wondering how all these functions change when, at their core, they’re all problem solvers, and a growing portion of the role is automated by AI. This is already true in many cases: a really great designer can pick up a lot of product work, a technical pm can straddle the eng / prod divide, and a great engineer can piece together a solid roadmap.
I’m really curious how these functions evolve over the next few years - would love to read a post on this topic.
Thanks again for sharing your thoughts, and especially grateful for the GitHub ML learning resource. 🙏
Thanks Reid! At this point, I don’t think anyone really knows how the progression of AI will shift a lot of these jobs or the time horizon for when it’ll take place. AI is still very young with a lot of unknowns. This is definitely something I’ll share more about as I learn more about it myself.
Enjoyed this post, Logan. I think you’re right on the money here. The thing that’s always mattered most is thinking and problem solving. Whether it’s programming or writing, that’s the skill we should be focusing on cultivating.
Thanks! I’m hoping AI will allow us to focus on the thinking and problem solving and get some of the other things out of the way.
this is by far the most interesting and realistic post about Devin I've read so far. What you have pointed out in terms of what SE is and how it could be achieve is true and also voiced by many seniors.
Thanks Hesam! An understanding of what actually makes SWEs valuable is super overlooked but very important.
Mostly agree .
One point i would argue about comp science education. I found it was useless. 80% of my education was useless.
By the time i graduated, it was irrelevant. The other 20% were math and phisics. Formal logic and graph theory is math, right.
Otherwise hacking a year after uni gave me more then 4 years of studing.
I've heard this many times and it makes me think many universities aren't teaching CS properly (and probably many other majors for that matter).
I found my education to be beneficial but I definitely learned way more from doing things. Not sure how different that would have been without the foundation I had from my degree
Obe thing that i understood throuthough my programming years is not tought in university. And randomly / never mentioned at all. Programming is a linguistic activity. Translating of customer representation of a problem to a representation understood by computer systems.
Yes it involves technical knowledge, but the core essence is understanding the core issue to solve and express the solution in such a way that it works.
I hope i was able to make my point clear.
the branch of science and technology concerned with the design, building, and use of engines, machines, and structures. The engineering definition that needs major revisions when it comes to software “engineering “.
In a digital world one needs to redefine engines, machines, and structures. What is the engine of a software project? Is it the calculation Subsystem, the business rules, the I/o manager? All of it? Then what is the machine? Is that the business problem the software is solving? And structure is nebulous at best in a digital world. What part is Devin good at? It’s a pattern matching tool. All of engineering work is creative at its core. Devin doesn’t create. At best Devin is the draftsman that draws the design on paper following the detailed instructions of the engineer. However. Skipping the implementation step as an engineer inevitably makes you a terrible engineer. Lots of learning is had from working actual implementation. So as an engineer. Code. Do lots of it. Forget Devin. And also. Fundamental CS concepts never go out of style. Find a good University and take a few classes.
Excellent piece, this should be compulsory reading for anyone even considering becoming a software engineer. There's so many points I want to respond to, I'll start with one or two.
The most pressing thing here of course is that many software engineers themselves don't understand what they're doing (or need to do). Building solutions. Part of the problem-solving mandate also includes identifying the problem well enough in the first place, and, these days, being able to articulate it well enough to a code-generating LLM. When I started my career as software engineer I insisted (at least to myself) that it also included being a 'Business Analyst', which is traditionally seen as a separate position in the industry.
As I've written in my own work on this topic, as time passes, the tools will handle much more of the mundane, routine and predictable work, leaving us to figure out the more complex ones, ones which can't even be envisaged beforehand in a generalized manner.
I'll stop here.
Well put!
"solving the problems" includes specifying the code, which is the set of specific instructions that the machine receives to solve the problem. If AI can do that then it's (at least) partially solving the problem, which makes the fear of developers rational. "repeated code" (e.g. crud apps) already was automated by code generators and frameworks. I'm not an AI doomer, just saying that the argument "focus on problem solving" won't be a good answer in case AI will be able to actually code and deploy entire solutions that are correct given a set of requirements, because in the best scenario a significant part of the developer work will be obsolete, so even if programmers are not replaced there will be less jobs or, maybe there will be more work for solutions on irrelevant problems (=more bullshit jobs).
Finally somebody said it:))) or wrote it in this case:)
It's important and overlooked!
This write-up is so intuitive and an eye-opener. Being a newbie, I almost thought it is over for my transition into tech when Devin was introduced - I was like, why now! But, understanding how Machine Learning works to an extent and seeing the potential and the import it will have on work-flow if implemented, I was flabbergasted to say the least. Now your write-up is like the icing on the cake. Thanks so much for this piece!
I'm glad you enjoyed it, Godwin! It was specifically written to clarify Devin's impact for those getting into tech/ML who are now incorrectly being told their job won't exist anymore.
Thanks Logan for reminding ourselves what is the most important value of coding (math, science principles, thinking clearly, writing, etc): solving problems to have a positive impact on the world. What would you say is the best way to structure a course in order to focus on learning how to solve real and important problems?
That’s a really question. Fortunately, a lot of CS principles help teach problem-solving skills. The time I see CS course fail to teach problem-solving skills is when they focus too much on a specific language (unless it’s a course on the language, of course). I think the best way to really help these skills sink in is to help others build using them to see why they’re important and valuable while also thinking through problems from beginning to end. Those are my thoughts, at least. What do you think?
I agree. When I'm being an instructor in a course, I usually put a realistic problem at the center and at the beginning of the class, and then I show the tools, concepts and principles that can help to solve the problem. As you said, "thinking through problems from beginning to end".