Live data from Hacker News

Practising Programming

tratt.net

21–30 of 39 posts

Re: Practising Programming

#21
post #6

That's fair, but if you code for a living and growing is important for your, you should carefully evaluate where you work. Sometimes people dismiss certain companies. I remember my first boss dissing Google saying things like "how good can Google really be?". Now that I've experience it, I can say that career growth and learning between companies are not measure in percentage points or multiples, but orders of magnit…

Are you able to compare the experience of being at a Big Tech company against a very small team with wide responsibilities?

I'm in my 11th year as a developer and left a pure tech company 6 years ago where I was surrounded by other engineers for a small one where I've been 1 of a 2 until this past year (I now lead a team of 3 stateside and nominally 3 more overseas).

Note for traditional startup folks: the lack of team growth may seem like an obvious signal of low performance. Fwiw - we're entirely self-funded and our revenue has grown by nearly 5x and total staff by 3-4x during that time.

From a career/skill growth perspective, I often wonder how being on my little island nets out against joining a larger elite team.

I've no doubt developed idiosyncrasies but I've also directly or collaboratively coded, designed, deployed, and promoted every piece of software, including several web products from scratch, that have been foundational to our success since the first year the company existed.

I really have no idea how to compare that experience with being a cog in a massive machine but surrounded by brilliant work and brilliant people I could learn from.

Re: Practising Programming

#22
I don't believe programming is anything like other skills(That's why I love tech jobs!). There's no muscle memory strictly needed. No precise memorization.

There's none of what I call "atomic time regions" where once you start, everything has to be right or the whole thing is considered a failure(Think of calligraphy and how one bad move can ruin a piece).

Instead there's just a small amount of base knowledge every coder needs, plus vague familiarity with frameworks, and a general sense of what will possibly screw you over later(Anyone can write most programs that don't involve novel math or algorithms, the challenge is in making them not screw you over somehow).

If a world champion level programmer makes a basic app in Vue, it will maybe be 20% better than mine, because... modern programming is all about providing obviously ways to do common things. There's not much variation possibly in something so completely technical.

If we both design 100kloc apps, his(hers?) will be a lot better. There design choices in that kind of thing that don't come up at all in a 1 day project.

Sports people say you play how you practice, right? So there's only one kind of technical practice I care about. The kind that is similar to production code. Either in scope and scale, or depth of crazy algorithmic math, or any other way, but if it doesn't replicate production... is it really practice?

Guitar plays have a concept called "Noodling", defined as playing guitar... but not really playing something. It might sound OK, but you can kind of feel that it's not really helping you towards being able to play that song you want to play, the way you actually want to play it.

It's widely considered not really practice. Almost like scrolling Facebook compared to reading a book, like I should be doing instead of scrolling Hacker News....

I don't make any effort to practice programming unless I want to learn a specific new technology.

I just do projects that I think are worth doing, and resemble the stuff I want to do in the future, and I try to do them well without hackery.

Re: Practising Programming

#23

Earlier quoted context omitted.

The people groking things instantly and inhaling ideas are actually the ones who learned to learn, and everyone else just thinks they have because they put a lot of effort into broken practises of learning.

There isn't much new to learn. It is mostly new wheels, but those are still wheels, just in a different box.

There is in.... basically anything but programming.

Programming is just the same wheels because when anything new happens, we call it math or comp sci or an algorithmic breakthrough or something.

Ever so often something new comes along in programming, but I don't really see a lot missing. Current languages are good.

Ecosystems and libraries have missing pieces, but I basically never code in Python and think "Oh I wish I had X", aside from more performance.

It's only very rarely I hear about a new concept in programming that's really exciting. Async/Await is probably the most recent thing I can think of.

Re: Practising Programming

#24

I don't believe programming is anything like other skills(That's why I love tech jobs!). There's no muscle memory strictly needed. No precise memorization. There's none of what I call "atomic time regions" where once you start, everything has to be right or the whole thing is considered a failure(Think of calligraphy and how one bad move can ruin a piece). Instead there's just a small amount of base knowledge every c…

Yeah, when i practice programming its normally a toy version of something thats been bouncing around my head for an actual project. And normally something that i would like to learn for myself or a curiosity about how something works.

Generally outside of work hours I'll throw together a vague example and validate that the idea is something that works and get vaguely familiar with the libraries involved. That way when I go to build it at work I don't start from zero. If its for a personal project i just noodle in a repl or ide on a branch

Re: Practising Programming

#25
post #6

That's fair, but if you code for a living and growing is important for your, you should carefully evaluate where you work. Sometimes people dismiss certain companies. I remember my first boss dissing Google saying things like "how good can Google really be?". Now that I've experience it, I can say that career growth and learning between companies are not measure in percentage points or multiples, but orders of magnit…

Are you able to compare the experience of being at a Big Tech company against a very small team with wide responsibilities? I'm in my 11th year as a developer and left a pure tech company 6 years ago where I was surrounded by other engineers for a small one where I've been 1 of a 2 until this past year (I now lead a team of 3 stateside and nominally 3 more overseas). Note for traditional startup folks: the lack of te…

> Are you able to compare the experience of being at a Big Tech company compared to a very small team with wide responsibilities?

Most "Big Tech companies" are already structured internally as small teams with wide responsibilities, which imclude owning multiple projects and with it everything required to develop and deploy them.

If anything, "Big Tech companies" have enough resources available to allow developers to work without bothering with distractions.

Re: Practising Programming

#26
> When we see a world-class musician flawlessly play challenging music, it can be tempting to imagine that they were always able to do so. A moment's thought makes it obvious that they must have had to spend huge amounts of time practising basic techniques in order to reach that level. What's less obvious is that they have to continue spending considerable amounts of time simply to maintain that technique, let alone expand it.

The average SaaS engineering job is akin to recording a different concert for several hours every day, with no time to tune your instruments and little investment to fix or replace them.

Even if the orchestra is out of tune, the conductor won't necessarily notice or care because his job is not to actually conduct the orchestra. In fact, he doesn't understand music, he just knows how to request and deliver recordings. At times he pretends to understand music, which mostly involves flailing his arms spastically while musicians do their best at not minding him.

After 8 hours where only a couple were actually spent playing and the rest were spent arguing and debating how to play music with the conductor and the audience, musicians are left exhausted, with no energy to improve their skills.

Re: Practising Programming

#27
post #6

That's fair, but if you code for a living and growing is important for your, you should carefully evaluate where you work. Sometimes people dismiss certain companies. I remember my first boss dissing Google saying things like "how good can Google really be?". Now that I've experience it, I can say that career growth and learning between companies are not measure in percentage points or multiples, but orders of magnit…

What do you think is the reason for that "orders of magnitude" in growth? Can one experience similar without working for a big tech? Is it a mental thing or rather the working environment with many highly qualified people around?

Google give you a lot of responsibility, even as a junior. When a typical agile shop gives you tasks expected to take hours, Google gives you projects expected to take weeks and tell you to drive that project. And as you grow they give you bigger and bigger tasks.

So then if you need to meet someone, you contact them and schedule that meeting. If the project requires custom designs, you write that design doc. And if they add more engineers to the project, it is your job to get them up to speed and assign parts of the project to them so they can be productive. Basically, your job is to ensure things gets done.

Re: Practising Programming

#28
post #25

Earlier quoted context omitted.

Are you able to compare the experience of being at a Big Tech company against a very small team with wide responsibilities? I'm in my 11th year as a developer and left a pure tech company 6 years ago where I was surrounded by other engineers for a small one where I've been 1 of a 2 until this past year (I now lead a team of 3 stateside and nominally 3 more overseas). Note for traditional startup folks: the lack of te…

> Are you able to compare the experience of being at a Big Tech company compared to a very small team with wide responsibilities? Most "Big Tech companies" are already structured internally as small teams with wide responsibilities, which imclude owning multiple projects and with it everything required to develop and deploy them. If anything, "Big Tech companies" have enough resources available to allow developers to…

I think it's a good point that there are many more domains within large organizations than one might expect from the outside.

However, people are undoubtedly in more specialized roles and teams on the whole.

I'm merely trying to explore the differences in growth as a developer between the two extremes.

While I don't think as many people who build React interfaces at Facebook are also spending days creating Postgres schema diagrams and responding to mission criticial DevOps failures, I certainly grant that the small team varied project approach might be more similar than I realize.

In that case or either way, the most impactful difference in how personal growth is impacted may be the surrounding ecosystem and knowledge base.

In one scenario you are flush with existing infrastructure and the thoughtful people who designed or maintain it. This can focus your work as you mentioned and is also a great learning environment.

While on the other side you are working without a safety net slogging your way through creating everything* from scratch. This forces you to learn new skills in unfamiliar areas and managing all sorts of tradeoffs autonomously (there could be literally no one else to motivate you or to ask a question aside from your search bar).

* Infrastructure, tools, processes, etc. I'm not talking about reinventing the wheel though you are free to do so for your own pleasure or peril.

Re: Practising Programming

#29
> Instead, I've found that real-world tasks that require me to do something new are where I most improve, and most enjoy improving, my programming skills.

I liked this, but then they went on about automating their workflow (which is a great application of skills. They are correct).

It's just that I don't have a workflow that really benefits from automation. Whenever I introduce scripting and automation, I usually end up with concrete galoshes[0], and nothing is really gained. My automation is generally a run of SwiftLint, before compiling. I also automate Jazzy doc building. Other than that, I tend to be pretty manual, even for large projects, with repeated releases.

What I do, is ship often, and write Swift every day. I've been writing Swift every day for the last few years. I probably passed the "10,000 hours" mark, at least a couple of years ago. My GH ID Activity Graph[1] is solid green, and it's not "gamed," like so many people do with theirs.

I just write a lot of code; every single day.

I also like to ship stuff. That means actually doing what is necessary to move it out into the world. Push it out of the nest, so to speak. Lots of "boring" stuff, involved with that.

But I have found, that if you do it all the time, it basically becomes "muscle memory." When folks look at the code I write, they assume that I'm a slow, plodding programmer, because of all the structure and code docs.

Nothing could be farther from the truth. I write a lot of really high-Quality code; very quickly.

It's just habit.

[0] https://littlegreenviper.com/miscellany/concrete-galoshes/

[1] https://github.com/ChrisMarshallNY#github-stuff

Re: Practising Programming

#30
post #26

> When we see a world-class musician flawlessly play challenging music, it can be tempting to imagine that they were always able to do so. A moment's thought makes it obvious that they must have had to spend huge amounts of time practising basic techniques in order to reach that level. What's less obvious is that they have to continue spending considerable amounts of time simply to maintain that technique, let alone…

You may want to watch a number of Benjamin Zander's YouTube videos and revise your statement.

I share your frustration on feature pressure with no official room for practice and refactoring however the metaphor about the role of a conductor is completely off. A conductor knows and understands music, deeply, a d they connect the dots and coordinate the orchestra and zoom into lots of little details while improving the big picture.

Post reply on HN