As I wrap up my Flatiron experience, I’m feeling pretty grateful for being able to learn these invaluable skills, but more importantly, for learning how to think and how to solve problems. I once heard someone a long time ago say one of the most profound things I’ve ever heard, which was, “You can’t think of the solution when you’re focused on the problem.” What he meant was that in order to be solution-oriented, you have to approach the problem from a perspective of finding, or focusing on, solutions until the problem doesn’t exist. With that in mind, as a thumbnail sketch, there’s a few key elements I take away from Flatiron that my education tought me.
Understand how things work before getting them to work. Although seemingly obvious, I overlooked this one until I started talking outloud to myself or my little wooden owl I have in my room (which, by the way, apparently people outside of software developing think is weird). When I got to the point in the curriculum where I could begin helping people with concepts I understood, I began realizing how important communicating concepts is. I could tell them that in order to pass a test, they had to return the instance variable at the end of the method, but more importantly, I learned how to explain why. Point blank- memorizing is not the same as understanding. Although at the time I was weary as to why we learned how to create our own methods before finding out there were methods we could use to do the exact thing- I get it now. Know how things work under the hood and it will not only make your appreciation for those tools that much stronger, but your problem solving skills will amplify.
Break big problems down to small problems and solve one at a time. This is basic problem solving, but necessary to apply. Especially in fields such as engineering and designing, when there’s many ways to get to the solution, but you need a reliable, objective and robust solution, you must employ this principle. Not only will it save you headache, but you can make mental checks that you’ve hit every requirement along the way. So, for something as simple as solving an algorithm to reverse a string, to a beginner programmer like myself, even that can deem scary if you’re put on the spot. After a deep breath, remember, you can break down every problem. So, you would need to:
A. Understand the problem. What is the input? One word, any string size, an array?
B. Think of how to isolate each letter depending on the input type.
C. Is there a reverse method you can use on that input type? If not, can you convert the input type to one that does?
D. Get a working solution based off A-C.
E. Is there a more reliable, efficient way to solve the problem? Like my first bullet, do you understand how the reverse method is working if you used one? Think about the process of how you would isolate each letter and return a hint hint new string with the letters reversed. Then start from the top.
Learn how to Google and ask questions. This was a key lesson I took away from the 1:1 portfolio project support. 30 minutes has never seemed so short until you’re on a video call with an instructor much more experienced than you and have a laundry list full of tiny bugs and don’t know which one to start with. My first few times, I usually spat out everything that was wrong with my app, until I realized maybe having a list of issues I wanted to touch on in ascending order or importance was probably a better idea. Not only does this organize the meeting, but it forces you to communicate what the actual problem is so you know what you’re trying to solve. Near the last project, I usually ended up solving most of my issues before the support sessions thanks to my new Googling skills (which are very important skills).
Challenge yourself and be patient. While I think building small apps where practicing skills you feel comfortable with is super important, I always liked to push myself a bit outside of my comfort zone with my projects. I would get creative and employ skills learned in previous sections in addition to the project requirements or use new gems. For my React project, I took the time to implement user authentication, which was a lot more complex when you have seperate libraries for the front and back end of your application. Although at times, I just wanted to put it aside and make a quick cooking book or to-do app because I wanted to finish quickly, I learned that having patience when really using your full potential is so worth it. Once you do solve it, not only will you feel fulfilled and proud, but you’re able to move forward in your skillset than if you had only done that within your comfort zone.
Have FUN! There’s a great author by the name of Cal Newport, who’s a computer science professor and speaker. He’s an enthousiast of a concept he coined by the name of “deep work”, which is the power to be able to work without interuptions and shallow tasks, such as checking inboxes or social media. His advice to students looking to improve their success is in addition to increasing hours spent in “deep work” mode and active recall, is to be happy and have fun now. Not when grades improve, not when you get the job or the raise, but to really feel good and enjoy life right now. Chasing happiness never results in being happy, so feel grateful for how far you’ve come instead of dreading how far you have to go.