6 ms·
How to be a wizard programmer
- weego 10y agoI'm going to be the token buzz-kill senior dev: If you run into problems none of the senior devs have experience in and have no answers for, my first concern is that you're massively over complicating something we've solved in a simpler and less risk-exposed way. My second concern is that you're intentionally reinventing the wheel in a way that is massively over complicating something we've solved in a simpler and less risk-exposed way just for your own interest.
- deleted 10y ago[deleted]
- mikekchar 10y agoUnless your question is: "How does this legacy system work? Why can't we make it do what we want to make it do?" I built my career on this :-) Give me your worst code! The best thing about this is that nobody gives a crap what you do with that stuff as long as you don't break it. Say goodbye to the endless conversations of how to indent your code.
- lojack 10y agoOP is proposing you solve the problem if no one else has a solution. You are proposing to solve the problem by simplifying. I don't think these need to be mutually exclusive pieces of advice.
- kedean 10y agoI think what he's trying to say is that if you find yourself with problems that none of the senior people have had to solve before, it's very likely that you are modeling the target system as the wrong problem. As a strawman example, "how can i make a new class inherit from multiple classes" is attacking the wrong problem (multiple inheritance), but a junior person might not be aware that it's the wrong problem.
- terrywilcox 10y agoOr the question is "can we solve this better with the actor model", which is what I asked my team last week. None of us has any experience with the actor model, but rather than dismissing the question, we're investigating. If the senior people have never had to solve the problem before, how can they know if it's a valid problem?
- terrywilcox 10y agoThis is how dinosaurs are born. "No experience in and no answers for" implies a gap in your knowledge, not a bad question.
- LyndsySimon 10y agoPart of being a senior dev is realizing that novel problems are extremely rare, and when confronted with one first investigating what's actually needing to be solved before diving into designing a novel (and possibly complex) solution.
- tdy721 10y agoWhy does this article say twitter when it redirects me to Bloomberg? Not happy... HN!
- tdy721 10y agoAhem... YC!
- xerophyte12932 10y agoApparently the link itself is to a twitter post by Julia Evans.
- ak39 10y agoIt's amazing how encountering handwritten text, a scarce thing these days, somehow grabs your attention immediately.
- emoore84 10y agoIt's a personal tweet, Where is the article?
- tubs 10y agoUntil the more senior member quits because they are wasting the vast majority of their time answering questions that could have been answered by just trying for more than 30seconds after hitting an obstacle...
- bluesnowmonkey 10y agoMore likely in my experience, the senior member feels valuable for being able to answer questions and help others.
- dozzie 10y agoNot after twentieth question of similar construction and similarly easy to be answered by the one who asked if he actually read the friggin' docs. Seniors like to help learn, not to be used as a walking manual.
- zamalek 10y agoWhen it's the first hit on Google you start feeling as though you are doing other peoples' work for them. Luckily I now have a fantastic manager: she aggressively defends the time of all her team members. Being a wizard developer also requires a wizard manager that the developers can trust completely.
- JoshTriplett 10y agoWhile I do sometimes have people ask questions that I can easily find the answer to, I rarely have people ask questions that they can easily find the answer to. Sometimes, it's the first search result for a term they didn't happen to know, for instance, and mentioning that term helps them. (Also consider the concepts of "inferential distance" and "illusion of transparency".) And even the concept of "search for the error message" is a pattern someone needs to learn, once. Ideally it's one they'd learn very early on when learning. But I've found that very few people talk about or provide guidance in the processes of learning themselves. Which is why I'm glad that people write down advice like the page tweeted here.
- collyw 10y agoIs wizard better than ninja or rockstar? (Am I the only one that gets put of by job ads asking for nonsense titles like these?)
- joebergeron 10y agoI steer clear of superfluous titles like these. I think these titles mainly exist to cater to the demographic of people who seek some additional validation from their job title... Nobody likes someone with an overinflated ego, let alone a programmer with a big head.
- obj-g 10y agoI would rather be an actual wizard than an actual ninja or rockstar. In job ads rockstar is definitely the most annoying/lame one. But, yes, wizard is better.
- onion2k 10y agoCompanies write job adverts using that language for one of two reasons - either because they think it's flattering and want to get developers who will fit in to a culture where they already use that language, or because they don't understand the language and think that will attract the best people. The first type of company is a great place to learn new things if you're quite junior. The second is a good place to demonstrate your ability to hack solutions together fast if you're mid-level. If you're more senior then you should probably avoid all of those sorts of companies because neither will want to do things in anything resembling a sane way.
- mkohlmyr 10y agoI feel the same way. I'm looking for a job, not a cult to join.
- cool_penguins 10y agoIs there anyone who is not put off by those titles?
- stepanhruda 10y agoI think the hierarchy goes pirate, ninja, wizard, rockstar and guru. /s
- ricksplat 10y agoHow to be a wizard programmer: 1. Write Code 2. Read Code 3. Learn how to find out things for yourself 4. Find new ways of doing things and contribute to the team 5. Try to give more than you take
- MichaelBurge 10y agoI once wrote some code that unintentionally smashed the interpreter's error-tracking data structure at compile-time. If you had even the slightest error in that module, like a misspelled variable name or type error or unknown function, you'd just get "Unknown error". I never bothered to fix it, so I believe it's still in production. You better hope you're not assigned to maintain that module. The one bug at my last job that gave me trouble was one where somebody deep in the stack called the C close() on a filehandle managed by the interpreter. The bug report was "My reports are showing up empty when I run them". The language interpreter kept track of its filehandles separately and wasn't informed about the close, and this led to an off-by-one error when you later went to write to a language-managed filehandle. I noticed stat'ing the filehandle gave a different inode than the temporary file it was supposed to be opening. I moved over to an ext4 filesystem so I could use the debugfs command to look up the inode, but the error only showed up on the same xfs filesystem. A brute-force search of the filesystem turned out that the report was being written to one of my Perl source files, which was opened read-only and so the writes were being rejected. The commit that introduced the error caused it by adding an include, which shuffled the order that filehandles get allocated, which exposed the off-by-1 error that had been around for 10 years which usually didn't cause any trouble. Took me a solid week to track that one down.
- MIKarlsen 10y agoTip #1 seems to be a brilliant way to get shouted at @ Stack Overflow...
- speeder 10y agoSomething that made my coding skills jump: Attempting to reverse-engineer a extremely large, and known to be well coded by wizards C++-based game. I ended having to learn details on how C++ work (how vtables work? why?, etc...), what some common stuff on the code was (reference-based smart pointers, locks of various kinds, thread-related stuff, alignment-based custom fast allocators, STLPort stuff, etc...), reading papers about why some things were done that way (yep, the game I choose has lots of papers and talks about its coding!), and so on. In the end, I couldn't find any of the things I wanted to find, and couldn't convince the game IP owner to let me patch some bugs I found (that are actually killing the game review ratings on Steam), but I don't regret it one bit, I felt like I learned in the 3 months I fiddled with that, the same amount of information I needed to learn in 2 or 3 years of coding my own projects.
- GeertVL 10y agoAny blog post on how you did it and what tools you have used?
- speeder 10y agoOf course not. Lots of the stuff involved are borderline illegal, or in some countries completely illegal, this is why also I don't say the name of the game on my post. I don't want that to come haunt me later.
- mettamage 10y agoI'm curious what would work better. Reading and working for open-source projects or reverse engineering like you did. I noticed that my coding skills became better when I did a reverse engineering class, mainly because I needed to debug a lot more than normal.
- douche 10y agoAnother great learning experience is taking a code base written in one language and porting it to another. I keep poking around at the old IdTech code and reimplementing parts of it. About the most productive thing I've managed is an extractor for the Wolfenstein 3D graphics files, but I've had fun and reviewed a lot of my C knowledge, along with some dusty corners of the language I was porting into that I don't use much.