3 ms·
> Software engineering is more that knowing the API for product A or B. You're confusing software engineering for computer science. Software engineering on av
by heliodor 6y ago
> Software engineering is more that knowing the API for product A or B.
You're confusing software engineering for computer science.
Software engineering on average is indeed knowing the APIs of a few frameworks or products well.
- mesaframe 6y agoNo, that's not software engineering.
- NegatioN 6y agoI'm inclined to agree with you, but I'm guessing OP is referring to "craftsmanship in software engineering", which is probably a mix of both computer science and other habits formed over many years of conscious focus on improvement? One of those habits could be how to generally solve a problem, versus how to just duct-tape together a solution. If we don't understand something from first principles, we don't really understand it in my opinion. I'm lucky to mostly work with people who're both good at their craft, as well as good at "getting the job done". For me personally it would be frustrating to be subjected to massive tech-debt generation and sub-optimal solutions just because the team is unwilling to step outside a walled garden.
- scarface74 6y agoIf we don't understand something from first principles, we don't really understand it in my opinion. How many modern developers have written a single line of assembly yet alone written production assembly code? How many have even written C or used any other language that doesn’t have garbage collection. Everyone who started working on a technology before abstractions make it more accessible think that you really need to understand deeper to be effective. I had to get out of that mode of thinking myself as I’ve been in the software field either as a hobbyist or professionally for 35 years and I did start off writing assembly as a hobbyist (and some as a professional) and spent a decade writing C. But then, I also see the same attitude from old school infrastructure guys now that I live part of my life on that side of the world when they say I really need to understand the “fundamentals” of IT and I can’t possibly be effective as a consultant if my only experience standing up infrastructure is writing a yaml file. At the end of the day not everyone needs to understand the fundamentals to get their work done and create business value no more than your software as a service CRUD developer needs to know how to reverse a binary tree on the whiteboard.
- deleted 6y ago[deleted]
- throw14082020 6y agoI believe you are confusing software engineering with programming
- mongol 6y agoI would rather say that that is what software engineers do, not what software engineering is. I would describe software engineering as a professional discipline, which involves translating requirements to a programmatic system model, writing code, knowing how to test it, build it, deploy it and support it, etc.
- lolinder 6y agoIf what you mean by "on average" is that that is what most people calling themselves software engineers do, that may be true. But framework knowledge is to software engineering what knowledge of tools is to civil engineering. If you're building a dog house or even a shed, that'll be plenty. But I've seen developers try to take a knowledge of framework alone and attempt to build large-scale, business-critical applications, and they tend to come crashing down around their heads.
- scarface74 6y agoCounterpoint: I’ve seen plenty of “smart people” who could reverse a binary tree on a whiteboard in their sleep, wasted hours writing a maintaining their own bespoke frameworks because they thought that their problem was a special snowflake and couldn’t deliver business value that met customer’s needs to save their life. Part of my role at my last two companies was to know what to outsource and what to build internally and when to outsource the grunt work - ie decide what “the undifferentiated heavy lifting” was.
- lolinder 6y agoAbsolutely yes. I don't think that raw computer science is what most software engineers need. But it's also a lot more than framework knowledge. What is missing in most developers' educations is the actual engineering. If civil engineering is applied physics, then our discipline is applied computer science. A physicist might be a terrible civil engineer. Plenty of computer scientists are terrible software engineers. But that no more means we need to neglect the computer science then it means that civil engineers should neglect physics.
- crispyambulance 6y agoThese building analogies only go so far, I think. There are many different ways that people master a profession, and sure, in the best of all possible worlds people would learn under the guidance of expert mentors who supply "guard-rails" for the work of people they mentor. In reality, however, that's not always possible. Many of us don't have the benefit of a safety net or benevolent deity, we just wing it, fail, learn, and try again. It's not always pretty, but it works, eventually. Someone who is a Dunning-Kruger poster-boy one year may very well become your MVP a couple years later. If people don't push the limits of their capabilities (which often means failure), they'll not be able to grow.
- zmmmmm 6y ago> Software engineering on average is indeed knowing the APIs of a few frameworks or products well. I actually would have said that is the main thing that distinguishes a "programmer" from both a "computer scientist" and a "software engineer". Programmers are the tradespeople who know the APIs. Computer scientists know the science of the algorithms. Engineers know the design principles and systematic methodologies to apply them in practice successfully (independent of specific APIs). Of course, all this is blurred in practice.