r/SoftwareEngineering • • Jul 14 '24

Shouldn't an "N+1" problem really be called "1+N"

5 Upvotes

OK hear me out.

We're all familiar with the N+1 problem. If you are requesting a list of books and you fetch the author for every book your fetching you get an expensive request of the list of books (the 1 request) and then the author for every book (the N request)...
Logically would make sense to then call it 1 + N - one request for the books, then n for every book author. I understand algebraically you refactor so that the variable comes first. But this ain't math class. This is a concept we want all engineers to understand thoroughly, so why not be explicit and clear?


r/SoftwareEngineering • • Aug 22 '26

Doing nothing at work

Thumbnail seangoedecke.com
1 Upvotes

r/SoftwareEngineering • • Jul 13 '26

I don't want your PRs anymore

Thumbnail dpc.pw
0 Upvotes

r/SoftwareEngineering • • Dec 11 '22

Preparing to move away from Twitter

Thumbnail blog.frankel.ch
0 Upvotes

r/SoftwareEngineering • • Jul 04 '23

the most respected contemporary experts in this field

0 Upvotes

who are them?


r/SoftwareEngineering • • Mar 30 '23

Try RDBMS first, NOT microservices (at least for non-giant orgs)

2 Upvotes

I’ll give an actual scenario we can kick around implementation ideas with. My org needs a more powerful version of Active Directory (AD). I’ll call it “AD2” for short. Many apps need employee info and their position in the organization, including who their supervisor is. There are too many needs and requests for AD to deal with. (Maybe AD can be tweaked for more features & power, but let’s put that aside for now. This post is NOT about AD. [edited])

So one plan is to use our primary database brand, MS-SQL-Server (“MS-SQL” for short), to make a database with all the needed employee and org info: “AD2”. A selected group of people would be in charge of maintaining the content. (At this point it does not need a dedicated programmer(s) after initial release, just as-needed maintenance.)

Since MS-SQL is already used by most our apps, it’s easier to just query that info from it. We don’t initially need a JSON web interface. In the future some app or service may eventually need a web interface; and there are plugins for MS-SQL that allow Stored Procedure/View calls to accept and emit JSON services with little or no programming. If that’s not good enough, then we could make a mini-intranet-app to emit and receive JSON for the sub-set needed by these special apps.

So we have 3 levels of K.I.S.S. here for AD2:

  1. Use the shop RDBMS to share needed info/queries.

  2. Use plugins that convert already-written Stored Procedure/View I/O to web services.

  3. Write a web-app wrapper around the Stored Procedures/Views, probably only for specific needs rather than wrap them all.

In our org, a medium-sized org, it would be foolish to start with #3 first; a big YAGNI violation. We can later get JSON-over-http if necessary, without starting from scratch.

Further, if AD2 needs info from other databases, it’s relatively easy to make cross-database links/connections on the DB server(s) itself without coding a communication service, since it’s the same DB brand. Making a DB-vendor-neutral wrapper (JSON calls) is overkill as the default.

Some microservice proponents say #1 is already “microservices” but many don’t because it’s not “vendor neutral”. (There is no consensus definition of microservices, unfortunately.)

If an org didn’t have a standard RDBMS (DB potpourri), then maybe JSON-first would be more rational. But I recommend that small and medium orgs settle on a primary RBDMS brand because it makes many things simpler, not just service sharing.

For really big orgs, that may not be feasible; I don’t have enough experience in enough big orgs to comment. But I’ve worked in many small and medium orgs as both an employee and contractor, and this includes public and private. DB-first for inter-app info sharing is by far usually better.


r/SoftwareEngineering • • Sep 27 '19

Dating and relationships as a software engineer

0 Upvotes

Hi everyone,

My name is Sam and I’m a dating coach. I work with a lot of busy professionals and I’m always looking to better understand my audience.

Question: as a software professional, what are the challenges you’ve faced in your dating lives?

Thanks in advance


r/SoftwareEngineering • • May 06 '23

Are software engineering and agile against each other ? And now software engineering is not important?

3 Upvotes

Agile seems to break most of software engineering roles which are System modelling (example with UML) and documents.. as agile is incremental and Iterative method so it uses system modeling and documents as drafts and sometimes does not use that at all, but software engineering depends highly on system modeling and documents in any process and activity and even when change should occur, the change first happens in documents and modeling then this reflect later in code .. so now all companies adopted agile, does that mean software engineering is not important anymore?


r/SoftwareEngineering • • Jun 07 '24

We're moving continuous integration back to developer machines

Thumbnail
world.hey.com
3 Upvotes

r/SoftwareEngineering • • Sep 07 '22

Rant: Make CRUD Great Again! -- We need better standards

0 Upvotes

CRUD technology and standards have been slighted and ignored due to a focus on mobile, e-commerce, and social media apps. CRUD is like plumbing: it ain't sexy, but runs the world. And when it fails, leaves a smelly disaster.

CRUD is the "productivity software" behind business and administrative applications. Interaction is still done roughly 90% on desktops with mice and with GUI's, or at least something trying to be a GUI. Our internet standards still don't support very common GUI idioms after decades of wanting. Emulating them with JavaScript+DOM+CSS has been a wasteful bloated slog. UI frameworks that promise to cater to both mice and mobile serve a lowest common denominator and have unacceptably long learning curves to use effectively. When you finally master them, they fall out of style.

What's really needed is a state-ful GUI markup language that runs in a GUI browser or browser-like client, such as browser pluggin. Unlike the failed Java Applets and Flash, it shouldn't try to be an entire virtual OS, only a GUI browser.

I've seen Oracle Forms (OF) teams kick the productivity out of web teams for internal CRUD. OF is less time and less code than equivalent web shit. When managers of OF shops question why web requires so many more people, the response is more or less, "that's just the way the web is; the future is bloat, so embrace bloat." Web defenders point out the web is more flexible. I question that, but for the sake of argument, the price for that flexibility has been unacceptable. Would you pay 3x for a car because it's easier to turn into a boat? 🛥️

There's something magical about the Oracle Forms browser (client). I don't like Oracle the company, but O.F. did the CRUD job on a dime. It has warts, like anything, but we can probably borrow the good lessons and improve or rework the bad. (Oracle rewrote the client from C to Java, ruining it by complicating browser updates. They should have left it in C. Note the rewrite did not change the Oracle Forms programming language itself, only the rendering engine.)

Enough focus on eye-candy and social toys, let's grow up and get our productivity act together and fix our CRUD/GUI standards. (Yes, I am kicking your web toys off my lawn.)


r/SoftwareEngineering • • Dec 22 '22

Services good, microservices bad, change my mind

1 Upvotes

I'll be honest I never ever worked with a microservice architecture (as defined in https://en.wikipedia.org/wiki/Microservices) and it doesn't sound appealing to me. I understand why having services is a good idea:

  1. Independent CD pipelines for unrelated code,

  2. Independent scaling for APIs that use very different data,

  3. Removing complexity from widely distributed libraries/binaries in favor of thin clients that don't take much memory/CPU and don't need to get substantial updates often.

And so on - there are valid reasons why service-oriented architecture is a good thing for many products.

But why on Earth would I want to pay the cost of RPCs and worry about API versioning if none of these reasons apply? It's more overhead, it's higher latency, it's dealing with timeouts and other failures, it's harder to maintain, it's harder to understand, it's harder to iterate on safely because of versioning concerns - I just don't see a single good thing in favor of making a service out of every single module.

But it might be just my echo chamber: I work on infra projects, and statically linked C++ is my comfort zone.

So if you like microservices, tell me why! Convince me that they can be a good thing!


r/SoftwareEngineering • • Aug 09 '21

Modern software development is cancer (2017)

Thumbnail
dedoimedo.com
7 Upvotes

r/SoftwareEngineering • • Apr 28 '20

Simple Performance Experiment of Java, C++, and Python, on a Dell Alienware R3

0 Upvotes

I'm not sure if sharing blog posts or Medium stories on programming is allowed because it's been a very long time since I wrote a Reddit post, and this subreddit doesn't have additional rules. If it isn't please excuse me.

Anyway, this weekend, I did an experiment out of interest to measure the performance of Java, C++, and Python on my Alienware laptop with three simple functions. One that prints out "Hello world," one that does four arithmetic operations and displays the results, and one that instantiates a class and immediately destroys the object. The test bench, where I measure the execution time, uses the native timing algorithms such as the System class in Java.

This Medium story explains what I did in detail and the data I've obtained:

[Link removed because of massive criticism.]

What do you folks get when you do a similar experiment like this one? That's not to say which programming language is the best, but rather, to see what you get.

EDIT: I think I was doing this experiment for fun.


r/SoftwareEngineering • • Apr 25 '23

SQL seems to solve one dimensional problems at the end of the day, what about two?

0 Upvotes

Making dynamic tables doesn't seem very ideal. At the end of the day you can't really have a table that grows two dimensionally in SQL because it gets heavily bogged down the more it grows. 2^2, 3^2, 4^2.

What are solutions that are better served for housing two-dimensionally growing data. One that perhaps wouldn't allocate memory to fields that didn't need every field. For example, one row having 2 columns, another having 3 columns, another having 4. I have field x, and x has a,b,c,d,e associated with it. But in the future it might have f,g,h,i ad infinum. It's not ideal for a SQL table really, and my working solution is to house individual lines of x such as xa, xb, xc, xd in a SQL table. I then pivot it. But it's really not ideal because the by pivoting x a and joining it to x b and then x c, I've effectively make a subquery that has x name in all of them. It makes it so that I can't work with the subquery because it has two names, and simultaneously I can't select the columns individually because I don't necessarily know a,b,c,d,e or however many there are. I.e. if I try to select by column name, I don't know what to reference. I am trapped in a select * from the pivoted joins, and trapped by the subquery of select * having 2 or more columns with the name of the column housing x.


r/SoftwareEngineering • • Jul 18 '22

An objective way to measure developer productivity

0 Upvotes

I am curious what everyone's thoughts are around measuring developer productivity in an objective manner.

Building complex software is hard and rewarding Software Engineers based on their impact is paramount to maintain a meritocracy vs. a socialist corporate environment where the latter will most likely lead to stagnation.

What are everyone's thoughts around combining a subjective review + an "objective" one. For example:

"Bill is super easy to work with, always on time in meetings, listens clearly and has great communication skills"

and for an objective take, maybe we measure the number of user stories assigned, closed, number of commits written, number of lines of code added, removed, and updated.

Also we can measure the number of bugs generated and also the number of bugs fixed that weren't necessarily created by Bill's code.

What are everyone's thoughts around the objective portion? What would you add/remove?


r/SoftwareEngineering • • Jan 14 '20

i want to work for apple as an software engineer

1 Upvotes

Which languages do i have to learn to get into apple with software engineer?


r/SoftwareEngineering • • Jun 17 '25

What happens to SDLC as we know it?

0 Upvotes

There are lot of roles and steps in SDLC before and after coding. With AI, effort and time taken to write code is shrinking.

What happens to the rest of the software development life cycle and roles?

Thoughts and opinions pls?


r/SoftwareEngineering • • May 31 '26

Most teams don't have a documentation problem. They have a discoverability problem.

7 Upvotes

I feel most teams don't have a documentation problem.

They have a discoverability problem.

When I switched from working on media configuration systems to content workflow systems, the docs, tickets, dashboards, ServiceNow requests, and runbooks were all there.

The hard part was understanding where to look and how everything connected.

I've seen people ask questions that were technically documented already, simply because asking someone was faster than finding it.

Curious if others have experienced the same thing.


r/SoftwareEngineering • • Apr 13 '23

One common behavior seen in "mature" software engineers

Thumbnail luu.io
2 Upvotes

r/SoftwareEngineering • • Apr 25 '20

Thinking About Software Engineering... But Am I Too Late?

2 Upvotes

I’ve been searching relentlessly as to what could be a good path to take for me, and I really think Software Engineering/Development could be it. Here’s the thing: I’m 17 and have next to no experience in coding, or programming, or designing, or anything like that. I’m a senior in HS who has already taken some college credit and I kinda want to figure out if it is too late or not to pursue this path. My main underlying goal in life is to be as self supporting and sufficient as I can, and I want to do that in a way that fits my strengths. I’m a person who is really good at taking projects and optimizing them, extracting data, analyzing, and more. Do you think I’d be able to learn the skills necessary to become a Software Engineer like within the next 4-5 years? And what major should I take- Computer Science? Software Engineering? Etc.? Also, if someone could explain exactly what Software Engineers/Developers do? Or maybe a Systems Analyst would be better?


r/SoftwareEngineering • • May 21 '24

What are some subtle screening questions to separate serious software engineers from code monkeys?

88 Upvotes

I need to hire a serious software engineer who applies clean code principles and thinks about software architecture at a high level. I've been fooled before. What are some specific non- or semi-technical screening questions I can use to quickly weed out unsuitable candidates before vetting them more thoroughly?

Here's one example: "What do you think of functional programming?" The answer isn't important per se, but if a candidate doesn't at least know what functional programming *is* (and many don't), he or she is too junior for this role. (I'm fine with a small risk of eliminating a good candidate who somehow hasn't heard the term.)


r/SoftwareEngineering • • May 26 '23

How much low level chops do we need for the industry?

0 Upvotes

Hi!

I'm a first year university student studying Computer Science. My goal ideally is to get into software development, (full stack ideally) but my interest lies primarily in front end and UI development. I've done a few personal projects, mainly video game development, but I plan on getting my feet wet with web design this summer, (just as a fun excuse to use JS, CSS and HTML).

I'm currently in a class that focuses on systems, and low level concepts. We've worked in C and ARM assembly and used it as a vehicle to explore what happens at the low level, and interact more closely with the hardware.

I'm being careful to word his properly as this is not meant to be a dismissal of the learning outcome of studying low level programming, I believe that from a foundational knowledge standpoint, its important, my question is mainly referring to practical usage. 

But I would like to know, how much low level programming knowledge is needed to have a healthy and growing career in software development?

I think it is very good that we learned how to operate more closely with the hardware, and learn how to manage memory manually/dynamically with allocations and pointers, and of course learning ARM really helped me as a student get insight as to what is actually happening with the computer when compiled languages execute. 

So the act of KNOWING what happens is of utmost importance and I'm glad we've got our feet wet this term in really analyzing that. but in professional software development, how low do we need to go in terms of actual programming and manipulating what happens in memory? 

In what little development experience I've had, I've worked with languages that basically turn memory management into an abstraction (Java, Python, C#), you don't really think about it as much as when you do stuff in C but it's certainly good to know.  

In all honesty, I've personally preferred it this way, as I like spending my time thinking and making code that implements behaviors at a high level rather than going to war with the computer because something in memory wasn't hooked up right in the source code (seg fault PTSD). In short, I think knowing about it is essential, but my question is to what degree do we need to know how to actually do it ourselves? I'm pretty comfortable with C and C++ memory management (although for large projects debugging memory stuff can really have me at the edge of my seat), but anything lower than that really pushes the ball for me. Assembly is awesome but I can't imagine actually working with it regularly.

I've been told by older friends that at the minimum you should know at least 1 level of abstraction below what you are working with. Such as knowing how memory works in the JVM while you are doing stuff in java. 

My question is, while I can agree that a strong foundational knowledge of low level programming is important for all programmers, from a career standpoint, how proficient do we need to be at VERY low level programming such as ARM, MIPS, x84 etc etc to be viable in the market?


r/SoftwareEngineering • • Aug 06 '23

My final take on Gradle (vs. Maven)

Thumbnail blog.frankel.ch
0 Upvotes

r/SoftwareEngineering • • Jun 19 '26

Why we replaced Node.js with Bun for 5x throughput

Thumbnail
trigger.dev
0 Upvotes