It's time to ditch Medium for good! 🌈⚡️

Introducing Devblog by Hashnode. Blog on your domain for FREE. Highly customizable and optimized for developers.

Learn more

I am Jon Skeet. Ask me anything.

Jon Skeet is a Java developer working for Google in London. He is a C# author and community leader. He joined Stack Overflow in 2008, during the website's first months of existence. In the near-decade since then, Jon has answered over 34,000 questions, which works out to about 10 questions per day!

Jon is taking questions live on Hashnode coming Thursday. Don't miss out, ask him anything.

Ask Jon Skeet about:

  • Getting started with programming
  • Contributing to Open Source
  • Best practices
  • Functional Programming
  • Java programming
  • Java and C# in 2018
  • C#
  • Future of programming

Thanks everyone - this was a lot of fun, albeit tiring.

I'm sorry-not-sorry for being repetitive about diversity and the importance of communication skills. (If anything, I'm slightly surprised I didn't bring feminism in more.) Treat the repetition as a signal of their importance to me :)

Ask a Question

86 discussions

Hi Jon,

What algorithm would you use to sort one million integers?

One that someone else has implemented :) I don't doubt the value of learning underlying algorithms, but I don't pay very much attention to them these days, until I need to. In order to choose an algorithm here, I'd need to know:

  • How important it is to make the right choice. (If it's only going to run once, without tight constraints, I don't really care.)
  • Memory constraints
  • Processor constraints
  • Bounds of the problem - are these all 32-bit integers? 64-bit? 16-bit? Unbounded? The most efficient sort may well depend on those
  • Whether I'm choosing an algorithm with an implementation, or whether I'm going to have to implement it. In many cases I'd trade peak performance for not having to do it myself (with the likelihood that I'd end up with bugs for at least a while)

Reply to this…

Share your programming knowledge and learn from the best developers on Hashnode

Get started

What effective approaches or techniques do you suggest to study and master a certain technology? Like, for example C# or CSS.

This is probably a pretty personal question - I suspect people learn in different ways. (And I know far fewer technologies than people seem to expect me to. If you're a web developer, you probably know more languages than I do, to start with...)

If you know you're going to need to know a language/platform well (rather than "just enough to get by") then I'd recommend starting at the basics, and layering the knowledge. That's far more effective in my experience than diving straight into a mobile app with a cloud backend, all written in unfamiliar languages and deployed using a tool you've never used before. When something goes wrong, if you have a solid foundation, you can generally work out where to go from there. If you're mired in 10 different technologies which are new to you, you may well have no idea where the problem lies at all - or how to diagnose it.

Diagnostic skills are really important to me. If I'm going to do any work in a particular area, I want to be able to do at least one of three things pretty easily: a) run tests; b) use a debugger; c) write logs. Ideally all three, but having at least one is important.

Reply to this…

Hi Jon,

I've been a developer for ten years, but in the last year I have been managing a team of twelve. In your experience what is a simple thing that a new manager should do?

Thanks, Damien

I was a manager for 6 months before moving back to being an individual contributor. I may be a manager again some day, but it's not on my bucket list. So all the rest of this answer is really hypothetical, but...

Work out what your goal is. Write it down. If it focuses on either you leading, or accomplishes on the product, tear it up and think again. If it focuses on the team, that's a start. If it focuses on the individuals on the team, you're really cooking... and then add value in terms of bringing those individuals together.

For example, I'd have a personal mission statement of something like "I will enable each of the team members to achieve more than they even realize they can, and bring the team together to be awesome." (That awesomeness may be building something awesome. It may be realizing that something doesn't need to be built. It may be finding out what does need to be built.)

My view of good management almost certainly reflects my beliefs as a Christian in Jesus as the "Servant King" - it inspires me to look for and attempt to model "servant leadership". Your team aren't there to make you look good: you're there to make them look good.

Reply to this…

Hi Jon. I wonder about "java vs c#" thing. You work for Google, how does it come with such huge C# background to work in a Java/Python/C++ company? Do you use your .net skills at work?

What's your attitude to Java? Do you know it? If not are you planing to start learning?

Is there any chance Google turns to C#/.NET world?

Thanks!

Show all replies

I'm not sure how far I can answer that, I'm afraid. We're pretty tight-lipped about internal code. Sorry!

Reply to this…

What's Your Take on WebRTC?

I really don't have one, I'm afraid. I suspect it may have some really valuable uses, and plenty of useless ones that people are briefly excited about, but that's just a generic opinion of almost any new technology.

Reply to this…

Load more responses