The Programmer's Hangout
Slashdevslashrandom Q&A - Nov 8th, 2019
Nano BOT 08-Nov-19 06:28 PM
SlashDevSlashRandom is answering supergrecko's Question:
Question: Out of all the stacks you've worked with, which ones would be your favorites?
⭐ 7
SlashDevSlashRandom: I like the JVM (but not necessarily Java), I like relational DBs (they're tried and true and mostly consistent), and I think web browsers are a great ubiquitous dynamic runtime. So, a web page with a robust JVM backend, backed up by queues and a relational DB.
#⃣ 6
1⃣ 6
blaze 6
java 13
javascript 4
kotlin 9
SlashDevSlashRandom is answering DemonDestroyer's Question:
Question: What is your favorite project that you have worked on?
⭐ 2
SlashDevSlashRandom: Probably an IntelliJ plugin. I was the customer, so I got to make experience decisions and I was also somewhat passionate about the product being just the way I wanted it. It also wasn't for work, which meant I had no real deadline, so I could refactor and gold-plate until I was happy.
SlashDevSlashRandom is answering Pickle Rick's Question:
Question: Does speed matter?
⭐ 3
SlashDevSlashRandom: Yes, speed matters. So do lots of other qualities. How much those qualities matter in relation to each other is context-dependent.
👍 2
SlashDevSlashRandom is answering Kibb's Question:
Question: What was the last hard problem you solved?
⭐ 4
SlashDevSlashRandom: It would probably be trying to create a "schema language" (very loose terms) for a certain file type I encountered. The difficult part wasn't the implementation, but the up-front design work of trying to find the right balance between giving users the flexibility they needed to describe their schemas and the ease of use needed to make the application viably usable for people who don't have a very technical background.
zoop 2
lisp 4
Nano BOT 08-Nov-19 06:47 PM
SlashDevSlashRandom is answering SizableShrimp's Question:
Question: Which work environment brought the best out of you and your associates? The worst? What balance did you have to strike in both?
⭐ 1
SlashDevSlashRandom: I find pair programming to be great for both writing good code and keeping up a good working relationship with teammates. I feel like a heavily-siloed environment moves very slowly and produces worse results. In either situation, I like to collaborate and bounce ideas off people, so in pairs we just have to make sure we're actually making progress instead of constantly re-designing or second guessing, and when faced with silos, I like to establish a rapport with people in the other silos and just pretend the red tape doesn't exist as much as possible.
SlashDevSlashRandom is answering shan's Question:
Question: Which role did you enjoy the most and why?
⭐ 2
SlashDevSlashRandom: I like doing quality engineering, because I feel like having arguments about a wide variety of code lets a lot of ideas get spread quickly. Sometimes we get stuck in our own "camps", so when I'm helping Team A improve their Java code one day, and Team B improve their Ruby code the next day, and building tooling in Kotlin, I get to see a lot of different viewpoints, and I also get to expose other to viewpoints that might be valuable in the context they're currently in.
hypers 5
SlashDevSlashRandom is answering tomasff's Question:
Question: Which technologies do you enjoy working with the most
⭐ 1
SlashDevSlashRandom: Kotlin, Clojure, a little bit of Haskell, relational DBs, message queueing, GNU command line tools, the web in general, and whatever tool I feel like will let me solve the problem I currently have.
kotlin 2
u_also_like_kotlin 2
i_said_kotlin 2
lisp 1
SlashDevSlashRandom is answering Papaia's Question:
Question: What language would you recommend for complete beginners and why?
⭐ 1
SlashDevSlashRandom: I'd say it's context-dependent on what you're trying to do with the language. I'd say keep in mind that, generally speaking, programming languages are a tool for solving a problem. With that in mind, asking "Should I learn to use a hammer, a screwdriver, or a drill first?" sort of depends on what you want to do with that knowledge. To me, choosing a first language is a similar proposition.
Nano BOT 08-Nov-19 07:10 PM
SlashDevSlashRandom is answering Zenohm's Question:
Question: How have you dealt with systems that are so hopelessly mismanaged by years of abuse that you just want to throw the whole thing out?
⭐ 2
SlashDevSlashRandom: I will recommend a few different approaches - different approaches make sense in different contexts: 1) throw the whole thing out 2) focus some amount of time on improving the system in small increments - big overhauls tend to be error-prone or collapse under their own weight, but with little changes here and there, you eventually look back and say "wow, this is a totally different system now" 3) work on something else 4) get to know the system so well that you're consistently needed to provide guidance to others, and then influence them to small improvements over time (you get more time to think about improvements to the big picture) I've done #1, but the system was small enough that I re-wrote a better version in about 3 weeks, and then we could easily justify throwing out the old one. I started doing #2, and over time that turned into #4. I've also done #3 when it was clear that certain individuals has no interest in making the system better. Admittedly, #3 doesn't actually deal with the system, but it solved my problem, and in time, the system sort of collapsed. Conversely, an approach that I've never seen work is to continue abusing the system.
SlashDevSlashRandom is answering 1anakin20's Question:
Question: Do you prefer working alone between walls or with an open space?
⭐ 3
SlashDevSlashRandom: Just as a personal preference, I like to be between walls because I can focus almost entirely on what I'm doing... if I'm outdoors or otherwise in public, there are usually distractions, and you usually can't choose when to be distracted.
⭐ 1
SlashDevSlashRandom is answering zyde22's Question:
Question: What is your academic background ?
⭐ 3
SlashDevSlashRandom: I just barely graduated high school (I was working 40+ hours a week during my last two years of high school). I also attended a "vocational" school for half of each school day when I was in high school, in the computer lab, and got some exposure to a variety of topics there, and they made me go get some certifications that I never used. I didn't like the general education classes in high school, but I really like working in the computer lab, and my grades reflected both of those things pretty clearly. After high school, I felt like college would be more of the same dull classes that I didn't want to deal with, so I didn't go.
⭐ 1
SlashDevSlashRandom is answering doxJJ's Question:
Question: What's your favorite cloud computing platform and why?
⭐ 1
SlashDevSlashRandom: I don't spend much time on cloud stuff, but from the bits I've seen, I'd probably say Amazon's services, because the services they offer are "simple services", by which I mean they don't want you to run your all-in-one monolith on their servers - they draw lines between "here's storage" and "here's traffic routing" and "here's compute". I like that approach, because it allows a lot of freedom, reusability, and the ability to deal with just what matters to you right now. That, and I really like repl.it.
SlashDevSlashRandom is answering moss's Question:
Question: What's the wackiest thing you've ever seen/experienced during your career?
⭐ 3
SlashDevSlashRandom: Probably the wackiest thing, to me, has been meetings with lawyers where we spent over 2 hours discussing the definitions and implications of one word that's specific to my work domain. There were some questions that I felt made no sense at all, and I was trying to give them answers to the questions that didn't make sense, and the lawyers all sat there, calmly taking notes about what I was saying. There were points where I was expecting someone with a TV camera to come through the office door and say "you just got punk'd".
SlashDevSlashRandom is answering tomasff's Question:
Question: Which new emerging technology do you appreciate the most
⭐ 2
SlashDevSlashRandom: I don't know a whole lot about it, but I think that gene manipulation technologies have the potential to do amazing things for humankind
SlashDevSlashRandom is answering tomasff's Question:
Question: What does your IntelliJ plugin do?
⭐ 1
SlashDevSlashRandom: It's basically just a "task system" plugin, but for the task management software that I use in my job. That software is commercial, but it's not nearly as popular as GitHub or GitLab or JIRA, so there wasn't really a solid plugin for it.
SlashDevSlashRandom is answering Fox's Question:
Question: What is the most common trait of successful developers?
⭐ 4
SlashDevSlashRandom: This answer will likely sound formulaic and cheesy, but I think the common trait is a passion for the work they're doing. I've noticed that my work tends to be of a lower quality when I'm working on a product that I either don't care about or have no faith in. I think that to do your best work in pretty much any field, that passion may not be sufficient, but it is necessary.
Nano BOT 08-Nov-19 07:50 PM
SlashDevSlashRandom is answering tomasff's Question:
Question: What's your opinion on the AI/ML hype?
⭐ 3
SlashDevSlashRandom: I think that AI and ML have the potential to be game changers in fields that we have difficulty explaining/codifying. For example, high-performance driving - you can teach someone what the pedals do and what road signs mean, but a lot of the learning of how hard to apply the brakes or how to turn a car smoothly is not something that we have a good way of teaching people to do outside of them experiencing it. And I feel like that might be ML's sweet spot - the computer tries stuff, gets some sort of feedback, and adjusts itself and tries again.
Nano BOT 08-Nov-19 07:57 PM
SlashDevSlashRandom is answering Fox's Question:
Question: What is your favourite interview question to ask?
⭐ 2
SlashDevSlashRandom: I don't have a specific favorite (because it depends on what role I'm interviewing the person for), but I have a favorite type, which is a question that has multiple answers that shine some light on your problem-solving process. So, one that I used for a "linux build engineer" type position kind of went from familiarity with command-line tools to "I have a file that's basically line noise - can you help me find the IPv4 addresses in it?". This might lead to a fairly naive answer like looking for a string of digits and periods, or to a more complicated regex that only finds numbers between 0 and 255, but I'm more interested in how they think through their answer.
Nano BOT 08-Nov-19 08:06 PM
SlashDevSlashRandom is answering Fox's Question:
Question: What do you think could be improved about the hiring process in the software world?
⭐ 1
SlashDevSlashRandom: I'm not sure that there is just one "software world", so the hiring process in Australia might be very different from that in the US, and even between different regions of countries. A thing that I've seen in my particular nook of the world is interviews where the technical part of the interview is two or three very formulaic "what's the difference between an inner join and an outer join" type questions, and most of the interview is very generic questions that you could ask someone applying for any position (e.g. "tell me about a time when you had a conflict about how to get something done and blah blah blah"). I think there could be a better balance between how someone works with a team, and whether someone knows how to do their job. If you've got a team full of people that get along really well, but none of them can code their way out of a paper bag, then you're not going to get any work done. The other end of the spectrum is problematic as well - if you get people that are awesome devs but they keep butting heads, that's also not a recipe for getting a whole lot done.
zoop 1
SlashDevSlashRandom is answering Pickle Rick's Question:
Question: is it possible to have success as a developer without hight degree?
⭐ 9
SlashDevSlashRandom: yes
Nano BOT 08-Nov-19 08:18 PM
SlashDevSlashRandom is answering Goon's Question:
Question: How does a developer balance staying up-to-date with vulnerabilities as well as emerging technologies?
⭐ 1
SlashDevSlashRandom: If you're working full-time as a developer, there's an argument to be made that to bring the most value to the company for which you work, some of your time should go toward what I'll call "continuing education". Dan North has a great metaphor about software being like surgery that I won't fully go into here, but the analogy extends here... would you want a surgeon who says "I graduated from med school is 1982, so I only do surgeries with the implements and techniques that were available in 1982"? Probably not. You want a surgeon who goes to lots of seminars and keeps up with medical journals and so on. The same should be true of software developers. With that said, surgeons sometimes may have to give up a weekend here or there to fly to a seminar, or maybe they work late one night a week catching up on journals or whatever, so I'm not convinced that it's totally fair to say "I only care about my profession when I'm explicitly getting paid to do so", but I also think that if an employer wants their teams to stay up-to-date, they should enable that as opposed to taking the attitude of "that's the employee's problem, not mine".
Nano BOT 08-Nov-19 08:27 PM
SlashDevSlashRandom is answering Refresh's Question:
Question: What are your favorite Design Patterns or the ones you use the most?
⭐ 2
SlashDevSlashRandom: I'm going to use a very loose definition of "design patterns" here, because the GoF "Design Patterns" are largely aimed at OO (it's in the title of the book, don't @ me), and I find myself drifting further from the OO world these days. - loose coupling - the factory pattern, but very loosely (think about a Map of keys to constructor lambdas) - composing simple things to make more complex things - preferring libraries to frameworks - trying to avoid "magic" things (like frameworks that build a basic website without you actually supplying any input at all)
Nano BOT 08-Nov-19 08:39 PM
SlashDevSlashRandom is answering lambda's Question:
Question: Any advice for college noobs just starting out?
⭐ 2
SlashDevSlashRandom: Study broadly. If we're sticking just to technical stuff, learn at least 2 different programming languages that vary greatly in their approach to solving problems. And don't just learn how to write code that runs in your IDE, learn how to build it, how to package it, how to deploy it, how to troubleshoot it when things go wrong. Practice programming, but also practice explaining technical concepts to people that don't have the background to understand them. Give them just enough background (or a metaphor) to understand the concept. I can't count how many trouble tickets I've closed for non-programmers where the system was working perfectly, but they didn't quite understand what it was doing. By giving them a metaphor, the "light bulb went on", and the blocks started falling into place. I apologize for that being a bit of a ramble, but I've never seen a job where someone just writes code and doesn't interact with stakeholders or managers or anybody who doesn't understand the work they're doing, and in those situations, there's no amount of code that's going to bridge that gap.
👍 7
Nano BOT 08-Nov-19 08:46 PM
SlashDevSlashRandom is answering Xetera's Question:
Question: I've heard you have a lot of experience working with databases, which db was the first one you used? Do you have a favorite one or a type you like working with the most? (relational, graph, etc)
⭐ 4
SlashDevSlashRandom: 90% of my experience is with relational DBs. If we're not counting MS Access (and I don't count it), then the first one I worked with heavily was Sybase. I've now used MS SQL Server, and some Oracle, and some MongoDB. I like relational DBs because of the really solid algebra behind it, and it's a model that feels very natural to me, but document stores and graph DBs definitely have some appealing use cases, especially (in my mind) when they're intermediary stores (e.g. using a document store for caching API results).