I'm pointing this out because people are acting like he's a bit naive. But Moxie has built a very successful company, without the need for VCs, and the tech is used by many big tech companies. Several use the signal protocol. It's a successful nonprofit building open source software.
If your focus is to make large amounts of money, maybe his isn't the best advice. But if you're trying to make a high quality product, then I think it is good advice. It depends which you prioritize: profits or money. Obviously you can have both, but when push comes to shove, will you sacrifice the product for profits or will you sacrifice profits for the product?
Personally, I believe as engineers our focus should be on the product. The profits are the domain of the business people. The contention we have is good, it creates balance. If engineers overly dominate products roll out too slow and only appeal to other engineers. If business people overly dominate we sell broken garbage. Neither situation is great but which side of the spectrum would you like to be on?
[note] sure I know it's popular to hate on Signal but let's be real, this is technical nerdy shit we're arguing over (see the too much engineering side). Not something that's actually broken
kiba 6 hours ago [-]
I don't believe that 'profit' are the domain of business people anymore than astronomy is about telescope.
You need business skills to run a non-profit as much as you need to run a "for-profit" business or any organization really. Your goal may not to be "to make a profit", but cost control is essential to any organization.
Really, it's a balance of priorities.If you focus too much on the $$$, you risk destroying the business and doing a disservice to your customers. You also have a responsibility to your employees who depend on your business for their livelihood, and so forth.
kingkongjaffa 5 hours ago [-]
> Personally, I believe as engineers our focus should be on the product. The profits are the domain of the business people.
This is the dumbest idea in tech. Please don’t listen to this advice. If you’re just starting your career I’m begging you not to laser focus on coding widgets better for the sake of it.
Care about your customers and what problem they are trying to solve and be involved in figuring out how to make solving those problems a profitable endeavour.
All code is throwaway, all code is worthless, solving real needs, wants and pain points for customers is the real source of value.
bluGill 2 hours ago [-]
> All code is throwaway,
It could be, but it cost my company a billion dollars over almost 10 years (not exact numbers, but close enough) to rewrite our current product from scratch. If you work on trivial projects you can throw away code at will. However for a lot of projects the cost to rewrite is so high that the business cannot afford to throw away code that works. The business needs new features so they can sell upgrades and make more money. The whole reason they were willing to pay that billion dollars over a decade is the old codebase was bad enough that adding new features became expensive and hard - the rewrite was an investment to make adding more features cheaper in the long run.
Which is why engineering a good product is important. People who make the product technically good pay for themselves in the long run when the business gets an idea. This is very important to business as well.
yladiz 5 hours ago [-]
This is as naive as you’re arguing the parent is. I agree you need to care about customers first, and make sure you’re solving their problem, but you absolutely do need to care about the code and if you treat it as always throwaway you can logically get to a justification for vibe coding. Of course you can get far witn these approaches, but they lead to unmaintainable messes which ultimately make it hard or impossible to actually do the thing you want: to deliver customer value.
makeitdouble 3 hours ago [-]
I'd argue if you care about your customers, vibe coding will be a no-go. Most of us aren't against it not on principle, but because it's just too risky or too inefficient to bring real value in most applications.
If someday it produces messy but actually reliable code my opinion will change, but at this point, it's just too early (not saying it will ever work, but one can hope)
shawabawa3 3 hours ago [-]
> If you’re just starting your career I’m begging you not to laser focus on coding widgets better for the sake of it.
How is that focusing on the product?
Focusing on the product means solving problems for your customers, exactly what you said they should be doing
You're both arguing for the same thing
crossroadsguy 4 hours ago [-]
Anyone staring your career: maybe start focusing on making money and potentially lots of it from the very beginning. Because unless you are moxie or had an “exit” (he had an exit) you are doing it for the money. Don’t get distracted in the brouhaha of industry-speak and career-speak.
resize2996 23 minutes ago [-]
No? I could do several other things if I just wanted money. I do tech work because that is what I am called to do.
bee_rider 51 minutes ago [-]
I don’t really see how you guys are in opposition. They said to focus on the product, not to focus on the code.
The engineer’s job is to care deeply about the technical aspects of doing well by the customer.
spjt 5 hours ago [-]
Doesn't explain why the biggest, most profitable tech companies also seem to have the most user-hostile products. I guess maybe the whole "The users and the customers are not the same people" thing...
gchamonlive 4 hours ago [-]
You switched the object of focus from profit to customers as if they were interchangeable. You are also using code and product/tech interchangeably, forgetting that there is a lot of effort put into architecture, design and usability.
Caring about the customer is caring about the product. Caring solely about profit is what enshitifies products.
skeeter2020 3 hours ago [-]
I don't get why you feel your positions are so far apart. Caring about customers and focusing on the product at their most different seem to be perspectives on the same thing, and then only if a really squint.
mystified5016 58 minutes ago [-]
Yes, this is the exact opposite viewpoint parent was talking about. You're taking the MBA stance here.
59 minutes ago [-]
detourdog 4 hours ago [-]
I think you touch on a key point. Many people assume that developing tech involves VCs. My guess is that one can set technical advancement or market share gains.
The original SV was focused on technical advancement and the current generation sees the technology as the vehicle to their goals.
NL807 10 hours ago [-]
why do people hate on signal?
guappa 10 hours ago [-]
- They claim reproducible builds, but use a binary blob… which invalidates the whole concept.
- They claim full open source but for several years they did not release the server.
- They claim federation is impossible… yet matrix has it.
- They claim openness but are actively hostile to linux distributions and f-droid.
- Related, getting signal from an app store is no more secure than getting any random proprietary app.
- There's a lot of allegations that they don't need VCs because they have backing from the USA army.
pona-a 4 hours ago [-]
There also was this one controversy they had with F-Droid. To be on F-Droid, you have to let them build the binaries, because otherwise they'd be shipping untrusted blobs. They demanded an exemption and got promptly denied, so there's that. Their official client also uses Google's push notification services, breaking on deGoogled ROMs. And to top that off, their Git is updated in giant commits like "Released verison X", which makes independent code review challenging. And they require a phone number, which goes against some people's threat model.
maeil 8 hours ago [-]
> - They claim openness but are actively hostile to linux distributions and f-droid.
Yet take zero action against TeleMessage.
Ragnarork 5 hours ago [-]
> - There's a lot of allegations that they don't need VCs because they have backing from the USA army.
Citation needed. Strange allegations (and from whom?) when the pentagon itself has discouraged using Signal in an official capacity...[0]
> The Pentagon's internal watchdog criticized a former official's use of the Signal app in 2021, calling it a breach of the department's "records retention policies" and an unauthorized means of communicating sensitive information.
> "Signal is not approved by the DoD as an authorized electronic messaging and voice-calling application," the report asserted, adding that "the use of Signal to discuss official DoD information does not comply with Freedom of Information Act requirements and DoD's records retention policies."
pphysch 26 minutes ago [-]
The highest military council in the country uses Signal to communicate. I think violating FOIA is probably part of the appeal. Or they use that modified Israeli client that stores messages to address those concerns.
Vinnl 3 hours ago [-]
> - They claim federation is impossible… yet matrix has it.
I believe the claim was that it's hard to adapt to changing markets and be federated [1]. Comparing Signal's market share to Matrix's is obviously not a direct cause-and-effect, but Matrix hasn't yet proven that you can get mass adoption that way.
> - They claim openness but are actively hostile to linux distributions and f-droid.
I'm too lazy to find the specific GitHub comment, but IIRC there was a specific list of features they'd need to actively support F-Droid. It is now available in the Guardian Project's F-Droid repository though [2].
If they had good access, why cut the funding? To subvert the security product where they actually have backdoor?
guappa 6 hours ago [-]
I mean, trump cut the funding also to the propaganda outlet "Radio Free Europe" and other various propaganda operations. Not everything Trump does makes sense.
bojan 5 hours ago [-]
Radio Free Europe was for 10 years almost the only way to know what's really going on in my country.
I'm forever grateful to them and it horrifies me that their mission ultimately has failed.
pphysch 22 minutes ago [-]
"Russia Today was for 10 years almost the only way to know what's really going on in my country".
I'm only being half-sarcastic. RT will cover factual issues about Western countries that the state-endorsed media won't. But they're still disinformation outlets that should be consumed with a massive grain of salt, just like RFE and RFA.
immibis 6 hours ago [-]
It makes sense when viewed through the lens that he's a foreign agent.
ForHackernews 5 hours ago [-]
(if only HN had eye-roll reacts)
Radio Free Europe was/is not a propaganda outlet any more than the BBC is a propaganda outlet (in fact, this is why Trump hates it). To an authoritarian, free press looks like propaganda.
Showcasing what makes your society great is propaganda only inasmuch as it casts the failures of other models into sharper relief. Liberal democracy is not a propaganda trick, it's just better.
guappa 5 hours ago [-]
Have you ever listened to it? I have.
itishappy 5 hours ago [-]
Do you see many stories critical of US foreign policy?
amendegree 3 hours ago [-]
I mean… yes the BBC is very much a propaganda outlet as is every single modern media organization. People who claim their media isn’t propaganda have already been brainwashed.
guappa 3 hours ago [-]
BBC right before the brexit vote was like: "now we listen to this well spoken university professor tell us why brexit will fix all our problems", and then, to offer balanced views: "we will listen to this random person who likes europe and we picked from a street 3 minutes ago so they don't have a nice coherent speech and will sound like they're stupid"
ForHackernews 5 minutes ago [-]
I'm sorry but this is such a midwit take. Your uber-skepticism of "every single modern media organization" does not make you a savvy free-thinker, it just makes you more likely to fall down some gibbering conspiratorial rabbit hole on youtube or tiktok.
Yes, media entities have biases and viewpoints; no, that doesn't make them propaganda organs.
jonstewart 5 hours ago [-]
This is a pretty conspiratorial article…
However, widely disseminating an app that supports secure e2e messaging can serve a positive purpose for the CIA in running its agents.
godelski 9 hours ago [-]
See? Mostly nerdy stuff. Like these complaints are weird to put side by side with how we'd critique all the big companies. Its not that we shouldn't critique them (we should) it is that it's weird when we are discussing big tech and act like companies like Signal, Mozilla, ffmpeg, or whatever aren't good models to look up to because they aren't perfect. Because right now the alternative is the status quo.
I mean the critiques are mostly valid but wanted to point out they're mostly technical.
I really wish the server was fully open. I feel like that could actually create a mixed federated ecosystem. At worst be optional, right? I can get where he's coming from (and now Meredith), but I think there's a lot of value in it and they've solved hard problems before. Even just the ideas of mesh nets in local areas could be a real win for privacy and security.
Being a Linux user and signal user for quite some time I'm confused at that critique. What's hostile? That it's electron? I mean that does suck but I've used various open source desktop versions and some TUIs. No real issues so far. What am I missing?
Generally the talk I hear about government money is implications of back doors. Just seems like they are more interested in getting encrypted communications into other people in other countries hands. At least that's my understanding of the mission of the organization that's funding them. They'd want that as secure as possible. Government isn't a single entity. If the complaint is morally taking money from the government, yeah it was a weird move. Kinda seems out of character. But not too crazy. Personally I'm okay if they aren't building weapons and there's no strings attached. My understanding is it's not enough money to justify that.
guappa 9 hours ago [-]
They're not really technical. If you say you do reproducible builds and you don't it's just… dishonesty?
Like selling you no chemical fertilisers vegetables and then using them anyway.
It's hostile because they want you to use their binary build… which you don't know if it corresponds to the source they have online. And can't verify due to the binary blob.
edit: you trust the USA army to not ask any control in exchange for that money? Remember there's no reproducible builds really, and that installing via app store which is linked to an account is very easy to send vulnerable versions to journalists or whistleblowers.
johschmitz 10 hours ago [-]
I never hated on Signal, on the contrary I recommend it too many people but I can say that the energy consumption on Android is in many cases abysmal for multiple years now and related issues in the Github issue tracker are being ignored. This is for me unacceptable for someone claiming to build high quality software and accepting my donations.
Signal spends a lot of time doing things it doesn't need to do.
For example: Signal doesn't need a cryptocurrency implementation. Signal does need a commercial product offering so they're not just donation funded (there's several obvious, useful applications here - they're doing none of them).
kortilla 8 hours ago [-]
Signal isn’t good engineering though, it just happens to be a decent chat app, of which there is a long history. I only use it because some friends are on there.
None of the builds are actually verifiable so all of the security claims are marketing at best and actively harmful at worst. Safety numbers change and nobody ever bothers to verify them. Random people are added by phone number with no verification (signalgate), etc.
Making a messaging app like this is the “make a TODO” of the single user app world. Which ones achieve popularity has zero correlation with engineering skills.
tuukkah 7 hours ago [-]
What is this FUD regarding lack of reproducible builds? The documentation about them is right here: "Signal has supported reproducible builds since Signal Android version 3.15.0, which was first released in March 2016." https://github.com/signalapp/Signal-Android/blob/main/reprod...
LtWorf 52 minutes ago [-]
If you include a binary blob that you can't verify in the steps… what's exactly the point to obtain an identical artifact?
kortilla 1 hours ago [-]
Those steps assume you can get images pulled off of your Android device that are actually running. This is the problem with all of these ecosystems.
> a filmmaker can use a camera to make great films without understanding in detail how to build the camera, and there is probably not much of a predictable relationship between knowledge of how the camera works and quality of the resulting film.
This sentence conflates two different things to support a single point. One is true but the second is not. It's correct that a filmmaker does not need to know "how to build a camera" to make great films. However, a filmmaker certainly needs to know "how a camera works" to make a great film. And not just in the pedantic sense of where the Record button is but in the sense of a great violinist needing to know how their violin works (but not how to make a violin). The camera is the artistic instrument of cinema and using it well requires understanding how to leverage lens selection, aperture, shutter speed, exposure, focal plane, lighting, framing, etc to achieve the desired artistic outcome.
Another possible confusion in this sentence is the catch-all term "filmmaker" when the actual example is more narrowly focused on operation of the camera. Deciding how to apply a camera toward making a motion picture is generally the responsibility of the cinematographer. Sometimes uniquely skilled directors can also act as their own cinematographer but the roles and skill sets are as divergent as composer and violinist.
friendzis 9 hours ago [-]
Your comment falls into the engineering superiority trap. Yes, one needs to understand how camera (or many other instruments) works, but only because different tweakable parameters are not completely orthogonal.
> The camera is the artistic instrument of cinema and using it well requires understanding how to leverage lens selection, aperture, shutter speed, exposure, focal plane, lighting, framing, etc to achieve the desired artistic outcome.
This is the key sentence. If you had a digital camera that perfectly mimicked output of film camera, you could take a "filmmaker" from 70s, give them the digital camera and they will successfully create a film of equal quality. Yes, one needs to understand that e.g. focal length changes depth of focus, but it's all about controlling the output. One does not really need to understand the inner workings of a system, all they need to understand is which parameters affect output in what way.
>> there is probably not much of a predictable relationship between knowledge of how the camera works and quality of the resulting film.
Yes, usually some technical understanding is required to understand the relationships and use them well. However, even perfect understanding of inner workings of a tool does not translate to being a good craftsman. There is some overlap, but that's it. One still needs to understand the filmmaking part well to make a good film. Hence, the observation that technical knowledge does not translate to film quality - it's a required, but not sufficient criterion.
guappa 7 hours ago [-]
> If you had a digital camera that perfectly mimicked output of film camera
You must first prove it's at all possible.
And they could of course not do any of the special effects obtained by compositing images on the same film. And they would have no idea how to do that with a computer.
It's not the same at all.
xlii 9 hours ago [-]
Since you mentioned violin I’ll share my recent discovery.
Pianos (like grand ones, but also recent electronic ones with sophisticated key action mechanisms) are built to provide two-way feedback.
There’s feedback on key press. There’s bass rumble you can feel as your feet touches the pedal. This combined with string action can help with building „relation” with the instrument and take from it.
But I still couldn’t build one..
abtinf 17 hours ago [-]
For anyone confused by this point perhaps watch some of the “why [movie] still looks like a billion bucks” videos on YouTube by Wolfcrow.
The idea that a film artist doesn’t need to know how a camera works is laughable. And not just the camera, but different film stock, processing methods, lenses, lighting, and the interaction of all those as well as the subject being shot. The level of attention to detail in great films is wild.
rented_mule 14 hours ago [-]
I once heard a great question to illustrate this... When you are inspired by a painting, is this your first thought:
"I need to figure out what brand of paints and brushes this painter used so I can paint like this."
Of course not! It's the painter that determines the quality of the painting and not the maker of the tools. A great painter (or filmmaker or cook or software engineer or ...) will understand the unique attributes of the tools available and leverage those to do great work, whether that's in oil or water, black & white or color, Python or Rust. A difference between experts and non-experts is that experts will find opportunity in the constraints of the tools they have available, and not only frustration.
I believe this extends to engineering managers. I want managers who are good at spotting the unique advantages of each person on the team and are good at structuring the roadmap and individual projects to let the team get the most out of those advantages. And I want them to spot where advantages and disadvantages can be paired to enable learning. All this helps teams see how valuable their teammates can be and how much they can learn from each other. I've seen it result in teams achieving remarkable outcomes while having a ton of fun doing it.
Scaling this up further... I want senior management that is in tune with the unique advantages of different parts of the org, and who then use that knowledge to make better decisions about direction. We can go in direction A, B, or C... that group over there is great at A, so let's pick that and give it to that group. Some see Conway's Law as a sort of "doom", but I've seen it used to the org's advantage with this kind of thinking.
guappa 7 hours ago [-]
Painters in the renaissance were making their own paint most of the time. They were not just buying whatever was available and hoping for the best.
bluGill 2 hours ago [-]
They tended to use a lot of things like lead. While I could probably duplicate their methods, it would (like it did to them) poison me. However duplicating the paint won't make me an artist. Practice painting would make me an artist and buying paint would allow more time to practice. Practice would also let me learn how modern safe paints work and so I could make something that looks like what they could do with modern paints, or I could create something they could not for lack of ability to get that color/shine/whatever (I'm not a painter and don't know the terms they would use).
protocolture 12 hours ago [-]
>The idea that a film artist doesn’t need to know how a camera works is laughable. And not just the camera, but different film stock, processing methods, lenses, lighting, and the interaction of all those as well as the subject being shot. The level of attention to detail in great films is wild.
The Aliens documentary is really good for this. So much of the special effects on the film are in camera tricks.
Cameron is a really interesting person to study because he absolutely mastered every part of film making before deciding to go all in on Avatar and ubiquitous 3d effects.
SoftTalker 11 hours ago [-]
Yes but at some point you can stop understanding how it works. Maybe it wasn't the best example but I think picking it apart misses the larger point.
whatnow37373 9 hours ago [-]
Yeah but any abstraction can be made to work if it remains sufficiently abstract.
All of life is “energy conversion”. All of programming is “translation”. All programming is “solving problems”. Etc.
Not all abstractions generalize (in an useful way).
abdullahkhalids 13 hours ago [-]
The first half is this essay asserts that software engineering is like a science because "software development is actually full of discovery" and not the "engineering practice of combining and assembling what is available from the complex system of computing in order to manifest a given vision."
This is extremely poor understanding. All engineering is full of discovery. Electrical engineers are constantly discovering new circuits that do the same task but with different resource usages and performance trade-offs. Civil engineers are doing the same thing with buildings. etc.
> Software development has the benefit of relying on abstraction layers....
So does every other engineering discipline. You think every new machine is built from first principles?
> Computing is so complex that these interfaces are never perfectly clean...
Author seems to imply that this is something unique to computing. Probably because they have never tried to build a complex analog circuit by assembling together a bunch of component circuits.
pyrale 10 hours ago [-]
I work as a swe in a company dominated by EEs and civil engineers, and while you’re not wrong in theory, the author’s point resonates a lot with me.
Civil engineers mostly plan ahead and try to follow that plan, and having to adapt to too many unforeseen issues is a sign of failure (which is not surprising, since planning is a small fraction of the cost).
In software engineering, the opposite is true: large big-design-upfront projects are usually a trainwreck.
In my experience, it is pretty hard to explain the difference to civil engineers that evolved into leadership.
sdeframond 4 hours ago [-]
In SWE, software is the plan.
Anything before that is drawings on napkins.
marcosdumay 1 hours ago [-]
Yes, that's the point. The planning stage takes months to years, while the building stage takes seconds to hours and doesn't require any labor.
There are no other engineering areas with a similar ratio. And yet, SWE planning and design does look like planning and design on any other area.
jhedwards 46 minutes ago [-]
This criticism strikes me as lazy: it zeroes in on some casual introductory remarks made by the author which are intended to serve as a general guideline or frame of reference for understanding the concepts which follow, then invents a premise which is not in the article (that engineering doesn't contain discovery) and uses that to falsely demonstrate the weakness of the rest of the article.
How can you read this article and your takeaway is that "the author is arguing that engineering does not have abstraction or discovery"? How can you read this insightful article and think "this is extremely poor understanding" because the author does not discuss how "all engineering is full of discovery" when that is not even relevant to the topic of the article? Clearly their point is that engineering does have discovery, and they give examples specifically from the domain of software engineering.
If you think that discovery in all fields of engineering is an interesting topic, go ahead and write your own article about that topic. Show examples from plumbing, electrical engineering, and material science. It would be fascinating, it really would be! But that is not this article, nor is it at odds with what the author of this article is saying.
It's difficult to write an article like this. It takes time and consideration, organization and work. Nit-picking generalization which are not core to the argument of the article, on the other hand, is easy. Anyone can do it.
yason 9 hours ago [-]
> [complexity...] Author seems to imply that this is something unique to computing.
The unique part of computing is that complexity can grow way higher and faster than complexity in physical based engineering because it does not suffer from physical limitations and all the NN relations between pieces of shared code and data grow out of hand quick.
Creating something complex in physical realm is hard, and it essentially means doing more work to make something complex rather than simple. The common challenges are rather often about fitting the achieved complexity either in a small physical space (like an engine bay) or building it all out into large installments that look complex (like a nuclear plant). Yet many things in physical based engineering aren't inherently* hard but it will be hard to make it all into something that both fits in a practical enclosure and actually works reliably in practice.
But creating something complex in the realm of compute is rather the default offering. If you just put things together into a program then, in the classic rookie intern fashion, very soon you have something that mostly actually works but is implicitly so intertwined that nobody can understand the resulting interactions and can no longer start depicking the mahjongg of corner cases. Senior-level software engineering could actually be said to be primarily about managing complexity and whatever remains left after that effort can be used to build products and develop the trade. The reason we love abstractions is that they reduce complexity and make things manageable at all. There would be no progress in software engineering without abstractions.
If you were building an analog circuit that is, complexity-wise, on par with writing software systems you'd basically have to write software to design the circuit in somewhat manageable way. That's how software itself is written.
oreally 12 hours ago [-]
It's both the ego and arrogance of the software developer.
Like there's like nothing on people management in orgs. Like treating engineers like robots as though they'll unquestioningly follow what the author prescribed.
TimByte 7 hours ago [-]
Every engineering discipline has its own flavor of discovery, especially when you're working near the edges of what's known or what's been done before
austin-cheney 15 hours ago [-]
> The people who create software generally refer to themselves as software engineers
Engineers follow processes and measure things. If a developer is not measuring things, most are not, then they are not engineering. If, at least, they are doing something new they are writing. Otherwise, they are typing. Software employs a lot of typists.
If you want to select for excellent engineers you only need to identify two qualities: conscientiousness and persistence. Conscientiousness is awareness of the world outside yourself and is negatively correlated with intelligence. Conscientiousness is where you find disciplined industriousness. Add a little bit of intelligence and you also get people that can follow complex instructions and achieve high precision. Creativity is the child of persistence and high intelligence. Creativity is achieved by trying many variations of a process and carefully discerning quality against some audience or metric.
If you hire a bunch of clowns you get a circus.
strken 11 hours ago [-]
This is an absolutely ridiculous take. If my more traditional engineering friend spends a day putting together plans based on existing documentation of parts, is he suddenly not doing engineering anymore? Do you expect him to run off to the supplier with a probe in hand and redo all their data sheets?
austin-cheney 5 hours ago [-]
If your engineering friends only follow instructions and assemble things then they are not engineering. They are assembling. It takes less to follow instructions than it does to write the instructions.
strken 2 hours ago [-]
I'm sure the world's civil engineers will be pleased to learn that, since they already know the tensile strength of concrete and since they use surveyors to map a site, they're merely assembling bridges and freeways rather than engineering them.
bluGill 2 hours ago [-]
You don't need to be a civil engineer to design a single family house. The properties of the common materials like 2x4s are so well known that you need very little training to draw up a print that can be built - you look up in a chart how long a 2x12 can span and so long as you stay under that size your are okay.
Now in a typical house the floor and roof use trusses that are engineered because in those areas engineering matters. Even then they are mostly taking a bunch of trusses already designed and putting their stamp on the system working.
As buildings get larger/more complex though it becomes harder and harder to build the needed charts. Eventually you need a civil engineer to do a lot of calculation (with the help of a computer) because the building is different enough from anything before.
et1337 14 hours ago [-]
I think there’s more to creativity than persistence and high intelligence. What about Docker, or Terraform? Super simple ideas that as far as I can tell, were not the result of persistence, and were not uniquely intellectually taxing to invent.
I don’t think there’s a formula for creativity. Sometimes it happens, sometimes it doesn’t.
drewcoo 15 hours ago [-]
> Software employs a lot of typists.
We have many strong typists.
mdaniel 13 hours ago [-]
What I want are more static typists
TimByte 7 hours ago [-]
Totally agree that the best stuff happens when vision and engineering evolve together. Some of the most creative breakthroughs I've seen didn’t come from someone executing a top-down plan, they came from someone who deeply understood the system and just noticed a better way.
notarobot123 6 hours ago [-]
Innovation is nearly always bottom-up but eventually ossifies in the corporate structures that envelop it (Skype was a great example).
I've not thought much about the relationship between vision and engineering but it does make sense of why early-stage, engineering-led companies have such a potent potential to disrupt industries.
I wonder if the environment is ripening for a new wave of start-up disruption. A handful of folk with vision and know-how actually do have the means to innovate in ways that confound the incumbents.
The momentum of a technology sector converging on the same patterns and practices starts to look incredibly vulnerable to faster moving teams of visionary engineers finding the missed opportunities.
Creative destruction is such a beautiful thing.
jsbg 2 hours ago [-]
It's a good point about confirmation and survivorship biases. However, the Skype example is really an example of what happens when your codebase has coupling where there shouldn't be. Encapsulation is a foundational concept in software engineering for a reason. That doesn't mean that it's not useful to know, e.g. the inner workings of your database. But it's unreasonable to expect that anyone at your software company can know more than a surface amount about what other teams do.
4ggr0 4 hours ago [-]
The two landscape GIFs, or I guess color cycles on this page are absolutely beatuiful, wow. Don't remember the last time I was stuck looking at animations, just because they're so satisfying to look at. Not even sure why they seem so special to me...
oah, thanks a lot! love his artstyle, gotta look him up :)
not sure what about his animations captures my eyes, but i think he makes great use of 2D depth perception and color palettes.
eightys3v3n 13 hours ago [-]
It's a bit annoying to see something I think is worth keeping on a website, only to find that the author has excluded their website from the Wayback Machine.
Now the content can't be stored easily in a reliable way. I would have to host it myself and make some solution to find it.
I was interested in trying this actually, I just haven't spent the time to set it up yet.
:D
kr2 11 hours ago [-]
in case it’s helpful for you, what i do when i find an article i really enjoy and want to keep to maybe revisit: i have a folder in my google drive for these with some sub-directories for light categorization, and then save a pdf copy of the article in there. don’t have to worry about a website going away in the future, and you get searchability
__abc 3 hours ago [-]
Weird, maybe it's because I'm mostly gray haired at this point, but I find myself referring to my profession as "Computer Science" more and more as time passes.
coderintherye 13 hours ago [-]
>the real opportunity lies in understanding that you’re not bound by the conventions that have been passed down as “standard.”
While in agreement with the author, I think Moxie is missing here that if you want external funding you are in fact mostly bound by conventions, conventions that most VCs and investors expect you to follow. It's possible to go beyond the normal funding routes as well but it narrows the path considerably.
Perhaps though, VCs will change their mindset about this as the AI-driven company becomes vogue and strengthens the perception of small orgs doing big things.
godelski 11 hours ago [-]
It's worth noting that Moxie is the same Moxie of Signal.
He's also an anarchist. I don't think he's in it for the money. It's also worth noting that several multibillion dollar organizations use the underlying software too. I'm saying he's highly experienced and has created a successful business. Even without VC funding!
So there's a difference:
Is your intent to build a high quality product that will make money?
Is your intent to make high income by selling a product?
Personally, I'd argue it's the job of the engineer to focus on the product. The money is the domain of the business people. I'd also argue that the former option is better for society and we're in a bad situation if the latter situation is dominating. The contention between business people and engineers is healthy. It creates balance. Our job is to make the product the best it can be, their job is to sell it. If we don't do our job they're more than happy to sell garbage as long as people will buy it. And remember, VCs don't care about you or the company past their exit. That's not healthy for something if you really care about the product. But it's fine if you care more about the money.
mikelinsi 11 hours ago [-]
Thanks for sharing! I had never really thought about the difference in meaning between the words Science and Engineering in this context.
I’ve had discussions with coworkers before about how we should describe ourselves, but never quite in terms of actual job titles. I really like the black box analogy you mentioned. It reminded me of something I came across recently — Conway’s Law.
vaylian 9 hours ago [-]
This seems to be the key paragraph:
> Clearly things need to change. Almost everything needs to change. But the change that every team needs to make is dependent on the change that every other team needs to make. The product vision itself is intertwined and bidirectionally informed from the engineering, but if everyone in the organization sees every other part of the organization as a black-box abstraction layer, I don’t think a change like that is going to happen.
Basically: In order to create a really outstanding product, every member of an organisation needs to have some insight into what every other member of the organisation does.
jt2190 13 hours ago [-]
The author writes:
> Just like with software, where deep understanding is often the basis for discovery, an organization has to truly understand itself to be primed for innovation. When teams operate as impenetrable black boxes, vision becomes myopic, and potential withers. Despite having immense talent, the large engineering organizations of SV often structure themselves in ways that isolate expertise. As a result, they’re probably sitting on a huge amount of untapped potential – creative and technical ideas that never connect.
Then continues:
> If you’re building a company or an engineering team today, I think the real opportunity lies in understanding that you’re not bound by the conventions that have been passed down as “standard.”
It feels like there would be very few people who would have bota (a) a deep understanding of the different ways that software devs can be organized and (b) the conviction to “compose” a radically different organization based on that understanding. (Bryan Cantrill is popping into my head for some reason as someone who might fit this mold.)
Nevermark 12 hours ago [-]
The corollary of "Software systems reflect the organizational structure they are developed in", would be "Design your organization to match the structure of the software you want."
That provides a baseline rationale and direction for organizational innovation. And for continuing to adapt it.
nwlotz 14 hours ago [-]
Engineering often supplies the potential energy fueling vision and vice versa. ARPANET was very specifically engineered with the vision of a network that could survive nuclear attack. Then it evolved into the internet, which fueled a new vision of collaboration and discovery for students, hackers, and researchers. Who in turn created systems that became new business models, and the cycle goes on.
macleginn 5 hours ago [-]
> As we’ve made it easier to build games, we have certainly seen more of them. But the number of highly rated games (in this case as recorded by metacritic) does not seem to be increasing over time.
In some ways, ratings given out by reviewers, and even their sentiments, is a zero-sum game since most things are rated compared to other things in the same stretch of time.
thenoblesunfish 11 hours ago [-]
The chart of games vs highly rated games, as evidence of more stuff, but not more good stuff, is thought provoking.
It also seems possible that, at least to some extent, the overall quality of games has gone up with the volume, so people have become more critical. I don't play enough games to know. What's the gamer consensus?
vjk800 2 hours ago [-]
There are games that are still good 30 years after the publication and there are games that were good then but seem unimpressive now. The latter category often includes games that did something new and innovative for the time it was published, but has since then become a standard mechanic in games.
Case in point is the recently re-released Elder Scrolls IV: Oblivion. When it was released 20-something years ago, it received great reviews. I also loved the game. The re-release was basically the same game with modernized graphics - with the same bugs and all - and received much worse reviews. I watched a few Youtube videos playing it and thought "geez, how did I not see how crappy this game was 20 years ago".
The reason for this is that the same concept - an open world role-playing game with a massive world - has been redone in many other games and each new iteration of the concept has improved on it. As a result, the bar is now a lot higher for open world RPG games; if I play such a game nowadays, I expect to see good story design, good writing, good voice acting, etc. in addition to just being able to roam around in vast virtual forests.
callingbull 10 hours ago [-]
Not a gamer, but it seems "highly rated" is a matter of attention and status, and the number would increase with the population not with the overall number of games.
vincnetas 8 hours ago [-]
If you take film maker comparison with game engine from TFA. i would say there is no difference here. As cameras got more and more accessible (paralell to game engine) more and more people started recording videos (making games). This does not mean that we have corresponding increase in oscars distributed. We just got youtube filled with millions of videos like we have steam filled with lots of indie game developers.
14 hours ago [-]
0xbadcafebee 14 hours ago [-]
> I think there is something uniquely magical about software, and part of that magic might stem from this tension in how we define it.
Well, yes, but I'd phrase this differently. To me, there is something uniquely unprofessional about software, and part of this unprofessionalism stems from our lack of understanding.
If you do get a computer science degree, congratulations! You have more knowledge than 90% of the people I've worked with in my 20-year career. But even then you only have the "book knowledge"; you still lack the real-world knowledge that comes from practicing a profession. Tradespeople are required to have both the book knowledge, and the practical knowledge (from working under a master). This solves a lot of problems by filling in the gaps that books leave out or haven't updated to yet.
Software feels like magic because there's so much to know. Even for experts, knowing "how to do something right" isn't totally clear. I think the cause of the uncertainty is software engineering's lack of standardization.
Not long ago, the world had no standard units for making buildings. Nails, bolts, wooden beams, sizes of walls, framing layout, roof design, etc varied widely. Making a building strong enough not to fall over, be blown over, shaken apart, or burn down in 10 minutes, required over-building it, because you didn't actually know how to figure out if it would fall over or not. But now the component parts of a building are made to a set minimum standard. Building codes lay out exactly how you can construct a building so that it's safe to use. It's still not easy to construct a building, but at least we know exactly how to do it, and we can check that it was done correctly. In this way, an expert can know exactly how to build a building the right way. Because of this, construction isn't magic. In fact, it's often derided as a job for people who aren't smart, yet you have to be fairly skilled to do any part of it well!
Software engineering still lacks the certainty that physical engineering figured out long ago. Apparently software isn't important enough for people to need to quantify it yet. As is usual with humans, it takes a busload of kids getting creamed by someone speeding through an intersection for us to finally put stop signs in place. I expect after the next world war, when our society is brought to its knees by a simple computer virus, security will become standardized and required, with liability for the "engineers" who don't follow the protocol.
....none of this has to do with organizations, though. Nothing magic about organizing software engineers. Successful management strategies that work at other companies, also work in software companies. There are additional management strategies that can help the lowest level of work become more efficient (https://www.atlassian.com/agile), but those things require the boring, old, "normal" management to be done correctly first. This has been written about to death by people who've studied it all their lives. But software people stick to their software people blogs, and software people management strategies, and never branch out to see how the wider world works. Then they wonder why it all seems like magic.
dgb23 9 hours ago [-]
Standardization is definitely important for foundational protocols and APIs.
However, I‘m glad SWE isn’t standardized to the degree you describe.
It’s a field full of fads, deliberate inefficiencies and grandiose claims on shaky grounds. It’s also extremely diverse.
Nevermark 11 hours ago [-]
> Software engineering still lacks the certainty that physical engineering figured out long ago. Apparently software isn't important enough
I think it is widely viewed as important enough, and every serious attempt at a new language or many software tools involve massive efforts (when their ecosystems are considered).
But one challenge is, we can't really measure a new language until its been put to use by a lot people, encouraging an ecosystem of libraries and tools, in a virtuous circle.
By the time that virtuous circle confirms that yes, A B and C are great improvements, its very difficult to take the next step and add D, E, and F that worked so well in another language.
It happens, but it tends to happen slowly and paid for with complexity that a new language with A, B, C, D, E and F at the start would not have had to pay. But getting a new language and ecosystem revved up is much harder than adding complexity. Until someone else with a great deal of passion and time takes another big gamble and succeeds.
Meanwhile, all that code in all those languages doesn't go away.
C++ complexity is where every language that never gives up, never surrenders, maintains backward compatibility, and continues folding in more good ideas, is slowly heading toward.
Its like trying to improve standards while building an "organically growing mountain terrain" type city, where the city has three main ground levels, covering vast areas of land, with smaller 2nd level areas on top of each, then smaller 3rd levels on all those 2nd level regions, etc. The different innovations happening in particular towers are very difficult for other towers built with other standards to adopt. But all the towers need to keep growing.
Someone says, lets start over with a new city, and it may be a much better city in many ways, but not all, and if enough people help they get a good enough first level up so more people start building there. But the same problem accrues.
0xbadcafebee 37 minutes ago [-]
> we can't really measure a new language until its been put to use by a lot people, encouraging an ecosystem of libraries and tools
Programming languages are just a raw material, like wood, or an alloy, or chemical. They have to be applied in a specific way to have a specific result. A "language" on its own doesn't matter. I could write you the same application in 5 different programming languages, just like I could build you the same building with 5 different raw materials.
Once you decide to use wood, you have to figure out how you're going to build with wood.
Again, in the olden days, this was a bespoke process, like it is today with programming. Are you going to timber-frame? Stick-frame? How tall will it be? Will you use wood joinery or metal fasteners? How will you reinforce it? How heavy will it be? Will you need special equipment or teams of people to move materials? Then you have to get your materials prepared; your beams cut to size, your metal fasteners of the right length, your mortises and tenons cut. Then finally you can assemble it all.
Compare that to programming. Again, you have to figure out how you're going to use the language. What modules you will use, what libraries, what software architecture, what APIs, what protocols, etc. Then you collect your materials and fit it all together.
The difference is this: with modern buildings, most of how you put the pieces together is already specified. An architect still needs to draw the plans up, but building it is pre-determined - not by the builders, but by the building code. You know for a wall plate you're going to need 10d nails. You know your floor joists must be 12, 16, or 24 inches on center, and you know how thick your subfloor needs to be for each. You do not deviate. For a given material, in a given place, for a given application, somebody has already determined how you will build it.
Another big problem with software is the lack of specialization. Most often I see teams of random software developers doing all kinds of things they're unqualified for. People who're clueless about system architecture, defining the architecture of the software. People building the applications without knowing what they will end up looking like. This is insane! Imagine if you just sent some random DIYers to build a house, with no plans, with no building code. The result would be an absolute mess. Of course they would need to stay employed for years, constantly fixing and bolting-on things to cover up their mess.
The "software world" has been an asylum run by the inmates for far too long. We don't need to constantly change languages. They're all about the same anyway! Rewrite an application from one language to another, and it just has a different set of bugs. The only reason it's done this way is we allow software developers unnecessary free reign, because we have no other choice, because it's just a guild of craftspeople building things however they want. Standardization should force a set of materials and a way of building, regardless of the personal whims of the programmers. The result may not be "fun" (which seems to be the primary priority of all programmers, over anything else), but it will result in lower cost, faster building, and more reliable results.
curtisszmania 2 hours ago [-]
[dead]
8 hours ago [-]
faffdsf 16 hours ago [-]
[dead]
fdadsfdsd 16 hours ago [-]
[flagged]
Rendered at 15:51:21 GMT+0000 (Coordinated Universal Time) with Vercel.
I'm pointing this out because people are acting like he's a bit naive. But Moxie has built a very successful company, without the need for VCs, and the tech is used by many big tech companies. Several use the signal protocol. It's a successful nonprofit building open source software.
If your focus is to make large amounts of money, maybe his isn't the best advice. But if you're trying to make a high quality product, then I think it is good advice. It depends which you prioritize: profits or money. Obviously you can have both, but when push comes to shove, will you sacrifice the product for profits or will you sacrifice profits for the product?
Personally, I believe as engineers our focus should be on the product. The profits are the domain of the business people. The contention we have is good, it creates balance. If engineers overly dominate products roll out too slow and only appeal to other engineers. If business people overly dominate we sell broken garbage. Neither situation is great but which side of the spectrum would you like to be on?
[0] https://signal.org/
[note] sure I know it's popular to hate on Signal but let's be real, this is technical nerdy shit we're arguing over (see the too much engineering side). Not something that's actually broken
You need business skills to run a non-profit as much as you need to run a "for-profit" business or any organization really. Your goal may not to be "to make a profit", but cost control is essential to any organization.
Really, it's a balance of priorities.If you focus too much on the $$$, you risk destroying the business and doing a disservice to your customers. You also have a responsibility to your employees who depend on your business for their livelihood, and so forth.
This is the dumbest idea in tech. Please don’t listen to this advice. If you’re just starting your career I’m begging you not to laser focus on coding widgets better for the sake of it.
Care about your customers and what problem they are trying to solve and be involved in figuring out how to make solving those problems a profitable endeavour.
All code is throwaway, all code is worthless, solving real needs, wants and pain points for customers is the real source of value.
It could be, but it cost my company a billion dollars over almost 10 years (not exact numbers, but close enough) to rewrite our current product from scratch. If you work on trivial projects you can throw away code at will. However for a lot of projects the cost to rewrite is so high that the business cannot afford to throw away code that works. The business needs new features so they can sell upgrades and make more money. The whole reason they were willing to pay that billion dollars over a decade is the old codebase was bad enough that adding new features became expensive and hard - the rewrite was an investment to make adding more features cheaper in the long run.
Which is why engineering a good product is important. People who make the product technically good pay for themselves in the long run when the business gets an idea. This is very important to business as well.
If someday it produces messy but actually reliable code my opinion will change, but at this point, it's just too early (not saying it will ever work, but one can hope)
How is that focusing on the product?
Focusing on the product means solving problems for your customers, exactly what you said they should be doing
You're both arguing for the same thing
The engineer’s job is to care deeply about the technical aspects of doing well by the customer.
Caring about the customer is caring about the product. Caring solely about profit is what enshitifies products.
The original SV was focused on technical advancement and the current generation sees the technology as the vehicle to their goals.
- They claim full open source but for several years they did not release the server.
- They claim federation is impossible… yet matrix has it.
- They claim openness but are actively hostile to linux distributions and f-droid.
- Related, getting signal from an app store is no more secure than getting any random proprietary app.
- There's a lot of allegations that they don't need VCs because they have backing from the USA army.
Yet take zero action against TeleMessage.
Citation needed. Strange allegations (and from whom?) when the pentagon itself has discouraged using Signal in an official capacity...[0]
[0]https://abcnews.go.com/Business/what-is-signal-messaging-enc...:
> The Pentagon's internal watchdog criticized a former official's use of the Signal app in 2021, calling it a breach of the department's "records retention policies" and an unauthorized means of communicating sensitive information.
> "Signal is not approved by the DoD as an authorized electronic messaging and voice-calling application," the report asserted, adding that "the use of Signal to discuss official DoD information does not comply with Freedom of Information Act requirements and DoD's records retention policies."
I believe the claim was that it's hard to adapt to changing markets and be federated [1]. Comparing Signal's market share to Matrix's is obviously not a direct cause-and-effect, but Matrix hasn't yet proven that you can get mass adoption that way.
> - They claim openness but are actively hostile to linux distributions and f-droid.
I'm too lazy to find the specific GitHub comment, but IIRC there was a specific list of features they'd need to actively support F-Droid. It is now available in the Guardian Project's F-Droid repository though [2].
[1] https://signal.org/blog/the-ecosystem-is-moving/
[2] https://guardianproject.info/apps/org.thoughtcrime.securesms...
Neither has signal. I can contact more people with GPG than with signal.
> Signal facing collapse after CIA cuts funding
> https://english.almayadeen.net/articles/analysis/signal-faci...
I'm forever grateful to them and it horrifies me that their mission ultimately has failed.
I'm only being half-sarcastic. RT will cover factual issues about Western countries that the state-endorsed media won't. But they're still disinformation outlets that should be consumed with a massive grain of salt, just like RFE and RFA.
Radio Free Europe was/is not a propaganda outlet any more than the BBC is a propaganda outlet (in fact, this is why Trump hates it). To an authoritarian, free press looks like propaganda.
Showcasing what makes your society great is propaganda only inasmuch as it casts the failures of other models into sharper relief. Liberal democracy is not a propaganda trick, it's just better.
Yes, media entities have biases and viewpoints; no, that doesn't make them propaganda organs.
However, widely disseminating an app that supports secure e2e messaging can serve a positive purpose for the CIA in running its agents.
I mean the critiques are mostly valid but wanted to point out they're mostly technical.
I really wish the server was fully open. I feel like that could actually create a mixed federated ecosystem. At worst be optional, right? I can get where he's coming from (and now Meredith), but I think there's a lot of value in it and they've solved hard problems before. Even just the ideas of mesh nets in local areas could be a real win for privacy and security.
Being a Linux user and signal user for quite some time I'm confused at that critique. What's hostile? That it's electron? I mean that does suck but I've used various open source desktop versions and some TUIs. No real issues so far. What am I missing?
Generally the talk I hear about government money is implications of back doors. Just seems like they are more interested in getting encrypted communications into other people in other countries hands. At least that's my understanding of the mission of the organization that's funding them. They'd want that as secure as possible. Government isn't a single entity. If the complaint is morally taking money from the government, yeah it was a weird move. Kinda seems out of character. But not too crazy. Personally I'm okay if they aren't building weapons and there's no strings attached. My understanding is it's not enough money to justify that.
Like selling you no chemical fertilisers vegetables and then using them anyway.
It's hostile because they want you to use their binary build… which you don't know if it corresponds to the source they have online. And can't verify due to the binary blob.
edit: you trust the USA army to not ask any control in exchange for that money? Remember there's no reproducible builds really, and that installing via app store which is linked to an account is very easy to send vulnerable versions to journalists or whistleblowers.
Related issues:
https://github.com/signalapp/Signal-Android/issues/13704 https://github.com/signalapp/Signal-Android/issues/12341 https://github.com/signalapp/Signal-Android/issues/10336 https://github.com/signalapp/Signal-Android/issues/9729
For example: Signal doesn't need a cryptocurrency implementation. Signal does need a commercial product offering so they're not just donation funded (there's several obvious, useful applications here - they're doing none of them).
None of the builds are actually verifiable so all of the security claims are marketing at best and actively harmful at worst. Safety numbers change and nobody ever bothers to verify them. Random people are added by phone number with no verification (signalgate), etc.
Making a messaging app like this is the “make a TODO” of the single user app world. Which ones achieve popularity has zero correlation with engineering skills.
Regardless, those instructions are useless for iPhone: https://community.signalusers.org/t/add-reproducible-builds-...
This sentence conflates two different things to support a single point. One is true but the second is not. It's correct that a filmmaker does not need to know "how to build a camera" to make great films. However, a filmmaker certainly needs to know "how a camera works" to make a great film. And not just in the pedantic sense of where the Record button is but in the sense of a great violinist needing to know how their violin works (but not how to make a violin). The camera is the artistic instrument of cinema and using it well requires understanding how to leverage lens selection, aperture, shutter speed, exposure, focal plane, lighting, framing, etc to achieve the desired artistic outcome.
Another possible confusion in this sentence is the catch-all term "filmmaker" when the actual example is more narrowly focused on operation of the camera. Deciding how to apply a camera toward making a motion picture is generally the responsibility of the cinematographer. Sometimes uniquely skilled directors can also act as their own cinematographer but the roles and skill sets are as divergent as composer and violinist.
> The camera is the artistic instrument of cinema and using it well requires understanding how to leverage lens selection, aperture, shutter speed, exposure, focal plane, lighting, framing, etc to achieve the desired artistic outcome.
This is the key sentence. If you had a digital camera that perfectly mimicked output of film camera, you could take a "filmmaker" from 70s, give them the digital camera and they will successfully create a film of equal quality. Yes, one needs to understand that e.g. focal length changes depth of focus, but it's all about controlling the output. One does not really need to understand the inner workings of a system, all they need to understand is which parameters affect output in what way.
>> there is probably not much of a predictable relationship between knowledge of how the camera works and quality of the resulting film.
Yes, usually some technical understanding is required to understand the relationships and use them well. However, even perfect understanding of inner workings of a tool does not translate to being a good craftsman. There is some overlap, but that's it. One still needs to understand the filmmaking part well to make a good film. Hence, the observation that technical knowledge does not translate to film quality - it's a required, but not sufficient criterion.
You must first prove it's at all possible.
And they could of course not do any of the special effects obtained by compositing images on the same film. And they would have no idea how to do that with a computer.
It's not the same at all.
Pianos (like grand ones, but also recent electronic ones with sophisticated key action mechanisms) are built to provide two-way feedback.
There’s feedback on key press. There’s bass rumble you can feel as your feet touches the pedal. This combined with string action can help with building „relation” with the instrument and take from it.
But I still couldn’t build one..
The idea that a film artist doesn’t need to know how a camera works is laughable. And not just the camera, but different film stock, processing methods, lenses, lighting, and the interaction of all those as well as the subject being shot. The level of attention to detail in great films is wild.
"I need to figure out what brand of paints and brushes this painter used so I can paint like this."
Of course not! It's the painter that determines the quality of the painting and not the maker of the tools. A great painter (or filmmaker or cook or software engineer or ...) will understand the unique attributes of the tools available and leverage those to do great work, whether that's in oil or water, black & white or color, Python or Rust. A difference between experts and non-experts is that experts will find opportunity in the constraints of the tools they have available, and not only frustration.
I believe this extends to engineering managers. I want managers who are good at spotting the unique advantages of each person on the team and are good at structuring the roadmap and individual projects to let the team get the most out of those advantages. And I want them to spot where advantages and disadvantages can be paired to enable learning. All this helps teams see how valuable their teammates can be and how much they can learn from each other. I've seen it result in teams achieving remarkable outcomes while having a ton of fun doing it.
Scaling this up further... I want senior management that is in tune with the unique advantages of different parts of the org, and who then use that knowledge to make better decisions about direction. We can go in direction A, B, or C... that group over there is great at A, so let's pick that and give it to that group. Some see Conway's Law as a sort of "doom", but I've seen it used to the org's advantage with this kind of thinking.
The Aliens documentary is really good for this. So much of the special effects on the film are in camera tricks.
Cameron is a really interesting person to study because he absolutely mastered every part of film making before deciding to go all in on Avatar and ubiquitous 3d effects.
All of life is “energy conversion”. All of programming is “translation”. All programming is “solving problems”. Etc.
Not all abstractions generalize (in an useful way).
This is extremely poor understanding. All engineering is full of discovery. Electrical engineers are constantly discovering new circuits that do the same task but with different resource usages and performance trade-offs. Civil engineers are doing the same thing with buildings. etc.
> Software development has the benefit of relying on abstraction layers....
So does every other engineering discipline. You think every new machine is built from first principles?
> Computing is so complex that these interfaces are never perfectly clean...
Author seems to imply that this is something unique to computing. Probably because they have never tried to build a complex analog circuit by assembling together a bunch of component circuits.
Civil engineers mostly plan ahead and try to follow that plan, and having to adapt to too many unforeseen issues is a sign of failure (which is not surprising, since planning is a small fraction of the cost).
In software engineering, the opposite is true: large big-design-upfront projects are usually a trainwreck.
In my experience, it is pretty hard to explain the difference to civil engineers that evolved into leadership.
Anything before that is drawings on napkins.
There are no other engineering areas with a similar ratio. And yet, SWE planning and design does look like planning and design on any other area.
How can you read this article and your takeaway is that "the author is arguing that engineering does not have abstraction or discovery"? How can you read this insightful article and think "this is extremely poor understanding" because the author does not discuss how "all engineering is full of discovery" when that is not even relevant to the topic of the article? Clearly their point is that engineering does have discovery, and they give examples specifically from the domain of software engineering.
If you think that discovery in all fields of engineering is an interesting topic, go ahead and write your own article about that topic. Show examples from plumbing, electrical engineering, and material science. It would be fascinating, it really would be! But that is not this article, nor is it at odds with what the author of this article is saying.
It's difficult to write an article like this. It takes time and consideration, organization and work. Nit-picking generalization which are not core to the argument of the article, on the other hand, is easy. Anyone can do it.
The unique part of computing is that complexity can grow way higher and faster than complexity in physical based engineering because it does not suffer from physical limitations and all the NN relations between pieces of shared code and data grow out of hand quick.
Creating something complex in physical realm is hard, and it essentially means doing more work to make something complex rather than simple. The common challenges are rather often about fitting the achieved complexity either in a small physical space (like an engine bay) or building it all out into large installments that look complex (like a nuclear plant). Yet many things in physical based engineering aren't inherently* hard but it will be hard to make it all into something that both fits in a practical enclosure and actually works reliably in practice.
But creating something complex in the realm of compute is rather the default offering. If you just put things together into a program then, in the classic rookie intern fashion, very soon you have something that mostly actually works but is implicitly so intertwined that nobody can understand the resulting interactions and can no longer start depicking the mahjongg of corner cases. Senior-level software engineering could actually be said to be primarily about managing complexity and whatever remains left after that effort can be used to build products and develop the trade. The reason we love abstractions is that they reduce complexity and make things manageable at all. There would be no progress in software engineering without abstractions.
If you were building an analog circuit that is, complexity-wise, on par with writing software systems you'd basically have to write software to design the circuit in somewhat manageable way. That's how software itself is written.
Like there's like nothing on people management in orgs. Like treating engineers like robots as though they'll unquestioningly follow what the author prescribed.
Engineers follow processes and measure things. If a developer is not measuring things, most are not, then they are not engineering. If, at least, they are doing something new they are writing. Otherwise, they are typing. Software employs a lot of typists.
If you want to select for excellent engineers you only need to identify two qualities: conscientiousness and persistence. Conscientiousness is awareness of the world outside yourself and is negatively correlated with intelligence. Conscientiousness is where you find disciplined industriousness. Add a little bit of intelligence and you also get people that can follow complex instructions and achieve high precision. Creativity is the child of persistence and high intelligence. Creativity is achieved by trying many variations of a process and carefully discerning quality against some audience or metric.
If you hire a bunch of clowns you get a circus.
Now in a typical house the floor and roof use trusses that are engineered because in those areas engineering matters. Even then they are mostly taking a bunch of trusses already designed and putting their stamp on the system working.
As buildings get larger/more complex though it becomes harder and harder to build the needed charts. Eventually you need a civil engineer to do a lot of calculation (with the help of a computer) because the building is different enough from anything before.
I don’t think there’s a formula for creativity. Sometimes it happens, sometimes it doesn’t.
We have many strong typists.
I've not thought much about the relationship between vision and engineering but it does make sense of why early-stage, engineering-led companies have such a potent potential to disrupt industries.
I wonder if the environment is ripening for a new wave of start-up disruption. A handful of folk with vision and know-how actually do have the means to innovate in ways that confound the incumbents.
The momentum of a technology sector converging on the same patterns and practices starts to look incredibly vulnerable to faster moving teams of visionary engineers finding the missed opportunities.
Creative destruction is such a beautiful thing.
https://moxie.org/blog/images/falls-colorcycling.gif
https://moxie.org/blog/images/ocean.gif
[0] http://www.effectgames.com/demos/canvascycle/
not sure what about his animations captures my eyes, but i think he makes great use of 2D depth perception and color palettes.
https://getpocket.com/home
While in agreement with the author, I think Moxie is missing here that if you want external funding you are in fact mostly bound by conventions, conventions that most VCs and investors expect you to follow. It's possible to go beyond the normal funding routes as well but it narrows the path considerably.
Perhaps though, VCs will change their mindset about this as the AI-driven company becomes vogue and strengthens the perception of small orgs doing big things.
He's also an anarchist. I don't think he's in it for the money. It's also worth noting that several multibillion dollar organizations use the underlying software too. I'm saying he's highly experienced and has created a successful business. Even without VC funding!
So there's a difference:
Is your intent to build a high quality product that will make money?
Is your intent to make high income by selling a product?
Personally, I'd argue it's the job of the engineer to focus on the product. The money is the domain of the business people. I'd also argue that the former option is better for society and we're in a bad situation if the latter situation is dominating. The contention between business people and engineers is healthy. It creates balance. Our job is to make the product the best it can be, their job is to sell it. If we don't do our job they're more than happy to sell garbage as long as people will buy it. And remember, VCs don't care about you or the company past their exit. That's not healthy for something if you really care about the product. But it's fine if you care more about the money.
I’ve had discussions with coworkers before about how we should describe ourselves, but never quite in terms of actual job titles. I really like the black box analogy you mentioned. It reminded me of something I came across recently — Conway’s Law.
> Clearly things need to change. Almost everything needs to change. But the change that every team needs to make is dependent on the change that every other team needs to make. The product vision itself is intertwined and bidirectionally informed from the engineering, but if everyone in the organization sees every other part of the organization as a black-box abstraction layer, I don’t think a change like that is going to happen.
Basically: In order to create a really outstanding product, every member of an organisation needs to have some insight into what every other member of the organisation does.
> Just like with software, where deep understanding is often the basis for discovery, an organization has to truly understand itself to be primed for innovation. When teams operate as impenetrable black boxes, vision becomes myopic, and potential withers. Despite having immense talent, the large engineering organizations of SV often structure themselves in ways that isolate expertise. As a result, they’re probably sitting on a huge amount of untapped potential – creative and technical ideas that never connect.
Then continues:
> If you’re building a company or an engineering team today, I think the real opportunity lies in understanding that you’re not bound by the conventions that have been passed down as “standard.”
It feels like there would be very few people who would have bota (a) a deep understanding of the different ways that software devs can be organized and (b) the conviction to “compose” a radically different organization based on that understanding. (Bryan Cantrill is popping into my head for some reason as someone who might fit this mold.)
That provides a baseline rationale and direction for organizational innovation. And for continuing to adapt it.
In some ways, ratings given out by reviewers, and even their sentiments, is a zero-sum game since most things are rated compared to other things in the same stretch of time.
It also seems possible that, at least to some extent, the overall quality of games has gone up with the volume, so people have become more critical. I don't play enough games to know. What's the gamer consensus?
Case in point is the recently re-released Elder Scrolls IV: Oblivion. When it was released 20-something years ago, it received great reviews. I also loved the game. The re-release was basically the same game with modernized graphics - with the same bugs and all - and received much worse reviews. I watched a few Youtube videos playing it and thought "geez, how did I not see how crappy this game was 20 years ago".
The reason for this is that the same concept - an open world role-playing game with a massive world - has been redone in many other games and each new iteration of the concept has improved on it. As a result, the bar is now a lot higher for open world RPG games; if I play such a game nowadays, I expect to see good story design, good writing, good voice acting, etc. in addition to just being able to roam around in vast virtual forests.
Well, yes, but I'd phrase this differently. To me, there is something uniquely unprofessional about software, and part of this unprofessionalism stems from our lack of understanding.
If you do get a computer science degree, congratulations! You have more knowledge than 90% of the people I've worked with in my 20-year career. But even then you only have the "book knowledge"; you still lack the real-world knowledge that comes from practicing a profession. Tradespeople are required to have both the book knowledge, and the practical knowledge (from working under a master). This solves a lot of problems by filling in the gaps that books leave out or haven't updated to yet.
Software feels like magic because there's so much to know. Even for experts, knowing "how to do something right" isn't totally clear. I think the cause of the uncertainty is software engineering's lack of standardization.
Not long ago, the world had no standard units for making buildings. Nails, bolts, wooden beams, sizes of walls, framing layout, roof design, etc varied widely. Making a building strong enough not to fall over, be blown over, shaken apart, or burn down in 10 minutes, required over-building it, because you didn't actually know how to figure out if it would fall over or not. But now the component parts of a building are made to a set minimum standard. Building codes lay out exactly how you can construct a building so that it's safe to use. It's still not easy to construct a building, but at least we know exactly how to do it, and we can check that it was done correctly. In this way, an expert can know exactly how to build a building the right way. Because of this, construction isn't magic. In fact, it's often derided as a job for people who aren't smart, yet you have to be fairly skilled to do any part of it well!
Software engineering still lacks the certainty that physical engineering figured out long ago. Apparently software isn't important enough for people to need to quantify it yet. As is usual with humans, it takes a busload of kids getting creamed by someone speeding through an intersection for us to finally put stop signs in place. I expect after the next world war, when our society is brought to its knees by a simple computer virus, security will become standardized and required, with liability for the "engineers" who don't follow the protocol.
....none of this has to do with organizations, though. Nothing magic about organizing software engineers. Successful management strategies that work at other companies, also work in software companies. There are additional management strategies that can help the lowest level of work become more efficient (https://www.atlassian.com/agile), but those things require the boring, old, "normal" management to be done correctly first. This has been written about to death by people who've studied it all their lives. But software people stick to their software people blogs, and software people management strategies, and never branch out to see how the wider world works. Then they wonder why it all seems like magic.
However, I‘m glad SWE isn’t standardized to the degree you describe.
It’s a field full of fads, deliberate inefficiencies and grandiose claims on shaky grounds. It’s also extremely diverse.
I think it is widely viewed as important enough, and every serious attempt at a new language or many software tools involve massive efforts (when their ecosystems are considered).
But one challenge is, we can't really measure a new language until its been put to use by a lot people, encouraging an ecosystem of libraries and tools, in a virtuous circle.
By the time that virtuous circle confirms that yes, A B and C are great improvements, its very difficult to take the next step and add D, E, and F that worked so well in another language.
It happens, but it tends to happen slowly and paid for with complexity that a new language with A, B, C, D, E and F at the start would not have had to pay. But getting a new language and ecosystem revved up is much harder than adding complexity. Until someone else with a great deal of passion and time takes another big gamble and succeeds.
Meanwhile, all that code in all those languages doesn't go away.
C++ complexity is where every language that never gives up, never surrenders, maintains backward compatibility, and continues folding in more good ideas, is slowly heading toward.
Its like trying to improve standards while building an "organically growing mountain terrain" type city, where the city has three main ground levels, covering vast areas of land, with smaller 2nd level areas on top of each, then smaller 3rd levels on all those 2nd level regions, etc. The different innovations happening in particular towers are very difficult for other towers built with other standards to adopt. But all the towers need to keep growing.
Someone says, lets start over with a new city, and it may be a much better city in many ways, but not all, and if enough people help they get a good enough first level up so more people start building there. But the same problem accrues.
Programming languages are just a raw material, like wood, or an alloy, or chemical. They have to be applied in a specific way to have a specific result. A "language" on its own doesn't matter. I could write you the same application in 5 different programming languages, just like I could build you the same building with 5 different raw materials.
Once you decide to use wood, you have to figure out how you're going to build with wood.
Again, in the olden days, this was a bespoke process, like it is today with programming. Are you going to timber-frame? Stick-frame? How tall will it be? Will you use wood joinery or metal fasteners? How will you reinforce it? How heavy will it be? Will you need special equipment or teams of people to move materials? Then you have to get your materials prepared; your beams cut to size, your metal fasteners of the right length, your mortises and tenons cut. Then finally you can assemble it all.
Compare that to programming. Again, you have to figure out how you're going to use the language. What modules you will use, what libraries, what software architecture, what APIs, what protocols, etc. Then you collect your materials and fit it all together.
The difference is this: with modern buildings, most of how you put the pieces together is already specified. An architect still needs to draw the plans up, but building it is pre-determined - not by the builders, but by the building code. You know for a wall plate you're going to need 10d nails. You know your floor joists must be 12, 16, or 24 inches on center, and you know how thick your subfloor needs to be for each. You do not deviate. For a given material, in a given place, for a given application, somebody has already determined how you will build it.
Another big problem with software is the lack of specialization. Most often I see teams of random software developers doing all kinds of things they're unqualified for. People who're clueless about system architecture, defining the architecture of the software. People building the applications without knowing what they will end up looking like. This is insane! Imagine if you just sent some random DIYers to build a house, with no plans, with no building code. The result would be an absolute mess. Of course they would need to stay employed for years, constantly fixing and bolting-on things to cover up their mess.
The "software world" has been an asylum run by the inmates for far too long. We don't need to constantly change languages. They're all about the same anyway! Rewrite an application from one language to another, and it just has a different set of bugs. The only reason it's done this way is we allow software developers unnecessary free reign, because we have no other choice, because it's just a guild of craftspeople building things however they want. Standardization should force a set of materials and a way of building, regardless of the personal whims of the programmers. The result may not be "fun" (which seems to be the primary priority of all programmers, over anything else), but it will result in lower cost, faster building, and more reliable results.