4 minutes
Hackbright Week 2
Week 1 of Hackbright just wrapped up! Before digging into week 2 of Hackbright, I want to first observe a short moment of silence to honor the greatest head of house Slytherin has ever seen.
We covered a lot of ground this week at Hackbright, including the following:
- Collections: lists, tuples, sets, dictionaries
- Markov chains
- Twitter API
- Object-oriented programming
- More command line tools, including working with virtualenv
For me, week 2 had a real focus on expanding our understanding of developing software by bringing together all of these data structures and logical tools and getting our brains ticking on good “design”. Design is not visual in this case — it refers to being cognisant of how we stitch together all the moving parts of our program. The lab exercises are longer this week and allude to this by bringing together different learning points and showing us how all the teeth on the gears fit together.
As an example, this week in lab with our pairs, we built a program, a Twitter bot, that tweeted messages generated based on a body of text (corpus) provided by the user through a Markov chain. This combined two separate tools, a mathematical model and a social media API, demonstrating how they work together to form a simple program with specific features. Also, it was just fun playing with various iterations of “Green Eggs and Ham” and other corpora (would you, could you, Sam I am?) 🍳
And of course, the star of this week is working with classes, the final frontier of object-oriented programming in Python (for now). The way we interact with them reveals a lot about the way the creators of Python intended for developers to think about object-orientation. Python classes are very fluid and I find them intuitive to set-up because they have a flexible set of rules. A valuable way of embedding these concepts for my pair and I this week was to constantly say out loud, using the proper vocabulary, each time we “instantiated a new object with the class (blank)” and set “instance/attribute variables”, etc. The verbal repetition helped solidify the material.
During Career Coffee this week, we talked about telling our stories. We are encouraged to reflect on our past experiences and extract our personal narratives. Combined with the design-centric class materials this week, it really got me thinking about what my personal mantra/philosophies on software engineering. I began to put together a profile of “what type of software engineer I want to be (when I grow up)”. I know that sounds like a Buzzfeed quiz, but since I don’t feel I have the authority to speak definitively about what makes a good software engineer, I can only share the qualities I currently aspire to embody in my upcoming career. They are fairly general and are still budding, hopefully they are still interesting.
So far I’ve chosen the following three qualities to work on:
- Empathy for everyone and everything — the engineering team, the maintainer(s) of the code, the product team, the end-user, and the technology
- Never let the technology outgrow me — or at least my passion for it
- Grit and perseverance — no problem is above me but I am not above the problems
As mentioned earlier, the picture I’ve painted is fairly rudimentary, which makes sense since it is only week 2. I just wanted to get some of my thoughts and goals on “paper” and reflect on them as we continue through our journey at Hackbright!
Lastly, I’ve gathered feedback from the first two posts and made some quick updates on the blog itself:
- I’ve put in a return home button after you get to a post — I realized that is very poor planning on my part!
- External links now open up to new pages
As usual, thank you for reading and cheers! 🦄