Efficient Software Engineering

Efficient Software Engineering

Status
Published
Date
May 19, 2024
Author
Category
SWE

Guide To Efficient Software Engineering

March 20, 2024

Aakash Dave

Imagine this - you're a college student exploring internships and preparing for the workforce. You discover that software engineering is more than coding; it's about engineering solutions. As a novice, you might be eager to try different technologies and methodologies. That's great, but remember, your primary role is to solve problems efficiently. As an experienced engineer, I'll share insights to shape your approach to software engineering.

image

Let's dive into some actionable points.

✅  Right stack over the latest stack

Don't go for the latest tool to build your software; instead, use the right ones that best suit your use case. When you work with experienced engineers (not just coders, engineers), a single important piece of advice you'll get is to pick the right tools that solve the problem statement, that can quickly stand up a scalable system and move the wheel forward.

🧑‍💻  Keep things in-house

As you progress with your programming endeavors, you'll realize that you want to control the process as much as possible. And by the process, I mean the tools and the flow of the data. This could only be achieved if you are building more pressing tools in-house. This is not always the right solution and in fact, there is no one-size-fits-all, but it gives you a wider technical scope to play around with. Take this as an example, you want to build a social network, where the data types could be variable, then you are left with 2 options.

a. Choosing a BaaS, like Firebase, Vercel, etc., which limits your control on the stack could potentially create roadblocks in the beginning. You also have to adhere to their policies and dependencies.

b. Building an in-house backend. This might take a little more time, but will give you maximum opportunities to mold your process the way you want. No relying on packages, dependencies, or deprecated issues. Just straightforward work.

💪  A Robust Yet Flexible System Design

Since we mentioned in-house development, here's another thing - the system design! Building software is not just a bunch of code or services put together. It's a harmonious sync between the movement of data within each pipeline (client or server). Your prime goal should be making a flexible, yet a robust system that can handle a decent scale (since you are starting out. As you advance, you'll gain experience on how to build large scale items.) Your systems should be prepared for various surges or traffic and you should have answers to optimizing or building on top of the current architecture.

😎  Be a Google pro!

Working on complex problem sets brings challenges in your development process. It is crucial to have the right approach to finding solutions, i.e., Googling, developer communities (like StackOverflow), or just going through documentation. This is a gradual process, but it's immensely beneficial to start now. It, in fact, even comes down to how you input a query in Google. Let's say, you want to find a way to determine if a block is in the center of the screen, most people would start with the following option:

a. Google "how to know if the div is in the center”

b. Instead, this query would fetch you leaner results "StackOverflow js determine if div is in center"

🤝  Communication is the key!

Be a good communicator, your life will become much easier. The better you can deliver your ideas, the more successful you will be at engineering great products. Communicate, ask, or just discuss, a lot of software engineering is about collaborations.

🚀  Prepare well, execute better!

Fred Brooks once said, "What one programmer can do in one month, two programmers can do in two months". Keep in mind, wasting too much time after just conversations or ideations is just not efficient. Take up tasks, split the workload, and set serious deadlines, that's how you'll progress with your development. There is no such thing as a perfect system, so don't waste time doing that. Things will get better as the system continues to be used by the users and you'll keep on optimizing it.

Overall, Software engineering is a skill that develops over time with experience, not something that could be just taught in labs or with books.

Tell us what do you think about this, or share it with the ones that may find this helpful.

⚡️ That's the ethos for Colab!

Train to be directed to pursue these goals, work with experts on serious pipelines of development in a collaborative setting that gives you an exact look into how the real world works.

Catchup sessions announcing soon.

Cheers!

😀

Ready to build ample experience?

Just schedule the interview to get started!

Schedule Interview One

Want more of this?

We share such hacks and tips(even about companies) directly in your mailbox!

💡
image

Contact Us

📧 Send us an e-mail

(or live chat on the bottom-right corner of the screen)

Find us at:

https://www.instagram.com/colab.withus
https://www.youtube.com/channel/UCnIVFVJWAdthdFqhHF5ioew

Made with 💜 in San Fransisco 2024