hkailahi | 2 years ago | on: Ask HN: Could you share your personal blog here?
hkailahi's comments
hkailahi | 8 years ago | on: JavaScript Promises Discussion: Make Them Monadic? (2013)
hkailahi | 9 years ago | on: I'm Loyal to Nothing Except the Dream
hkailahi | 9 years ago | on: RethinkDB Postmortem
hkailahi | 9 years ago | on: What is deliberate practice for programmers?
+1 - I would like an invite too! Back to the article, this is probably the topic I've thought most about recently.
Relevant background: Novice Guitarist + Junior Software Engineer
In the past year I have taken serious interest in jazz musicianship, specifically improvisation. I'd like to get significantly better at both programming and jazz improvisation as fast as possible, so relentlessly optimizing my practice, or "practicing practice", has been my #1 goal. I have a decent approach for music, but I'm still looking for one for programming.
Here are a few of my amateur approaches to "deliberate practice" regarding music:
- The first and most obvious thing I learned was that you can't improvise what you can't physically play. So clearly, deliberate practice is required to gain the ability to play anything. I've seen and heard this referred to as a musician's "chops". To develop this, I practice scales, arpeggios, chords, licks, songs I've transcribed, and other targeted exercises.
- To improvise an appropriate melody I have to 1) hear and understand the music outside the melody, 2) create a good melody over it in my head, then 3) translate and play the melody in my head. There is a lot of overlap in the practice for these three, which mostly sums to ear training, sight reading, sight singing, listening to a bunch music, transcribing and analyzing it, and repeated, concentrated attention to how the harmony + rhythm of songs work and how the melody fits over/in that.
- Learning lots of music theory + applied practice of it, with the ultimate goal of using knowledge intuitively rather than actively. The key assumption here is that my music knowledge has to be intuitive, because I won't have time to think about all this stuff when improvising. So I'm hoping that consuming thousands of resources (songs, books, talks, paid lessons), actively using learned information, and gaining lots of experience will make improvisation natural, subconsciously feasible, or at the very least much easier.
- Playing and improvising with others a lot.
I generally think of all of this as 1) developing fundamentals and technical skills 2) discovering and adding new things 3) applying knowledge 4) reviewing assumptions, making changes 5) iterating. Then, maybe enough iteration => experience, and enough creativity + experience will lead to the craftsmanship I need?
This basic approach to music is good enough for me right now, but I'd like to start the same process with making software. So finally, the question in the article - "What is deliberate practice for programmers?". I don’t have the answer but I’d sure like to know.
I could review all the knowledge I gained from CS in university. Implement a bunch of stuff, like DS, algorithms, apps, low level mechanisms? Read a bunch of highly rated technical books? Talk to people smarter and more experienced than me? Go work at a company that says it's invested in it's employees growth?
This is all great, but it doesn't seem like deliberate practice in the way that my practice for improvisation does. I would like to become a great programmer, but the problem is that I just want to be great at all things programming. I guess I have more specific end goal in terms of music. Maybe it's that I don't really know what I want in terms of programming? Perhaps I need to specialize, though it's a little early for me to know where. It's very frustrating knowing that I want to get better, am willing to "put in the work", but don't know what “work" I should be doing.
hkailahi | 9 years ago | on: Show HN: GitPlex – A new Git repo management server with code review
hkailahi | 9 years ago | on: Music Theory: An Education from First Principles
I think the biggest thing that's missing at the moment is a section on rhythm/time. I'm sure you have plans for that. Looking forward to seeing finished course.
hkailahi | 9 years ago | on: Harmony Explained: Progress Towards a Scientific Theory of Music
hkailahi | 10 years ago | on: Bank of Japan, in a Surprise, Adopts Negative Interest Rate
hkailahi | 10 years ago | on: IntermezzOS: a teaching operating system for experienced developers
hkailahi | 10 years ago | on: San Francisco May Let Bicyclists Yield at Stop Signs
When freshman move in, the first few weeks are filled with crashes. Also, every time there is an event that draws lots of out-of-towners (Freshman Orientation, Halloween, etc.) it gets much, much worse.
hkailahi | 10 years ago | on: The Virtual Reality of John Carmack
hkailahi | 10 years ago | on: Fast Inverse Square Root (2003) [pdf]
One of the best parts about this code is its initial implementation in Quake III. The comments are especially funny. It's on Wikipedia - https://en.wikipedia.org/wiki/Fast_inverse_square_root
hkailahi | 10 years ago | on: Ask HN: Does anyone else feel stupid reading Hacker News?
hkailahi | 10 years ago | on: Reality doesn’t exist until it is measured, quantum experiment finds
Locke based his works off of the physics known at the time (Newton, etc). His theories were later definitely refuted by advancements in physics. Though it wasn't his intended meaning, it is interesting at least to see similar language being brought back by physics.
hkailahi | 10 years ago | on: Reality doesn’t exist until it is measured, quantum experiment finds
hkailahi | 10 years ago | on: Ask HN: What's the best way to quickly get up to speed on Java?
Also, check out the Google Java style guide. It's a nice point-of-reference, but don't get too hung up on their conventions.
That's pretty generic advice. There is probably a better resource specific to what you'll be doing.
EDIT: I'm still just a college student, but I have done a few Java-based internships. My advice probably won't be all that helpful if your senior developer, or doing some super low-level stuff.
hkailahi | 10 years ago | on: Apple’s Tim Cook Delivers Blistering Speech on Encryption, Privacy
hkailahi | 10 years ago | on: Apple’s Tim Cook Delivers Blistering Speech on Encryption, Privacy
I think there is a large amount of value in both of options 1 and 2. To me, the idea of Now on Tap and Google Photos is absolutely horrifying. On the other hand, my roommate told me that the Google Photos app was perfect.
I suspect that my views will hold, but it is possible that personalization becomes too important to opt out of. I tried to delete my Facebook for similar reasons recently. I missed out on enough party invites and messages from classmates that I ended up going back.
hkailahi | 10 years ago | on: Apple’s Tim Cook Delivers Blistering Speech on Encryption, Privacy
Let's start with the facts. Apple makes its major money in hardware. Google makes its major money in search. Obviously, iOS has to be able to compete with Android in order for iPhones to sell well. Google offers services like Google Now and Google Photos that can be tailored in a more personal and effective way. How? They collect as much data as they can get away with. Consumers get to have services that should be better suited to them because of this.
If Apple wants to compete, it seems that there are two options:
1. Start mass collection and become a better Google.
2. Reject Google's model, and build iOS around privacy and non-invasiveness.
That's what this is. I do think Apple will either make a search engine focused on privacy or buy one (e.g., DuckDuckGo). Personally, I am happy that Apple and Google are competing in this way.
I just published my first piece! Planning to mostly post long-form articles on non-traditional software stuff.
--
* https://www.heneli.dev/blog/fearless-tinkering-is-functional - Five-part series on functional programming and its advantages