Creating Software Engineering Projects — A Structural Approach

Because failing to plan is planning to fail.

Bree Warren
The Startup
5 min readSep 19, 2020

--

Thank you for visiting this post! To see a sample README template, click here. Be sure to also take a look at my other work on LinkedIn, Github, and my Portfolio.

Pseudocode of a Mother-to-Be

What is something that software engineers and pregnant women have in common? Well, other than possibly back pain (if your whole day consists of coding seated at a desk): developing babies, and due dates for them.

Specifically, engineers invest countless hours into programming projects that, upon submission at its deadline, are regarded in likeness to a beautifully created bundle of joy. While this particular baby may not be made up of actual DNA, it certainly is comprised of code.

I discovered this similarity as I reflected upon the specialties I was exposed to during my graduate studies of Medical Science. Of the disciplines, I found the most appealing to be Women’s Health, especially after completing a surgical and clinical internship with a renowned Obstetrician/Gynecologist, Dr. Terri Woods-Campbell. It was here that I witnessed her discussions with patients of having a birth plan — an outline detailing how pregnancy is to be managed before, during, and after birth. The physician was intentional in expressing the importance of always having a plan to best prepare for the forthcoming journey.

Now, as I merge the industries of computer science and medicine, I recognize the parallels in an expecting mother’s experience with that of an engineer. As a result, I’ve continued to utilize the strategic implementation of maintaining a plan with the projects that I create — as should you.

Structuring a Process for Ruby-based Projects

Just as an expecting mother would care for her unborn child — from the time of its conception to its development, and ultimately, its delivery — a tireless amount of energy and care is poured into projects by programmers, which is then reflected in the application’s ability to effectively communicate with databases and perform complex methods, both cleanly and concisely.

With this being said, creating a project of any magnitude can easily become overwhelming for most novice developers, especially while still establishing a sound knowledge base in concepts of software programming languages, such as Ruby. But by implementing a structured, sequential approach, performing tasks will be both efficient and purposeful.

Following a Template to Enhance Planning Practices

Let’s take the physician, the patient, and her pregnancy to explore their relationships with one another, from a computer science perspective. As mentioned earlier, there are three stages:

I. Conception

The overwhelming feelings of nervousness and excitement that pour over an individual when the word “positive” is read from a pregnancy test are the same likely to be experienced once the perfect idea of a project is conceived. These following steps will allow you to expand on the original abstraction:

  • Brainstorm a concept that reflects an object-oriented relationship (in this post’s example: a mother, a medical provider, and the pregnancy that joins them)
  • Establish the models (we’re using a three model, many-to-many association)
  • Prepare a thorough README.md file. This is arguably the most important step, as it will act as the template of your structured approach. Avoid the temptation of diving straight into coding! Although the task may seem boring and tedious (especially if you just derived an idea you believe would become the next letter appended to the FAANG acronym), allowing yourself to organize your thoughts into a pattern will make the logical aspect of creating methods that much easier down the road.

II. Development

Your new baby is growing! Some mothers-to-be typically compare the size of their unborn child to an avocado or small melon as it develops; ours will be measured in gigabytes. This stage will inevitably be the longest, and although there may be difficult times (loss of sleep, increased appetite, mood swings — sound familiar?), the final result will be most fulfilling. You will:

  • Create a functioning environment with necessary gems and files to properly run necessary commands
  • Implement table migrations to structure data collection with SQL
  • Develop table properties to be collected from the instances of each model
Using your README (left sides, in white) as a template for the actual coding (right sides, in blue) of model/table associations
  • Enhance functionality with methods: basic CRUD (create, read, update, delete) actions; additional queries; user-friendly interaction with TTY Prompts

III. Delivery

You’ve come so far; whether through the clicking ofsubmit to your supervisor, or of “play” amongst your peers, this is your moment! But, like we’d tell an expecting mother in labor — just breathe. Relax, but do not become complacent. There’s still work to do, but you’ve got this. Here’s how to finish strong:

  • Revise and update the README.md file so that it properly reflects and aligns with outlining associations, table properties, methods, in an organized manner
  • Clean up your code — include comments and make the front- and backends aesthetically pleasing
  • Navigate through the application as if you are a user to correct and minimize any missed bugs/errors
  • If presenting — I recommend a pre-recorded walkthrough of the project, encompassed by both a live introduction and conclusion. Rehearse how you plan to navigate through the application before recording to ensure smooth transitions between features and to minimize breaks and pauses. You can even close with things you learned, difficulties you experienced and how you overcame them, and any highlights worth mentioning.

And that’s it! Congratulations on the new addition to your portfolio. Next time that you catch baby fever, you’ll now be equipped to approach any future project in a manner that is practical, structured, and efficient.

--

--

Bree Warren
The Startup

Software Engineering • Medical Science • Health, Fitness & Wellness • Creating software that contributes to both the medical and computer science fields.