
Week 2 Reflection: Past, Present, and Future!
For this week’s reflection, I have three questions to ask myself:
- How much did you know about the subject before we started?
- How do you feel about your work this week?
- How can you use this knowledge in future work?
For the first question, I am going to translate the word ‘subject’ here into two more specific questions: “How confident are you in using Ruby before you joined this program?” and “How well are your understanding in the fundamental concepts, like data structures and algorithms, before you joined this program?”
Past: The programming language that made me fall in love with coding
First of all, I don’t have enough knowledge to judge my abilities in using Ruby, because who should I compare myself to? To the fellow students here in Generasi Gigih or to the talent level of the rest of the industry who is using Ruby in their job? All I can say is that I have built products from the grown up with Rails. Secondly, I acknowledge that I am several steps behind CS graduates and that is exactly the reason why I am here. I joined Generasi Gigih so that I can learn deeper software engineering fundamentals and industry best practices my bootcamp doesn’t cover. I was actually relieved when I discovered this program will be taught in Ruby, because now I can focus on learning to think in code ‘why do I have to do this’ instead of figuring out how to do something in a new language. Ruby is not my first programming language, but it is the programming language that made me fall in love with coding.
Present: Stepping outside my comfort zone
Last week’s class covered materials in HTTP Method, Routing and Rendering, Entity Relationship Diagram (ERD) and Data Description Language (DDL), and Data Manipulation Language (DML).
At first, I didn’t like the idea of using Sinatra instead of Rails for routing. I didn’t particularly enjoy it because with Rails, I don’t have to manually set up the routes, connect the database and determine what files to show. Nevertheless, I’m glad this program forced me to use Sinatra because that way I get to learn the actual set up and how everything was connected. But if I am going to build a complex application, I personally will not use Sinatra, because it will be harder to maintain the code and I choose convention over configuration.
Future: Using technology to solve problems and delivers value
Last weekend, I just learned how to play poker. You may ask, why am I suddenly bring up poker? Because I think software development is very much like playing poker.
In poker, you don’t play the cards, you play the person. There are other variables to take into account, like getting good cards, that will increase your chances in winning but the central factor is knowing the people you are playing against. When you get good cards, your number one goal is to make as much money as you can off of them and the only way to get more money is to know what actions that will make your opponents give you more money. Logic helps you determine which action to take, knowing people helps you win money.
People are equally as important in delivering software. You can build an awesome product with the latest cutting-edge tech stack but if your software solution can’t fulfill the expectations of the addressed users, your product will fail. I want to write software for people and be the kind of a developer who first seek to understand ‘why to do something’ rather than ‘how to do something’ and to not treat best practices like a cookbook. It’s helpful to know what I should do, but I want to use the knowledge that I will gain through this program to know what I must do. Logic helps you deliver applications, knowing people helps you deliver value.