The last post was an exciting post about new learning, and this one is too….well sort of. As new software developers we will constantly be challenged and expected to perform. Many times we will need to work on the fly learning new legacy code. And that is what this post is about.
Working on a large base of legacy code that is not well documented or well commented can be very stressful. It can begin to feel like trying to trace a single noodle through a big bowl of spaghetti. But it is something we all will face st some point or another. So pull up a chair, grab you’re napkin and take a big bite as we explore some considerations for dealing with hard-to-learn legacy code.
DO: – Try and give it your best in exploring the code – Walk through it with the debugger – Come up with specific questions about functionality – Ask for help from a developer more familiar with the code base
DON’T: – Over think it (you got this!) – Stress yourself out, after all its just code! – Waste time, we have deadlines to meet, ask for help there is no shame in it. – Cling to assumptions you have made about how it works – Be afraid to ask more questions!
These are just some things I have discovered in my own dealings with some legacy code. It is easy for us to stress ourselves out, but really there is no need. Do your best to sift through it and learn to the best of your abilities, and then come up with some thoughtful questions that show you have been trying. Then once you are more comfortable with the limited knowledge you have acquired, ask a more senior developer! They have the knowledge and its better to ask questions than to waste your valuable time spinning your wheels.
At some point just like every other project you have done, things will click. When they do it will be very rewarding and none of the stress or worry will matter; Remember that. As developers it is easy to be hard on ourselves, but don’t be. You are smart and very capable, so get out there and take a bit bite of some legacy code!!
This past week has been all about containers! I have been doing my best to learn Docker on the fly… I have secretly always wanted to learn more about containers and now capstone is giving me a chance.
To be perfectly honest, Docker has always been this abstract “Cool Thing” that I have heard about, but without an application for it and a reason to learn it…..it didn’t seem to be a priority. But thankfully the project I am working on is perfectly fit for it. We are migrating a legacy simulation engine to the cloud that runs on an older version of .NET Framework, this seemed like a perfect opportunity to use Docker, so here I am. I will use this post to now introduce Docker to you, encase you are wondering about it like I have been.
What is Docker?
Docker is a platform that allows developers to package runtime environments of all different types into a structure known as a container. This has the added benefit of being able to run all sorts of different code in very different environments, but with the added benefit of still being able to integrate it all together. Pretty cool right ? For example, say you had some unique web app that needed to access a Postgres Database, a MySQL database and a MariaDB database, with a Node.js back end and you wanted to quickly generate a front end using Jekyll…. Docker has you covered. You can create a quick docker-compose.yml and run a quick command line command and have the different environments up and running in minutes! There’s a lot more to it than that but in essence it really is that simple. At the root of things docker is built around the idea of a container and some other things.
Dockerfile – This is essentially a running process of some type. In this file you can configure a number of things including commands to run on start of the container, which ports to expose and more.
Docker Image – This is the template for running a docker container, there are many official ones such as Ubuntu, Alpine, MySql, Node….. the list goes on. This is kind of the basis for the environment within the container, and you can fully customize them.
Docker Container – This is essentially a running process that is built from your Dockerfile and image. It is packaged neatly and highly portable.
In designing the architecture of our project we realized early on that containerization will give us a huge benefit in meeting our client requirements. Maybe docker can help you to on a project? I encourage you to look into it!
So the first two weeks have passed and things are slowly starting to take shape. The first week proved to be challenging in ways I hadn’t foreseen. Trying to find a project and teammates who are interested on working on the same thing was quite a challenge. While picking from the pre – canned project ideas, I explored a couple of different options. There was a 3D printing project, a web app to find Farms close by for Oregonians, A JS fiddle style web app for compiling C/C++….quite a variety. I must admit, at first I wasn’t very drawn to any of them.
Before I make the big reveal, I think I should give a little bit more background about myself. For the past 8 years I have been a wildland firefighter. The most recent 5 of those years, I have been employed as a Fire Forester. During this time I have seen many deployments all over the country and even worked my way into leadership. I know what you’re probably thinking…what in the world does that have to do with software engineering? The funny thing is ….I have been asking myself the same thing
On the road to becoming a Software Engineer I have been wondering on how I my best blend my full skill set together. I do have 8 years of experience with geospatial information systems (GIS). The more I search for jobs the more I realize that I do have a unique skill set that some companies would desire. It just so happens that the final project I found when searching for my capstone project was Code3-Response partnered with Levrum Data Technologies.
This company builds software that helps emergency jurisdictions using machine learning in order to make strategic planning decisions. I also allows them to measure their effectiveness and even simulate different staffing paradigms. This data driven approach to emergency response is definitely the future of the sector and I am so excited to have found and been accepted to this project along with my team! I look forward to breaking ground and having a positive impact on emergency response!
Welcome! My name is Joe and this is my new blog where I will chronicle my journey toward becoming a software engineer as I work toward completing my capstone project as a soon-to-graduate CS senior at Oregon State University (OSU). Since this is a programming blog, in an effort to maintain balance in the force, I have chosen to keep the “Hello world!” title for my initial post. You may see this blog change a bit over the course of the next 11 weeks as it evolves through the fall term. But I encourage you to come along for the ride with me!
To give you a little bit of information about myself, I am a professional Forester and Wildland Firefighter; I have worked in this field for around 8 years. When I started my original college journey way back in 2006 I started as a Computer Science Major. Back then I was a little bit unsure of my path still and was quickly developing a great love of the outdoors, which is why I ended up switching majors. After all this time the question of “What if ?” has never left me, and I have always continued to program as a hobby (weird right?!). In 2019 I decided that I would go back and follow my dream and prove to myself that I was smart enough to major in CS and here I am now with the Highest GPA I have ever maintained in my life! But enough about me…I’m excited to start this blog and I am going to leave you with 3 tips to the first week of capstone (even though I am currently living it and navigating these things myself.)
Start Researching Your Project Early: I can’t stress this one enough! As I am writing this I so wish I did a better job of brainstorming for my capstone project beforehand. I know that ultimately I will work hard with my team and come up with a great idea and end product, but having a great and unique idea to finally build out after you have been able to think about it and plan all of the neat features it might have, well it would be pretty cool!
Don’t overthink it: We all have a lot going on outside of capstone whether it be real life stuff, other classes, etc… Just remember to be good to yourself and take it easy, follow the process and to some degree let things evolve organically. Always remember things will work out in the end as long as you do your best to manifest positive energy into everything you do…don’t sweat the small stuff, you can do this!
Be excited, be very excited: Though we have a long road ahead of us in our projects, this is such an exciting time! For most of us we are very near to graduating and getting one step closer to being professional software engineers. This is our time to showcase our abilities and skills that we have gained through our hard work as students. Get ready for the grind, those 100 hours are going to be filled with all kinds of new learning and coding, lots of coding, but we all know the rewarding feeling when we compile and it runs! At the end of this we will all have a spiffy new project to showcase and that’s something to be excited about!