The Entrepreneur Forum | Financial Freedom | Starting a Business | Motivation | Money | Success

Welcome to the only entrepreneur forum dedicated to building life-changing wealth.

Build a Fastlane business. Earn real financial freedom. Join free.

Join over 80,000 entrepreneurs who have rejected the paradigm of mediocrity and said "NO!" to underpaid jobs, ascetic frugality, and suffocating savings rituals— learn how to build a Fastlane business that pays both freedom and lifestyle affluence.

Free registration at the forum removes this block.

The different types of software engineering?

theguy22

Contributor
User Power
Value/Post Ratio
77%
Dec 13, 2021
56
43
London, United Kingdom
Hi,

I've just graduated recently and I'm considering a career as a 'software engineer'. I use speech marks because I understand there are many different types of software engineers. I have a maths degree not comp sci so I'm not too familiar at the moment with the field or industry in general.

My long term plan is that if I ever have a tech idea, I want to be able to build it myself.

Facebook, Uber, Netflix, Spotify, etc, are good examples. I want to be the kind of software engineer who can build apps like these. Of course these are big apps that probably have had teams of engineers build it slowly over a long period of time, but I would want to be able to build at least the MVP and the first few versions for apps like these myself.

So what kind of software engineering should I look into for this? And what tech stack should I learn?
 
Dislike ads? Remove them and support the forum: Subscribe to Fastlane Insiders.

AceVentures

Platinum Contributor
FASTLANE INSIDER
Read Unscripted!
Summit Attendee
Speedway Pass
User Power
Value/Post Ratio
404%
Apr 16, 2019
846
3,419
Hi,

I've just graduated recently and I'm considering a career as a 'software engineer'. I use speech marks because I understand there are many different types of software engineers. I have a maths degree not comp sci so I'm not too familiar at the moment with the field or industry in general.

My long term plan is that if I ever have a tech idea, I want to be able to build it myself.

Facebook, Uber, Netflix, Spotify, etc, are good examples. I want to be the kind of software engineer who can build apps like these. Of course these are big apps that probably have had teams of engineers build it slowly over a long period of time, but I would want to be able to build at least the MVP and the first few versions for apps like these myself.

So what kind of software engineering should I look into for this? And what tech stack should I learn?

The official term is called a fullstack engineer, but there are countless tech stacks for different purposes. No one engineer can do it all, hence why teams are necessary to bring together different skillsets towards solving different problems.

Try building something, anything, and you'll gain skills and learn new stacks. See how you can help people, and what solution will serve them. Sometimes it's a technical solution, sometimes it's something else.

Trying to learn everything under the sun in order to build the new Netflix is the wrong approach to success in this field. Instead, focus on solving one problem, and if you need more technical knowledge you can either learn it to do yourself or learn enough to understand how to outsource it.

Let your approach always be: how can I help people? What are people struggling with, and how can I help them? What stack, what technology, what tool, and the how will become evident afterwards.
 

theguy22

Contributor
User Power
Value/Post Ratio
77%
Dec 13, 2021
56
43
London, United Kingdom
The official term is called a fullstack engineer, but there are countless tech stacks for different purposes. No one engineer can do it all, hence why teams are necessary to bring together different skillsets towards solving different problems.

Try building something, anything, and you'll gain skills and learn new stacks. See how you can help people, and what solution will serve them. Sometimes it's a technical solution, sometimes it's something else.

Trying to learn everything under the sun in order to build the new Netflix is the wrong approach to success in this field. Instead, focus on solving one problem, and if you need more technical knowledge you can either learn it to do yourself or learn enough to understand how to outsource it.

Let your approach always be: how can I help people? What are people struggling with, and how can I help them? What stack, what technology, what tool, and the how will become evident afterwards.
Thanks for the response!

I see where you're coming from, I guess I'm just after some direction. Some insight into the different types of software engineers was perhaps what I'm after. Like when someone says they're a software engineer at, say, Google, what are they probably working on? I don't imagine they're building websites. So if I go down the web route and, say, learn html, css, js, react, php, sql, would a company like Google look at that and think 'oh he's a web developer, not a software engineer, can't hire him'?
 

AceVentures

Platinum Contributor
FASTLANE INSIDER
Read Unscripted!
Summit Attendee
Speedway Pass
User Power
Value/Post Ratio
404%
Apr 16, 2019
846
3,419
Thanks for the response!

I see where you're coming from, I guess I'm just after some direction. Some insight into the different types of software engineers was perhaps what I'm after. Like when someone says they're a software engineer at, say, Google, what are they probably working on? I don't imagine they're building websites. So if I go down the web route and, say, learn html, css, js, react, php, sql, would a company like Google look at that and think 'oh he's a web developer, not a software engineer, can't hire him'?

Look at any consumer technology you use, from mobile, desktop, wristwatch, to products/services in industrial settings including manufacturing, processing, energy - they all use software in one form or another.

Software is code we write that gets translated to machine code, which is a bunch of logic (0s for no and 1s for yes). These logic operations allow our machinery to perform different tasks for us.

Close to the hardware, engineers work with more primitive commands, and thus use lower-level programming languages like C and C++ to build interfaces with the machinery.

As you work your way up from the machinery, the levels of abstraction grow. Instead of telling a microcomputer to perform 0s and 1s in a particular sequence in order to generate pixels to represent a graphical image on your screen, there are APIs (application programming Interfaces) that take care of that particular function. So you can now work with more basic, higher-level programming languages like Python that abstract some of that away into a simple word like print().

That's for interacting with computers.

Now what do you make the computer do for you? That is the question you should be thinking about.

Some companies, like Facebook for example, work in this fashion:
- They buy, maintain, and manage massive computer hardware power
- They build communication pathways between customers and their computers (networking)
- They build interfaces for people to interact in value-additive ways

So in this process, you've got databases and all sorts of engineers that work on that aspect of the pipeline. You also have networking engineers that find the safest and most optimal ways of sharing information across the globe. Then you have all sorts of other software engineers that work more downstream of that.

Some build interfaces, these are called front-end engineers. When you log onto Facebook.com on your desktop, or on mobile, some page pops up, and you interact with those screens with buttons and tabs and clicks and finger taps. Front-end engineers design and manage what those interfaces look like.

Other engineers work on something called the back-end. What they will do is to make sure when you press on a button on Facebook, that button will go to a particular database and fetch the correct return for you. They make sure that all of the information that must be accessed, managed, and manipulated is rigged up to the interfacing elements of a program.

These programs can be built on the Web, accessible by browser, they can be built as standalone programs that run on operating systems like Windows, Mac, Linux, they can also be built for mobile devices, like Apple iOS and Android.

A full-stack engineer that typically builds for the web might use this sort of a modern stack:
- A framework to build user interfaces (things like WordPress, ReactJS, NextJS, etc.)
- A system for building and managing all of the components and modules of the program (NodeJS and ExpressJS, Firebase, Django for Python)

Anything else the engineer wants to integrate into their web app - this might include something like graphics, so they might also have some experience i WebGL, which is the interface that allows web browsers to use your computer's graphics capabilities to illustrate things on the screen.

Anything else they want to add, they can find a way to integrate into a cohesive structure, by way of adding more modules/components.

Another engineer might also be able to build fully capable web apps, but also have .NET and C++ capabilities. So they can build Windows applications or a user-interface for other devices than simple operating systems. They might build a little RC robot, and then sell you the robot which is connected to your phone by a browser and you can use your browser as the joystick for the robot.

As you can tell, there are infinite variations to be played with what is possible and how you can rig things together. If you're thinking about what would get you a job, you should go look at some job listings and see what they look for. Go on LinkedIn and scan for different job postings, different titles, and see what they do, what their responsibilities are, what tech stack the company is currently using, etc.
 
Dislike ads? Remove them and support the forum: Subscribe to Fastlane Insiders.

theguy22

Contributor
User Power
Value/Post Ratio
77%
Dec 13, 2021
56
43
London, United Kingdom
Look at any consumer technology you use, from mobile, desktop, wristwatch, to products/services in industrial settings including manufacturing, processing, energy - they all use software in one form or another.

Software is code we write that gets translated to machine code, which is a bunch of logic (0s for no and 1s for yes). These logic operations allow our machinery to perform different tasks for us.

Close to the hardware, engineers work with more primitive commands, and thus use lower-level programming languages like C and C++ to build interfaces with the machinery.

As you work your way up from the machinery, the levels of abstraction grow. Instead of telling a microcomputer to perform 0s and 1s in a particular sequence in order to generate pixels to represent a graphical image on your screen, there are APIs (application programming Interfaces) that take care of that particular function. So you can now work with more basic, higher-level programming languages like Python that abstract some of that away into a simple word like print().

That's for interacting with computers.

Now what do you make the computer do for you? That is the question you should be thinking about.

Some companies, like Facebook for example, work in this fashion:
- They buy, maintain, and manage massive computer hardware power
- They build communication pathways between customers and their computers (networking)
- They build interfaces for people to interact in value-additive ways

So in this process, you've got databases and all sorts of engineers that work on that aspect of the pipeline. You also have networking engineers that find the safest and most optimal ways of sharing information across the globe. Then you have all sorts of other software engineers that work more downstream of that.

Some build interfaces, these are called front-end engineers. When you log onto Facebook.com on your desktop, or on mobile, some page pops up, and you interact with those screens with buttons and tabs and clicks and finger taps. Front-end engineers design and manage what those interfaces look like.

Other engineers work on something called the back-end. What they will do is to make sure when you press on a button on Facebook, that button will go to a particular database and fetch the correct return for you. They make sure that all of the information that must be accessed, managed, and manipulated is rigged up to the interfacing elements of a program.

These programs can be built on the Web, accessible by browser, they can be built as standalone programs that run on operating systems like Windows, Mac, Linux, they can also be built for mobile devices, like Apple iOS and Android.

A full-stack engineer that typically builds for the web might use this sort of a modern stack:
- A framework to build user interfaces (things like WordPress, ReactJS, NextJS, etc.)
- A system for building and managing all of the components and modules of the program (NodeJS and ExpressJS, Firebase, Django for Python)

Anything else the engineer wants to integrate into their web app - this might include something like graphics, so they might also have some experience i WebGL, which is the interface that allows web browsers to use your computer's graphics capabilities to illustrate things on the screen.

Anything else they want to add, they can find a way to integrate into a cohesive structure, by way of adding more modules/components.

Another engineer might also be able to build fully capable web apps, but also have .NET and C++ capabilities. So they can build Windows applications or a user-interface for other devices than simple operating systems. They might build a little RC robot, and then sell you the robot which is connected to your phone by a browser and you can use your browser as the joystick for the robot.

As you can tell, there are infinite variations to be played with what is possible and how you can rig things together. If you're thinking about what would get you a job, you should go look at some job listings and see what they look for. Go on LinkedIn and scan for different job postings, different titles, and see what they do, what their responsibilities are, what tech stack the company is currently using, etc.
Thank you for the detailed response! This was very insightful!

I guess, for my ultimate goal of being able to build a tech startup idea, perhaps I would need to know how to make web apps and/or mobile apps. That would be good to get the MVP and the first few versions going. When I think about it, most the tech companies I can think of have either a web and/or mobile version of their product.

How does a web app developer differ from a software engineer? I'm aware that technically the former is a subset of the latter, but it just seems like generally within the industry people don't consider web development 'serious' enough to be considered software engineering. If a web developer was to refer to himself as a software engineer and gets asked what he's built, would other devs in the industry say 'ah so you mean you're a web developer'? Is making websites/web apps, not 'serious' enough to be considered a 'software engineer'?

Also, my understanding is, web apps are different from websites. Websites to me just generally display information. e.g. a restaurant would just have its menu, location, some reviews, and contact details. It's not an app in the sense that people can do something with it. A web app, on the other hand, allows me to interact with it to achieve something e.g. citymapper.com/webapp - I can input my location and where I want to go, it will give me the top quickest/cheapest routes via public transport. A more complicated example would be canva.net.

Would I be correct in thinking that 'websites' are getting commoditised? It's easy to build information displaying websites for general businesses using no-code tools. I don't see why a computer-using restaurant owner would ever need to hire a developer to build a restaurant website, unless he's just not aware of no-code tools or can't be asked spending some time. If I am focusing on web apps as opposed to websites, would that require a different tech stack to that typically used to build websites (which I understand to just be html, css, js, php, mysql)?
 
Last edited:

AceVentures

Platinum Contributor
FASTLANE INSIDER
Read Unscripted!
Summit Attendee
Speedway Pass
User Power
Value/Post Ratio
404%
Apr 16, 2019
846
3,419
How does a web app developer differ from a software engineer?

Verbal masturbation. An engineer is a problem solver. What tech stack you use is of little relevance, what's important is your ability to solve problems with whatever tool you have.

I'm aware that technically the former is a subset of the latter, but it just seems like generally within the industry people don't consider web development 'serious' enough to be considered software engineering. If a web developer was to refer to himself as a software engineer and gets asked what he's built, would other devs in the industry say 'ah so you mean you're a web developer'? Is making websites/web apps, not 'serious' enough to be considered a 'software engineer'?

Nonsense.

Building for the "web" is the idea of building using an operating system known as the browser. What's incredible about the browser is it's universality: it can be run on almost any device or operating system. All you need is a browser, an internet connection, and an IP address. Web Apps are akin to any other app, except they are accessed by your client by way of them connecting to an IP.

I reckon building for the web has a higher outlook than building for any other device - specifically for this reason. Moreover, modern tools for building on the web include some of the fastest processing capabilities: one instance of this is something called WebGPU or GPGPU (general purpose GPU processing, accessible by web). This allows the browser to connect to your client's GPU and perform wicked fast multi-processed computations, a feat of engineering that all software applications are beginning to embrace with growing processing demands.

Also, my understanding is, web apps are different from websites. Websites to me just generally display information. e.g. a restaurant would just have its menu, location, some reviews, and contact details. It's not an app in the sense that people can do something with it. A web app, on the other hand, allows me to interact with it to achieve something e.g. citymapper.com/webapp - I can input my location and where I want to go, it will give me the top quickest/cheapest routes via public transport. A more complicated example would be canva.net.

Websites can be simple static pages, like a bunch of html pages with information on them. Or they can have powerful features that fetch information from other places across the web, perform computations, render graphics, etc. You can build a fully fledged video-game on the web, for example. The range of what you can build is very wide - and moreover, the web is more embracing of opensource technology than closed-source systems like Apple. This provides you, the engineer, with more tools than you'll know what to do with.

Would I be correct in thinking that 'websites' are getting commoditised? It's easy to build information displaying websites for general businesses using no-code tools. I don't see why a computer-using restaurant owner would ever need to hire a developer to build a restaurant website, unless he's just not aware of no-code tools or can't be asked spending some time. If I am focusing on web apps as opposed to websites, would that require a different tech stack to that typically used to build websites (which I understand to just be html, css, js, php, mysql)?

I believe you are getting a little lost in the sauce. If you want to work as a freelancer, for example, helping other people with their websites, you can build simple websites for them depending on their needs, or you can build behemoth applications, again depending on their needs.

If you want to land a job instead of running your own business, you can try to find job-listings that interest you and learn more about what their company prefers in terms of the technology they use.

One last thing to remember: as an engineer you will continuously grow your toolkit. A good engineer will explore different solutions to different problems and continue to learn. There is no such thing as learning PHP and being a web dev and that's it. That's silly - you're an engineer, you will keep learning new things and helping people in more creative ways.

Most important thing remains the same: solving problems for people.
 

Post New Topic

Please SEARCH before posting.
Please select the BEST category.

Post new topic

Guest post submissions offered HERE.

New Topics

Fastlane Insiders

View the forum AD FREE.
Private, unindexed content
Detailed process/execution threads
Ideas needing execution, more!

Join Fastlane Insiders.

Top