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
305 karma · joined March 1, 2014
https://www.heneli.dev/
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
+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.
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.
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.
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
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.
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.
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.
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.
Like you said, the idea of everyone speaking the same language could never result in total homogeneity. However, you could lose out on some of the deeper insights and developments without language to filter out the noise. I believe that it would be a huge step backwards, but obviously you may disagree.
First Capital realizes this, and is making a move to capture the important opportunities they would miss out on otherwise.
It's not that the lectures are better, but getting a second chance to see the topics under slightly different contexts has been pretty effective for study. I've had the same experience with Khan Academy in my lower division courses.
I believe YC is the best as well, but I still respect what the others are doing.
It's so inspiring hearing about people who had unbelievable expectations from the very beginning. I always hear about the opposite – younger Zuckerberg expecting someone bigger like Microsoft/Google/etc to build the "real Facebook" [1], Larry and Sergey thinking they'd never make it to be as big as Shawn Fanning [2], etc.
Those are all extremely interesting, but I'm much more interested in what goes on with people who call it from the beginning. I'd love it if you wrote a book. Do you have a blog?
[1] https://youtu.be/MGsalg2f9js?t=13m24s
[2] http://www.jacquesmattheij.com/startup-school-2010/ron-conwa...
EDIT: It's over now. It's certainly an interesting platform, and I do think it will catch on if celebrities start doing these types of AMA talks. Personally, I would love to watch someone like Sam, PG, or Fred Wilson do one.
Sure you may appreciate the experience of watching a sunset live, but clearly the social sharing aspect may be more important to others.
Am I to that assume all of YC is adopting Thiel's beliefs as well? To be clear, I'm not saying both views are mutually exclusive.