zlacker

[parent] [thread] 24 comments
1. tkiolp+(OP)[view] [source] 2021-08-06 13:12:29
You worked on that app yourself alone, right? If so, I believe your app belongs to a different plane of existence. Programming (one programmer working alone without too much money/time pressure imposed by others) is quiet different from software engineering (multiple programmers, stakeholders, designers, etc., with time and money constraints). Everyone loves programming (and so doing programming usually leads to high-quality and useful products), almost everyone hates software engineering.
replies(3): >>ChrisM+01 >>jagged+b1 >>datalu+E7
2. ChrisM+01[view] [source] 2021-08-06 13:18:35
>>tkiolp+(OP)
Yes, I've been writing it alone, but my "alone" work is at a different level, from what many folks do. Approaching every bit of work I do as "ship," is one of my oddities. I have as much fun, shipping, as I do writing.

I consider everything I do, "engineering." Been doing that, all my adult life.

Feel free to look at the stuff I do (I link to it in my HN profile). The app I'm working on isn't there (yet), but a number of its components are. It's still "under wraps."

replies(2): >>grepfr+r2 >>stopna+9i
3. jagged+b1[view] [source] 2021-08-06 13:19:13
>>tkiolp+(OP)
I don't like this definition of Software Engineering that necessitates a team of Other People. Perhaps I'm outright wrong that such a definition just shouldn't be. Even in that case, I just don't like it. :)
replies(1): >>shalma+1q
◧◩
4. grepfr+r2[view] [source] [discussion] 2021-08-06 13:25:40
>>ChrisM+01
I hear you, but this problem becomes exponentially harder as your engineering org grows.

I witness on a daily basis PRs that have no body getting merged with absolutely zero comments and a blanket approval as long as it passes our (broken) CI pipeline. I witness obvious poor quality in the code, but engineers want to seem like they are working and will just blanket approve PRs, while i'm in the middle of writing up my code review denying the PR.

If you are a developer on a team and want your codebase to be high quality, you end up no longer writing the code and instead spend all of your time gatekeeping via code reviews. This leads to burn out.

replies(2): >>ChrisM+t3 >>gkrime+742
◧◩◪
5. ChrisM+t3[view] [source] [discussion] 2021-08-06 13:30:35
>>grepfr+r2
Yeah. It can be a real challenge, ensuring quality on a team.

The obvious answer, is to hire experienced, skilled, capable engineers, and instill in them, the same reverence for Quality that you have.

Like I said, Quality is expensive. Very few companies like to pay the premium.

replies(1): >>grepfr+59
6. datalu+E7[view] [source] 2021-08-06 13:51:07
>>tkiolp+(OP)
I would say a lot of this confusion comes from the word engineer. Building software is not like building a bridge. You can't design it first and then go and build it.

So I would say engineer is a poor term, but also the only one we've got for now.

replies(8): >>ordu+zd >>clover+Ei >>dnh44+lw >>blacks+cD >>Rd6n6+3K >>motion+FP >>cfcfcf+Ee1 >>branko+qr2
◧◩◪◨
7. grepfr+59[view] [source] [discussion] 2021-08-06 13:58:38
>>ChrisM+t3
This does not work at scale. My company does pay the premium and a lot more.
replies(1): >>ChrisM+na
◧◩◪◨⬒
8. ChrisM+na[view] [source] [discussion] 2021-08-06 14:06:28
>>grepfr+59
It does, but it ain't easy. I worked for a company that did it at scale.
◧◩
9. ordu+zd[view] [source] [discussion] 2021-08-06 14:23:08
>>datalu+E7
As I see it, it is more nuanced. When engineer designs a bridge she does a very similar work to a programmer. Programing it is like designing a very complex bridge without constructing it really, because when you finished your design it had been built already.

So it is not exactly like you've said:

> You can't design it first and then go and build it.

You can design, but you cannot build.

A process of building by a design can be paralleled with deploying software -- suddenly there is a hairy real world, not all the hair was considered at the design phase, and either we hack around existing software (i.e. design plans), or call a programmer to redesign.

◧◩
10. stopna+9i[view] [source] [discussion] 2021-08-06 14:41:32
>>ChrisM+01
I wonder if the nuance being identified by the other commenters might be the tragedy of the commons that can play out in collaborative settings. I'm right there with you, btw. Mine is also a non-sexy, non-commercial app and I'm happily a one man band. But a younger me, a junior member of a team, under pressure without close supervision would probably commit a certain amount of half baked spaghetti and be part of the governance problem.
replies(1): >>ChrisM+uk
◧◩
11. clover+Ei[view] [source] [discussion] 2021-08-06 14:43:37
>>datalu+E7
> You can't design it first and then go and build it.

You can't design it in full in one go, but you can design it and then incrementally update said design. Sadly many (companies) do not. But you can define the problem(s), the scope, the scale, and then design a solution appropriately to meet those needs (for a defined period of time). That's what distinguishes software engineering from hacking. They both have their place. Many companies claim to do the former but are mostly doing the latter. Software is still early in its life and as various kinds of system designs stabilize, so will the formalizations around what it means to be a software developer. Reading a book like Designing Data Intensive Application's you can't help but see those formalized topics budding.

◧◩◪
12. ChrisM+uk[view] [source] [discussion] 2021-08-06 14:51:24
>>stopna+9i
Yup.

It's not exactly a "one-man show," but I'm the chief architect, and the only one developing one of the three servers the app uses (I was also the original architect for another server, that is now being run by a different open-source team), I am also the only one developing the native iOS application. I may be writing some adjunct apps, once the main one has been released (like Watch, Mac and TV apps).

But we're a team. It's a 501(c)(3), with a mission to Serve a specific demographic. We have the advantage of being intimately familiar with the demographic. So far, we haven't had to shell out much. If they decide to write an Android version, then it may take some extra dosh. The good news is, the app is in "constant ship" state, so asking for funding is fairly straightforward. We just need to loop the person into the TestFlight group, and Bjørn Stronginthearm is your uncle.

◧◩
13. shalma+1q[view] [source] [discussion] 2021-08-06 15:15:00
>>jagged+b1
If you broaden the definition of Other People to "you, 6 months from now" and "you, 6 months ago", then many SE principles still apply. Where SE principles don't apply is toy, one off scripts that you just hack together to get a single thing done and require no maintenance like a lot of stuff in science.
replies(3): >>tharku+JG >>ChrisM+kJ >>tkiolp+bt1
◧◩
14. dnh44+lw[view] [source] [discussion] 2021-08-06 15:40:37
>>datalu+E7
No it's not like building a bridge. It's like thinking you're building a bridge but then the client decides he needs it to be moveable so then you have to give it legs so it can walk. Then the client's manager decides he wants it to be able to get to the moon so you then have to strap rockets and parachutes to it. Then after it gets installed and someone finally speaks to the users you realise all they needed was a canoe.
◧◩
15. blacks+cD[view] [source] [discussion] 2021-08-06 16:07:12
>>datalu+E7
Hmm, 'developer' has a cheerful kind of vagueness about it - it comes close to describing the iterative process of starting to write something one way, then realizing your original approach wasn't quite right and rewriting it. At least, I don't think mechanical engineers do that too often...
◧◩◪
16. tharku+JG[view] [source] [discussion] 2021-08-06 16:22:40
>>shalma+1q
Absolutely true. Not even 6 months needed.

When I do stuff for myself I apply the same principles I apply at work. It's insane how easy it is to change stuff later on. Didn't think about this use case before but now you do? Because I have properly maintainable code that is readable its very easy to change and changes are only needed in one place instead of all over the place. Knowledge of the right thing is kept in the right place instead of implicit knowledge all over the code etc.

It also helps to have 'one team be responsible for each service' instead of 'everyone can work on everything'. It's insane how fast you can move if you know the code well and it's maintainable.

◧◩◪
17. ChrisM+kJ[view] [source] [discussion] 2021-08-06 16:33:04
>>shalma+1q
I'm the poor schlub that usually needs to maintain the code that I write.

I also pretty much never get questions about the code that I pass on to others.

I write about my process here: https://littlegreenviper.com/miscellany/leaving-a-legacy/

(Long screed. Few read it).

◧◩
18. Rd6n6+3K[view] [source] [discussion] 2021-08-06 16:36:05
>>datalu+E7
In Canada, engineer is a protected title. There are software engineers and you get professors who stress to you the importance of testing and safety, and there are safety and ethical requirements. It’s not very strongly enforced though, lots of people here get away with using the title
◧◩
19. motion+FP[view] [source] [discussion] 2021-08-06 16:57:48
>>datalu+E7
I mean, I'm and audio engineer, a fire protection engineer by degree, and a software engineer. Your bridge building analogy doesnt hold up, there is always changes and refinements of guestimations.
◧◩
20. cfcfcf+Ee1[view] [source] [discussion] 2021-08-06 18:56:38
>>datalu+E7
Yes, I personally find developer or programmer more accurate, although neither is without its own connotations and baggage.

As a designer I’m a bit embarrassed by the trend to describe ourselves as product designers. To me a product designer makes chairs and coffee tables.

◧◩◪
21. tkiolp+bt1[view] [source] [discussion] 2021-08-06 20:24:34
>>shalma+1q
Strangely enough, software engineering is mostly about humans rather than about software. Take any side project of yours (no matter if it has been hacked together or if the best practices out there have been applied): add pressure to make money out of it, pressure to deliver it at a given date and a bunch of individuals you must collaborate with to push the project live, and right there you get SE.
◧◩◪
22. gkrime+742[view] [source] [discussion] 2021-08-07 00:54:40
>>grepfr+r2
Please come work at Google! This place has the best overall code quality I have ever seen. That's not to say it's always great or bug-free, but it is almost always well maintained. There is very little dead code. Giving and receiving high-quality code reviews is the norm.
replies(2): >>ChrisM+cb2 >>grepfr+wg2
◧◩◪◨
23. ChrisM+cb2[view] [source] [discussion] 2021-08-07 02:09:37
>>gkrime+742
That’s one company that would almost certainly not have me, but I very much appreciate the thought.

Apple also displays extremely high quality code, in the areas that are exposed to the public.

I have not seen too much Adobe code, but I’m told you can eat off the Photoshop codebase.

For myself, I need to keep my scope fairly humble, but I get great joy from it.

It sounds like a gratifying environment. Good show!

◧◩◪◨
24. grepfr+wg2[view] [source] [discussion] 2021-08-07 03:19:44
>>gkrime+742
Hey, I found your email on another thread.. I will reach out!
◧◩
25. branko+qr2[view] [source] [discussion] 2021-08-07 05:47:21
>>datalu+E7
It's exactly like building a bridge... if nobody never built a bridge before.

The only reason you can design a bridge beforehand is because (millions?) bridges have been built before so you can apply the lessons learned. Even if your bridge is "unusual", it will still be similar enough to older bridges so you don't have to invent the vast majority from scratch.

Other kinds of engineering don't have the luxory of leaning on the prior experience so much, simply because there is less of it. SpaceX's reusable rocket could not have been be fully designed before built, simply because nobody built a reusable rocket before. But it could be done through iteration, which is just another name for experimentation.

Software tends to be less like bridges and more like rockets... all of which falls within the spectrum of "engineering".

[go to top]