Why I Love Coding (2012)
henrikwarne.com
henrikwarne.com
It’s a strange feeling, as this has been my “thing” for many years now, both as a hobbyist and a professional. I can’t exactly pinpoint why the situation feels different this time. Until a few weeks ago I had dozens of interesting projects lined up and had invested money into at least a couple of them. I think part of it is that I lost a sense of “magic” that once enticed me. Whereas when I was still very new to me there was a lot of software I would think about and wonder “wow this seems incredibly complicated, I wonder how it works”. When I returned to learn about it whenever. A lot of thing seemed like sorcery, and I just needed to know how it worked. Well years later, when I decided to return to those sort of things, more experienced, I would start to dig in, only feel a bit disappointed when I figured it out and it was no longer cool or interesting. That’s not to say I’m an expert or that I know how everything works and implement it all, just that I can generally get the idea and that causes the magic to evaporate. Additionally I’m beginning notice a mismatch between interest and ability in a lot of things. I find myself unable to learn and implement the things I’m interested in. While that may sound like it’s in opposition with the my first theory, it’s not really. There’s a lot of things where I have a general mid-high level idea of how they work, but couldn’t implement if you asked me to right now.
I’m probably going to focus on other interests of mine for the time being, though I’m sure I’ll never truly be divorced from programming. Additionally, I have a feeling that the problems I noted in the previous paragraphs will eventually wither away my other interests as well. I figure simply return to it in a much different and reduced manor. I’m also considering giving it up professionally, but I’ll have to see how that ends up.
One of key realizations has been that I'm more interested in people than machines (even though I feel the same fascination figuring out how something works). In the end, software is almost always for people to use. Things like programming language design easily get regarded as highly technical, but it's so much about creating abstractions for humans to create abstractions for humans.
Another one has been learning how software fits the bigger picture. In order for a company to succeed with software, things starting from vision, strategy, execution need to be in line. What I'm trying to say that it's important to notice when the development of software gets blamed for problems elsewhere. Otherwise our view of the development itself gets murkier.
Finally, learning new languages is something that's keeping it fresh for me. Making the effort to dig deeper and learn something complex I didn't know well before.
This was something that I experienced in my career trajectory. My first shift from pure programming was to requirements definition, which I enjoyed. I then got involved in specifying the need for systems in the first place - developing business cases and evaluating solution options. I'd by then realised that by the time someone starts writing requirements, someone else must already have done some work to secure funding, teams, etc. Luckily I was (mostly) able to stay tech-focussed rather than moving into pure management. Some of the most technically challenging work was at the end of my career - looking at how systems could be affected by / drive organisational transformation. And being able to confidently brief very senior decision makers on how their organisational structures (often stovepipes) were actually driving inefficiencies, duplication and nugatory work at the systems development and operations end.
Can you expand on this? Like what was the title, or was this a unique role to your business?
This thread has really resonated with me and where I might want to be taking my career.
The title was unique to my business but in practice I was a ‘Senior’ position. I joined a company that had been part of the UK civil service but which had been privatised before I joined. The part I belonged to conducted advice-side / customer-friend work as opposed to supply-side / product-development. So in effect I was an independent technical consultant deployed into UK Govt customer organisations (in Defence) to support their activities, which included the stuff I mentioned before (requirements definition, business case development, etc). I did this for approx. 10 years, starting very technically focussed (e.g. helping to draft tech sections of Invitations To Tender or contributing to standards development) but gradually looking at business / organisational issues (e.g. can we restructure this organisation to reduce commercial and technical barriers to efficiency? / what research do we need to do to conduct to de-risk this new simulation technology?). I became reasonably well known in the customer community and, crucially, was trusted as a friendly techie rather than a commercial ‘suit’.
The plus side to this was getting superb levels of customer access and some experiences not available to most civilians. Because I had been around for years the customers saw me as someone who actually understood their domain and their problems. I knew their acronyms and understood their business processes, more so than some of them did (especially customers who were new in role).
The downside was that from the perspective of my parent company, I had effectively ‘gone native’ with the customers (although was still useful because I generated revenue and demonstrated the competence of my company). I had to be commercially fire-walled away from the product side of the company so that the customers still trusted me. This limited my career development – partly because I couldn’t be involved in high-profile bids and delivery projects that attracted C-suite attention. As an example, although my salary increased okay, I found it very hard to gain evidence (e.g. third party feedback) that would support a grade rise. As it was, I didn’t mind too much (this was the latter end of my career) but had I been younger it would have been frustrating.
― Yennefer of Vengerberg, the software engineer
I support you in whatever endeavor to which your muse directs you. Having a background in coding generally means you’re a good problem-solver, and good problem-solvers are valuable in any vocation.
In my case, I was a manager for the last 25 years of my career, and was forced to do my programming as a “nights and weekends” gig. Since leaving my last job, I have been 100% focused on programming, and I’ve never been happier.
The advent of the Swift programming language has also been serendipitous. It’s proven to be fun and engaging.
My first computer was also a VIC-20.
Ironically for me, the more I got interested in the lower levels of programming, the more I lose sight of the original goal of solving a problem.
I have to juggle between satisfying my curiosity and interest and solving a problem.
I never really took my hand off the programming wheel, while being a manager. I just wasn't being paid for it (bonus was that I have a big open-source portfolio). I just did open-source work in nights and weekends.
When I left my last company, I just made it my full-time vocation, and that went quite smoothly.
I do this for the love of the craft; not the money.
I think this is main point. Somehow introducing money into anything seems to drain all the pleasure out of it.
They just can't seem to bring themselves to work with people like me, unless they are doing the whole "alpha dog" thing.
The NPO I'm working with can't afford to pay me squat, but I'm not constantly mud-wrestling knuckleheads.
A career path back to coding just does not exist within the industry. Of course freelancing and founding your own company may be options but in a regular company hierarchy - no way in my experience.
I'd love to be proven wrong of course and I'd love to hear stories to the contrary.
I do program every now and then in my spare time, but not to the extent the original commenter does in his spare time.
Interview wise i am doing fine, albeit not for FAANG type roles.
Basic human nature.
TBH, they have a point. I was a manager for many years, and know BS when I smell it. I had a management style that involved a lot of self-reflection and intimate feedback loops with my employees, but I also managed very experienced engineers that all knew more than I did, so treating them with respect, and listening to their counsel, became second nature. It wouldn't have bothered me a bit to have employees that used to be managers, as long as they were good engineers.
Not sure that most managers, these days, operate that way.
I just gave up looking for work, and am working with some folks on a nonprofit startup. It's great. best decision I ever made.
If you can manage to stop worrying about it and move forward, then the curiosity and magic has space to grow. Worrying that the magic isn't there is not a good way to bring it back, it's not a good mindset to have anything positive arise. But "giving in" is easier said than done of course, since you want the magic back :) Once you stop wanting it, it will have a chance to return
What also helps is having interests and hobbies that are in no way related to your job.
I have a feeling that naturally the purpose of adult work is less self centered and ambitious but broader and fair for more people.
I'm just asking.
I think your second sentence is actually the key here - first time. If you do something day in day out for 20 years there’s no surprise if it works.
Thankfully, there’s plenty of room in the domain of programming for someone to go from seasoned expert to absolute beginner and experience the joy all over again.
The Japanese inter-related concepts of Kaizen, Muri, Muda, Mura, Hansei, and Ikigai are relevant here, I believe. Except for the most mundane, immediately-automatable "something", I have always found an area for improvement and thus, delight. Though Feynman commented there is plenty of room at the bottom about the physical world, considering his life history I believe he would also concur about the cognitive world.
I'm sure if I asked my caucasian wife she'd say something about exoticism.
I liken the more pedestrian words to the words I use to get myself to the gym. Instead of muttering "perseverance", I mumble "find a way". I pick the pedestrian words when they resonate with me in some contexts, and the five dollar words when they resonate more.
I believe there is beauty, wonder, and endless improvement within attention to detail to be found in honing the same craft repeatedly over the years. There Is Plenty Of Room at the Bottom. Jiro Dreams of Sushi is one of my favorite movies that touches upon this.
But doing roughly the same thing for 20 years it can get wearing - it's a different form of brainwork at that point.
My impression is that if you constantly do "exciting" stuff you burn out at work. It isn't like school where you do new things all the time but they give you plenty of time to internalize stuff. So people eventually just accept the easy situation where they are comfortable and don't have to do new exciting things.
Recently I made a small music player and till now I have played several songs on it just because the software is programmed by me!
One time we were doing a math test in the computer room with Apple IIes and we were allowed to use them as our calculator. I finished the test early, so I thought, what program can I write in the five to ten minutes I have that would be neat? I ended up just making the screen fill with random characters. I was so proud to get it to work.
In high school I even wrote assembly code in the library on some loose leaf paper as I once was gripped with a really neat idea I had to express.
Honestly, my teenage years were filled with moments like these when I first learned to code.
I feel like the people going before me are the "ninja coders" I see in job ads. With all my years of experience I come up with various ways to solve a problem, but these guys are so much more effective than me in anticipating my moves and have a way to block them already.
Finding an elegant solution to a problem in isolation is usually quite easy because you can ignore all the edges that make it hard. Finding an elegant solution to something within the constraints of where the problem actually lies is what separates great developers from the rest of us.
Memories? I still do that to this day :)
That said, I don’t like the business of coding. Doing coding for a living strips away a lot of the joy out of it, but this is why I have side projects and why I have learned to treat the business of coding as a job first and coding second.
As someone with a lot of interests, I have found this to be true for every one of them. Seems like monetizing yourself is always soul sucking to some degree.
This is sad but I think a lot of people have the same experience. Then again, I had a recent programming job that I really enjoyed. I think the team you're in and how they work has a huge influence on keeping the joy.
I admire and envy those who can hear unclear requirements and get excited about needing to solve a problem.
It's a lot easier for somebody to understand and then critique when you've got something concrete to demonstrate
* Make the decision for just the next step, and try it out. The faster the feedback loop the better. * Work as a team. The better the collaboration and support, the more effective the team. Good teams care about psychological safety and about the outcomes - there's no contradiction there.
Just this weekend I was learning about RabbitMQ and setting it up on a free Oracle Cloud VM. Writing some Python code (using the Pika library) to be able to send and receive messages.
Also getting around to learning about how to use Flask (Python web framework) and then Gunicorn. All this so I could try to figure out how to have my own webhook receiver accessible on the Internet and then get those events to end up inside my local intranet.
And reading an article here today (https://news.ycombinator.com/item?id=27100974) and realizing I could use Cloudflare's Tunnel (aka Argo) and be able to stop using the Oracle Cloud VM.
At the end of it all I was thinking, "this is cool!" :)
I know this is HN, but I have a hard time believing this. Somehow feels like nostalgic self-congratulatory boasting.
Honestly curious, what does it mean for a 5-year-old to be programming seriously?
At 6 maybe you type that huge program that creates a sprite ball that bounces across the screen. By 7 you are drawing out sprites on grid paper and making that bouncing ball different pictures.
It took me until later in highschool to understand things but typing and modifying is programming. My variables for loops were always lili,lolo,lala,lulu,p naming them there purpose seemed foreign.
Not sure if I'd be able to pull off the same at 5, but it doesn't strike me as utterly impossible. Also, the GP didn't say what was the result of his "serious coding" - could be nothing (working) at all until much later.
I also branched out from just making games, and started writing programs to solve things for me, for example, a budgeting program.
It's not about career prospects. It's about joy and about learning a way to structured thoughts which few other activities can provide. A computer can't be argued with or tricked. It executes instructions. You can't beg it to be nice, you have to actually fix the bug. It won't betray you either. This very strict cause-and-effect property is a very important lesson that too few members of society have understood.
You may wish to show your kids something like Scratch or even just drawing pictures with Python's turtle library, just to get a feel for their interest level. If they figured out how to install games and stuff on their own, they are good candidates for programming, provided they are interested. Most importantly, you cannot rush it. They will become interested in programming (or anything else) if and when they are ready. Any age is a good age to get started. I have much respect for folks who discover programming during middle age or older.
Oh, and like the other commenter said... worry about their career prospects later. Right now, for them it's about having fun.
Pre-med is totally different since it is explicitly vocational. People in it are becoming licensed clinicians. If they want to do medical research, they need to separately pursue a PhD.
What more schools need are Software Engineering degrees in addition to Computer Science, maybe even Application Development as its own major or sub-focus within Software Engineering. Some schools have something like this, but at the biggest and most prestigious institutions, there is a huge focus on research.
The other thing that comes to mind is the quip that it’s easier to innovate down the stack than up the stack. Apple can design new chips better than Intel can create an operating system.
I seem to spend all my time in meetings, preparing presentations, performing sysadmin tasks, testing things owned by other teams or external providers, looking things up for people, "resolving" tickets, communicating with other teams, chasing other teams, debugging internal infrastructure, doing code review, and being involved in a peripheral manner with more junior team members.
Apparently this is what being a "senior software engineer" is all about, and it really does suck.
My solution is to work on interesting things on the side and treat the day job for what it is: a ticket to financial independence before I'm 50. And if it all becomes too much, then the job market (for now) is at least very fluid.
This resonates with me. Working in a startup environment is fun and scrapy, but when you're never able to go back and improve what you did because "we barely care about that feature anymore" it becomes pretty frustrating. Building features that only a handful of people use is also soul draining.
Curious why you think that is. I think the difference is that coding under unreasonable deadlines (and then getting blamed when the quality produced under the unreasonable deadline is low) is what sucks.
There need be no real danger of it ever becoming a drudge, for any processes that are quite mechanical may be turned over to the machine itself.
https://wikiquote.org/wiki/Alan_TuringOnly issue I have is that I don't talk to many people during the day. I rent an office and I just sit at work the whole day. Don't get me wrong, I love it, but I wish there was a setting in which I could network with more people. What has worked for you?
What can scratch a similar intellectual itch as coding that doesn't come with the same stress? Data Analysis? Technical Writing?
That impermanence makes me feel it was never intrinsically valuable.
I think we can't accurately predict the extent to which our work will be valuable to someone else. The Feynman perspective I came across is that we should "play", follow those kernels of interest whatever they may be, and that may turn into "something". Whether intuition, foolishness, whatever, having curiosity/interest feels good.
But that's real hard.
I agree with the "play" attitude having a sense of intrinsic value, regardless of newness, importance or usefulness.
Sometimes it is enough to change perspective and learn a new way of doing things to enjoy old stuff once again.
I'm not even that good, I just learned enough Java etc to be solid as a mid-level engineer at age 29.
It pays well, sometimes it's fun (with coffee and techno music of course). But I do what I need to do to get the job done well, and then reap the benefits of having a skill that's in demand to build what companies/society wants.
I've never been more motivated to learn relevant knowledge and work on solutions than when the goal is to write tools to make my team's work less tedious. And I've never felt more satisfaction than when I completed those tools, successfully used them to cut those tedious tasks down to a few minutes, and got praise from my coworkers for making their jobs easier.
My personal R&D laboratory.
Programmer productivity is so hard to measure that I think nearly everyone can get away with this and should.
7 years ago, 3 pts, no comments. (https://news.ycombinator.com/item?id=7010730)
9 years ago, 3 pts, no comments. (https://news.ycombinator.com/item?id=4057897)
Nothing super insightful really in this article, usual creativity, problem solving allure etc.. Most comments here just self-analysis, anecdotal.
This year present time, 67 pts, 19 comments. Meh, why?