Software Engineer vs Software Developer

    January 21, 2023

    What is the difference between 'Software Engineer' and 'Software Developer'?

    This question can be answered in the realm of engineering and software. But the full answer enters into sociology and psychology. Let's begin from this perspective of sociology and psychology.

    Sociology and Psychology

    Ever wonder why universities, especially the most prestigious ones, have such majestic structures and elaborate ceremonies? It's to instill this perception in peoples' minds that the difference in education they offer is so tangible that you can see and feel it. And of course, the most important aspect of making this difference real and physical is the paper degree that is awarded at the end. All of these mechanisms have the important effect of giving the receiver a sense that they are in the club of knowledge. One of the greatest benefits of this club is the networking. Very often, these traditional institutions are dominated by generations of the same families who have over-sized influence amongst their communities. This generational mechanism is codified in traditional institutions by what's known as Legacy Preferences. The converse effect of this club of knowledge mechanism is reducing knowledge sharing outside the club. This increases the power of traditional institutions of education and perpetuates this circle of generational protectionism, reducing a nation's breadth of innovation and opportunity.

    The field of engineering has similar mechanisms for instilling this club mentality (for the purpose of information asymmetry a.k.a. knowledge withholding) that is reinforced through physical structures and elaborate ceremonies to make the boundary feel tangible in the minds of the people. Historically, these mechanisms evolved from occupational guilds. Adam Smith referred to guilds as a conspiracy against the public (1776 [1976], ch. X, pt. II, p. 152) for their actions beyond simply raising prices.

    The breaking down of these imaginary barriers is inevitable and this process has been underway for decades. The internet is speeding up this process. A degree is no longer necessary to attain employment that would traditionally be considered prestigious. However, the treatment one receives after entering such employment is an open question because of the mentality of information asymmetry that has been instilled amongst the majority who did enter into the private sector via pipelines created by traditional institutions of education. It's for this reason that one must be cautious during collaborations.

    These imaginary boundaries feel tangible to the people who work in their respective fields, such as engineering. They feel tangible to all members of society, as well. Peoples' entire world views are built around these boundaries. It's how they classify people as being in one class or another, and the vast majority of people have been raised to treat people differently based on their perceived class. It's for this reason that the opinions expressed in this blog post could invoke uncomfortable feelings in some people. But thanks to the internet, which is still in its infancy, this trend of the evolution of education is very likely to continue for the good of the majority of people. One might argue that there's tremendous misinformation and noise on the internet, but this problem will continue to be solved over time.

    From a sociological and psychological perspective, the difference between software developer and software engineer is mostly imaginary, but great lengths have been taken (by creating majestic structures and elaborate ceremonies) to make it feel tangible in the minds of the people. Mostly imaginary, because we're still not at a point in human history where information is 100% free. The fact remains that traditional educational institutions conduct a great deal of research, and they are on the forefront of discoveries that push forward the boundaries of human knowledge. Today, it takes time for most of that information to be disseminated onto the internet. But over time, that loop will shrink, as it already has. Furthermore, it's important to note that this loop (of information from research to internet) is smallest in computer science and software engineering. In other fields, or even within certain specializations of computer science and software engineering, the loop is much larger and traditional institutions of education remain critical to these professional pipelines of human resources.

    Now, let's explore from a technical point of view.

    Software and Engineering

    Depth

    Engineers are often expected to have a deeper understanding of the underlying mechanisms of the tools they use. Modern software systems are essentially layers of black boxes nested within other black boxes and connected to even more black boxes. A software engineer is typically expected to understand not only how to use these abstractions but also how their internals work and interact.

    That said, no single person can master every layer of every tool they touch—software is simply too vast. What distinguishes an engineer, in this sense, is the mindset of looking beneath the abstraction when necessary.

    Breadth

    Software engineers are also expected to take on a broader scope of responsibility. Their role often extends beyond writing code to include designing entire systems, understanding how those systems interact with others, and thinking holistically about architecture, performance, and maintainability.

    Lifecycle

    Another key difference lies in understanding and managing the software lifecycle. A software engineer is often expected to be involved from design through testing, release, and long-term maintenance. This broader lifecycle perspective ties closely to cross-team collaboration.

    Information Asymmetry in Practice

    Breadth and lifecycle responsibilities inevitably require engineers to rely on information from other teams. This is where information asymmetry — uneven distribution of critical knowledge — can make or break outcomes.

    Speaking from experience as a self-taught engineer, the only customer-facing issue ever attributed to me in my career didn’t stem from my code — it came from poor collaboration with an upstream team. I repeatedly asked about the state of deployments in a specific production environment and received no response across multiple channels. Unbeknownst to me, their deployments had been broken for months, and although the fix was trivial, it was beyond my permissions.

    My mistake was assuming everything was functioning correctly when the team pivoted to discussing Pre-Prod immediately after I’d asked about Prod. This is because I would make it my top priority to address concerns in Prod over Pre-Prod. Giving this benefit-of-the-doubt was a mistake. In hindsight, that was a red flag I shouldn’t have overlooked. This kind of situation is especially challenging when senior project managers are pressing for daily deployments while the engineers you depend on remain unresponsive.

    Incidents like this highlight that possession of a degree or a job title doesn’t guarantee full access to information. Many organizations have informal layers of "inner networks" (akin to fraternities or cliques) that control information flow. Navigating these murky waters requires a mix of technical rigor, soft skills, and possibly even acceptance of tribalism (for now).

    Here are three practical strategies I’ve found useful:

    1. Interpersonal and emotional intelligence – Build trust so others are more likely to share information proactively.
    2. Obsessive due diligence – Verify every critical piece of information, especially if something feels "off" or incomplete. This can be difficult when you also have to double-check absolutely everything while information explicitly provided by teammates is sometimes incorrect.
    3. Value balancing – Share information the other party doesn’t have but needs. Creating mutual value is one of the best ways to break down invisible walls.

    Conclusion

    The difference between software developer and software engineer is highly controversial. Many would say:

    1. There is no difference.
    2. The difference is in the scope of work.
    3. The difference is based on credentials.

    Updated: 2025-10-12