The First Steps for Software Engineering

Imagine you’re building some software. What’s the first thing you need to do? Discover what you’re building right? In a software engineering role, software is built for a reason. No one builds software for no reason. So, the first thing you need to do is figure out who you’re building software for. Once you know who you’re building for you have to know what they want done. This is hard. I know, it sounds easy, but why is it hard? Communication between people is hard enough to begin with, but here we’ve got to translate product talk into engineering specifications.

For example, you may be told something like “I want to be able to recognize the digits written in these images”. How do you turn that into engineering specifications? Let’s break it down. What do we have to do? We need to process an image and classify the contents of an image. How do we process an image? We break it down into pixels. How do we classify the contents of an image? Well, there are many approaches, perhaps we use some sort of fundamental machine learning classification algorithm like K-Means, K-Nearest Neighbors, or Logistic Regression. Perhaps we should use a more complex machine learning technique like a neural network

Ask the Right Questions

Image from QuoteFancy

“Ask the right questions, and the answers will always reveal themselves.”

Oprah Winfrey

This quote doesn’t just apply to life. It applies to software engineering as well. 

Back to our example, how do we pick our approach? Well we’ve got to ask the right questions. Look what I’ve been doing so far in that paragraph above. I’ve been asking questions. I’ve been asking questions about the process, I’ve been asking questions about what we’re doing. We already know who we’re building it for, ourselves to get an example of how to discover software engineering requirements. 

Technical Choices

What am I asking questions to discover? We’ve already broken down the product description into a couple engineering specifications. Now let’s discover which of those methods I listed above we should implement. How can we decide which technique to go with? We’ll need to know what the input of the image looks like. Let’s say we’re working with the MNIST dataset. Those images are 784 pixels, we’ll probably want to use a neural network. We could use a more fundamental machine learning technique, but we’ll need to augment the data. Maybe we could do it with K-NN or K-Means if we apply principal component analysis on it. Anyway, to get to the next step, we have to pick one, so let’s pick the neural network. 

Once we’ve picked the technique, we have to pick a way to execute the technique. We can use a library like PyTorch or TensorFlow, or we could build it from scratch. That’s all there is to the discovery section of software engineering. From here we’re going to create a design document and then build the software. For more information, check out the book Discover, Design, Deliver – the Blueprint for Building Software.

Learn More

To learn more, feel free to reach out to me @yujian_tang on Twitter, connect with me on LinkedIn, and join our Discord. Remember to follow the blog to stay updated with cool Python projects and ways to level up your Software and Python skills! If you liked this article, please Tweet it, share it on LinkedIn, or tell your friends!

I run this site to help you and others like you find cool projects and practice software skills. If this is helpful for you and you enjoy your ad free site, please help fund this site by donating below! If you can’t donate right now, please think of us next time.

Yujian Tang
Yujian Tang

I started my professional software career interning for IBM in high school after winning ACSL two years in a row. I got into AI/ML in college where I published a first author paper to IEEE Big Data. After college I worked on the AutoML infrastructure at Amazon before leaving to work in startups. I believe I create the highest quality software content so that’s what I’m doing now. Drop a comment to let me know!

One-Time
Monthly
Yearly

Make a one-time donation

Make a monthly donation

Make a yearly donation

Choose an amount

$5.00
$15.00
$100.00
$5.00
$15.00
$100.00
$5.00
$15.00
$100.00

Or enter a custom amount

$

Your contribution is appreciated.

Your contribution is appreciated.

Your contribution is appreciated.

DonateDonate monthlyDonate yearly

2 thoughts on “The First Steps for Software Engineering

Leave a Reply

%d bloggers like this: