Ask HN: Software devs with 10 years experience, what do you still love about it?
There's always threads about burnout and woes about writing software.
I'm curious: what are the things you still love about it after all these years?
Let's show the youngsters what to look forward to.
55 comments
[ 6.1 ms ] story [ 114 ms ] thread- I still love the feeling of finality when you mark a Github PR as ready for review. It's like you let out a breath you've been holding in for a day or more. The fruit of all that thinking all that pondering, now in tangible form. Ready to make someones life better. (I think this is why I don't see myself working at an enterprise - I enjoy having high impact in products)
- I love guiding younger engineers around trade-offs to solutions. I tell them my recommendation and then I go through my reasoning and because I have 14 years I have first-hand accounts about what went wrong and why. It feels good. I remember in my early days having a senior show me the ropes was very interesting and very fun.
However I dont like how most workplaces are still really inefficiently managed and full of politics and bad decisions.
Making things nobody ever saw before (current role). Inventing a new kind of service nobody saw before that allows farmers to do things that were impossible.
Taking a boring, time consuming part of somebodies day and making it disappear so they can do more interesting things.
Occasionally hiding something fun in code that makes somebody smile.
Mastery over things. Knowing how to hook up devices and make them work together.
Not every day is great, but being able to create software is like being an actual wizard, especially if you are lucky enough to work where software and hardware hit the physical world.
https://www.smartshepherd.com.au
And it continues with the possibility to apply knowledge and experience. Most important to see things from a higher level, realizing and thinking in systems and applying these methodical thinking on a daily basis - and passing the knowledge on to somebody else.
Digging into new challenges, learning and creating still tick the boxes. I’ve found I increasingly need to partition work and “hobby” CS though.
Currently working through 3D graphics in the “hobby” category and having a blast.
How do you find coworkers like these? Haha.
But I think the work stuff gets easier and it also becomes easier to explore random fun topics like retro devices and internals of compilers, databases, browsers, etc. Not that you couldn't do those explorations with fewer years of experience (you can) but it just takes me a bit less time to dig into things now.
I guess I've gotten much better at slogging through documentation and reading existing code (that I didn't write).
The satisfaction of opening a perfectly-tuned merge request with a minimal diff and glowing momentarily to yourself as tests all begin to pass (before realizing that there's an embarrassing typo in the title text).
The feel-good factor from optimizing runtime and energy usage for your most prized simulation library (despite the fact that it's only used by yourself and perhaps one other egg avatar who starred your repository).
The endless mental battle against an onslaught of awful, awful code and technology decisions from employers and the Internet, yet paired with evident continued emergence of more reliable, higher quality and more freely available and equitable tools over time. And being able to participate in all that in a small way.
I think an important piece to this puzzle lies in not getting attached to one specific field of application.
Worked for about 3 years in a regular run-of-the-mill agency / website shop. Not very interesting, but good experience and skills gained.
Worked for about 2-3 years in ecommerce. EXCRUCIATING. Left with little to no appreciation left for the craft, fell into a crisis of meaning. Allowed myself to be unemployed for a while and found appreciation again.
Worked for about 1-2 years freelance. Very cool projects, but I couldnt take the constant stress of dealing with clients and managing moneyflow. Stopped.
Now I've been building a venture with a business partner of mine for about one year, which has somehow completely evolved and changed into effectively managing the technical side of a quantitative analysis firm that runs a NYSE-listed Hedgefond. INCREDIBLE. Every day feels like christmas, noone to answer to, 100% decision force on anything, and not even involved with the regular operations, just dreaming up cool new algorithms and ideas for our internal system all day. But this, too, I might leave some day.
I truly believe that a programmer is not a static definition especially given the insane influx of data and new concepts we process every day, and that the only way to truly find ourselves in it is to not get attached to anything.
The zen programmer, so to speak. Code is not limited to anything. Become the code, not the job description
Some companies can do it right, but most don’t.
Perfect e-commerce business would be for a product that isn’t tied to holiday sales, has huge margins, and can scale predictably from pre-sale all the way to shipping/delivery.
I can make stuff that changes businesses.
I can make stuff that changes lives.
I do this with my mind, with no raw materials.
My ideas and time are the only limits.
How could someone with creative fire not love this?
...sorry, couldn't resist.
it's something about having the creative freedom to decide on the solution to a problem, and then also the satisfaction of building it out into something which works, works well and then benefits others.
along that path of [requirements -> design -> implement -> test -> release] there are numerous rewarding moments but when the whole thing comes together, there's another meta-reward of knowing that there now exists something where there was not before, and that I created that thing. Quite often, entirely.
Another level of this, is satisfaction in colleagues taking components/services/entire systems I've constructed and adapting, extending, changing them to do more than I thought possible. Also, seeing colleagues start their own components/services/systems in the pattern/design of something I did, and making a success of it.
After a while, it's like seeing an entire ecosystem spring up around seeds I created.
However, to translate that into what it really is - the team I work with manages to build an actually useful product that real people use and enjoy using. I find that highly rewarding.
- I love solving problems. It's like solving puzzles as your day job; it's great!
- I love getting exposed to various domains, when building software for it. There's also the added benefit that I usually have domain experts getting paid to explain stuff to me.
- I love building stuff that other people use. There's something very good for the soul when you see something you contributed to solving real world issues.
- I love the fact that I was involved in building systems that save lives.
- I don't really see myself doing anything else and being happy.
- Don't even get me started on building games / engines, basically being able to be your own mini-god.
I just love the freedom, even before COVID. You could ask an employer to let you work remote for a couple of weeks.I did this a few times.
I really like being alone, and just not being bothered. I put it this way at a bar yesterday, I don't need to socialize at work. I'm socializing right now.
Plus this is one of the only fields where you can still teach yourself everything you need to know in order to make an insane amount of money. You don't need a bunch of expensive tools.
At the same time, you should invest a minimal amount of money in yourself. I saw a post on Reddit once where someone ranted that their employer wouldn't let them work at home as they didn't have a personal computer. How are you typing things up like your resume ?
If you invest a relatively small amount of money in yourself, you going to have an amazing life. But if you sit around complaining and whining all day about how unfair the world is, your life is just going to be bad
I'm sure there's more that you're not being exposed to. Distributed systems, functional programming, or Structure and Interpretation of Computer Programs (SICP). Go, Rust, Pony, Clean are all interesting languages that do things differently. Elixir/Phoenix framework since you have Ruby background is also a neat twist. You can learn new things if you hang around the same neighbourhood (unless that's HN).
After practicing this my entire career, I learned to instinctively find the smallest possible solutions. What this means is that as the problems get larger, I'm dealing with a much smaller solution space than others trying to solve the problem in a larger solution space. The other trick is not to limit the dimensions of your solution space, everything is fair game and 'in play'.