Though I entered into ICS 314 expecting to learn some Javascript and how to structure a program, I instead felt like I learned how to build a website. So when I walked out of this class for the last time, it certainly did not feel like a Software Engineering class. However, stopping to reflect and finishing up my final project, I reflected more on the things that I did not explicitly learn, but instead got used to doing. What I discovered were both hard and soft skills that I am able to use for a variety of subjects. Most of them had to relate to working with others, which I had little experience with in terms of coding. So, when I started to adopt them and add them to my process like building blocks, it felt natural and I did not really notice. However, reflecting on them really does clear up and make more obvious how much I have learned this semester.
Prior to this class I had never worked colaboratively on a coding project, and it was interesting to see how familar using a specific flavor of the Agile Project Management system was. Issue Driven project management was essentially a more organized version of your standard group workflow with a pile of things to do on a board, and people tackling one thing at a time, moving them from “in progress” to “complete” when they’re done. The largest advantage I can see as someone who studies biology, is how intuitive and flexible it is. The user does not even have to know what Agile is, nor do they need access to any kind of specialized software. Everything can be kept simple with a google doc, or a spreadsheet so everyone can see what eachother is doing. I can definitely see myself using this in my lab where dragging and dropping cells in Excel is the extent to their computer knowlege, but where knowing what eachother is doing is crucial. This way, I can see that Joseph has sent in and recieved the results from the RNAseq analysis, and now I can start parsing through and extrapolating what I can.
All of that it not to say that I did not learn any hard skills. Since starting the final project I have made ample use of ternary operators. They are essentially “if else” statements that are formatted like so:
(if statement) ? (do if statement is true) : (do if statement is false)
They are extremely useful for keeping things nice and short if you are working with fairly basic if statements or are doing functional programming (passing functions into functions to reduce the number of declared variables return function1(function2(a)) + function3(b)
). I find both of them very convenient as that way I dont have to write multiple lines, and they work within the fields of functions unlike full if statements. Even more important for the final project I just completed, you can use them within HTML, while you cannot do the same with its more standard counterpart. What I had learned when formatting data roughly 2 days prior to writing this was that they exist in Python (though using a literal if and then rather than ? and :), and I can now see myself using them very frequently. Since that is the language I use primarily, and I find myself setting up if statement after if statements only to pass the value into another function. This way I now know that I can update a lot of my code to condense what I have already into much smaller, and hopefully more understandable pieces of code. It is also very comforting to know that I have already been applying what I learned in this class without knowing it.
While it certainly did not feel like a software engineering course while I was taking it, I realized that I learned many skills that not only applied to the subject, but to others as well. They came steadily and naturally due to the way it was introduced in the class, and I only really understood while I was reflecting and working on the final project. If I did not learn these things then I probably would not have finished anything on my project board nearly as fast or as efficiently as I did. Not only this, but I also see myself in the future using the various skills from this class.