Do you work for a Software Company or a Company that Sells Software?

You may be asking yourself, what’s the difference, plenty.  If you are a developer who only codes because it is your job and you make a good living, which there is no problem with that, you may not enjoy working for a software company.

Both companies need those types of developers.  But if you align yourself as a software engineer, who likes solving problems and is passionate about the profession of Software development, then you want to work for a Software company. 

A company that makes and sells software is usually founded by a domain expert who wrote or had a friend write an application he needed, and they started reselling it.  A software company has usually evolved from a company that sells software but learned that the value they are providing to their customers is a high-quality system and high-quality customer support that improves the user’s lives.

 My goal is not to state that one type of company is better or worse than the other, my goal is to make you aware to see what type of company you are working for or applying to.  If you are looking for a position in a Software company and end up in a company that sells software, you could end up being frustrated and not enjoying your job. On the other side, if you are not as passionate about software engineering and you work for a software company, you could be left behind as others better their skills and advance.  You may also feel overwhelmed with what is required of you outside of just coding.

 Some of the differences may seem settled, coding practices, the software life cycle, and application quality. But they are the key differences.

 

Coding Practices

Software Company

A company that Makes and Sells Software

Coding standards

We just follow how the source is already formatted

UI Libraries used for consistent UX

Just 3rd party or no UI libraries

Application frameworks and templates are used

No custom framework or templates are used; everything is created fresh

Developments tools standardized

No tools are used or shared

Unit tests are supported

Thinks unit tests are not important

Has custom NuGet Repository

No custom NuGet repository

 








SLDC (Software Development Life Cycle)

Software Company

A company that Makes and Sells Software

Defined process from idea to release and support

Says they use Process X like or worse they use a Hybrid.

CI/CD

Maybe automated builds for the main branch

Automated Deployment

Does not have

Automated Build Smoke Test

Does not have

Automated Regression Test

Does not have

Hotfix process

Does not have or is reactionary

Provided visibility in to process and release

Has status meetings to track progress


Quality

 

Software Company

A company that Makes and Sells Software

Focus on quality and adding customer value

Date orientated

Has hardware and software available to test and develop what their customers use

Tries to get by with minimum testing environments

A foundation of automated test

Does mostly manual testing.  States “We are moving towards automated”

Provides a Product owner who knows and can explain the product

Uses a long-time employee as the “domain” expert

Requires new employees to go through product training as part of the onboarding

Provide no or incomplete documentation and assume you will ask if you have questions.

 

 

Summary

To repeat myself, I don’t think there is anything wrong with either type of company.  I wanted to explain how I see the difference so you can see which company has the same values as you do and when you are interviewing you can determine if the company has the same values.

If you accept a job with a company that has different values than you do, it would be like marrying someone that doesn't have your values, may be fun at first but those differences will cause you grief.   

 


Comments

Popular posts from this blog

Yes, Blazor Server can scale!

Blazor new and improved Search Box

Blazor Wizard Step Component