Live data from Hacker News

Ask HN: I have a mental block designing software. Time to quit?

news.ycombinator.com

81–89 of 89 posts

Re: Ask HN: I have a mental block designing software. Time to quit?

#81
post #45

I'm going to take a wild guess and say you don't really care that much about the purpose of your software. You're not a game developer who's been an avid gamer since age 4, or a silicon valley entrepreneur who truly believes their web app is going to change the world. You've identified a niche that's liable to make some money, and are diligently plugging away at an implementation. Your lack of inherent motivation fro…

I'm not the OP, but what you say resonates with me as well.

May I ask what domain or field you work on?

Re: Ask HN: I have a mental block designing software. Time to quit?

#82

Is it possible that you're suffering from "Analysis Paralysis"? ( https://en.wikipedia.org/wiki/Analysis_paralysis ) If you have 15 years of experience, I'm fairly confident that you know how to solve these problems. In fact you probably know 10 different ways to solve these problems. Maybe the overabundance of choice is becoming the bottleneck? If so, perhaps there's a way you can simply force yourself to commit to…

> If so, perhaps there's a way you can simply force yourself to commit to a methodology/problem-solving-method before you start tackling the actual problems.

I really like that idea. So for a given project where there are 5 ways I can say "I'm going to solve it using approach 4. It may turn out to be better or worse than the others but that's not what matters; using this method is what I'm doing" and have that as my goal, not finding the optimum method amongst the 5 possible ways.

Re: Ask HN: I have a mental block designing software. Time to quit?

#83
About 2004, I reached a stall state. I did some serious wilderness time and it took about six years to settle down into a new zone.

This was the trigger for me: (1) I had a development career where I tried to build every application centred around databases; (2) I now had enough experience under my belt to join the dots on where this ended up, and to see that this was futile. But I wasn't able to see past my everything-is-a-hammer.

There is a technique I took a lot of value from in moving on, and I still use it most days. It is this: think hard, ten times, about a problem that is tickling you. I went through a notation phase, but now I just type out my stream of conscious into a text document.

In the past, I would have spent a year building the first thing that came into my house. Now I can consider a large number of ideas, and have context for judging them to be good or bad ideas. The first thing I invest development energy in is significantly better than it would otherwise have been.

It's cool too in that you don't need to be at your desk to do it. You can be in a restaurant, or sitting on the beach, or on the bus, or on an exercise bike. My favourite spot at the moment is lying on a couch. The good thing about doing it away from your desk is it takes away the pressure to rush through the uncertainty.

"choreographing 3 enterprise systems to work together"

How do you think about message-passing between them? Why do you do it that way? Think ten times about different approaches you could use. You could use the exercise to force you to question your passive assumptions. You may find that you are scared by uncertainty. Your subsconscious could choose to fix on something familiar, than to admit that it does not know. All the more reason to do this away from your desk. Take a walk.

Feel free to ping me via my account email if you want to discuss your situation in more detail.

Re: Ask HN: I have a mental block designing software. Time to quit?

#84
Don't decompose up-front. Instead, take your prototype and and start adding the polish necessary to turn it into a finished product. When a subsystem starts getting so complicated that can't understand it when you're changing it, look at that subsystem in isolation and figure out how you might refactor it to eliminate code duplication, create simple interfaces, etc. Eventually you end up with clean system boundaries separated by message passing, but each individual step doesn't require that you hold the whole system in your head.

Re: Ask HN: I have a mental block designing software. Time to quit?

#85
post #82

Is it possible that you're suffering from "Analysis Paralysis"? ( https://en.wikipedia.org/wiki/Analysis_paralysis ) If you have 15 years of experience, I'm fairly confident that you know how to solve these problems. In fact you probably know 10 different ways to solve these problems. Maybe the overabundance of choice is becoming the bottleneck? If so, perhaps there's a way you can simply force yourself to commit to…

> If so, perhaps there's a way you can simply force yourself to commit to a methodology/problem-solving-method before you start tackling the actual problems. I really like that idea. So for a given project where there are 5 ways I can say "I'm going to solve it using approach 4. It may turn out to be better or worse than the others but that's not what matters; using this method is what I'm doing" and have that as my…

Exactly. It's almost like recreating the pseudo-efficiency that newer developers seem to possess (I only know one way to solve this, so I'm going to do it that way, and do it fast). In your case, the loss of choice is artificial, but it reaches the same result (getting it done).

Re: Ask HN: I have a mental block designing software. Time to quit?

#86
post #81
post #45

I'm going to take a wild guess and say you don't really care that much about the purpose of your software. You're not a game developer who's been an avid gamer since age 4, or a silicon valley entrepreneur who truly believes their web app is going to change the world. You've identified a niche that's liable to make some money, and are diligently plugging away at an implementation. Your lack of inherent motivation fro…

I'm not the OP, but what you say resonates with me as well. May I ask what domain or field you work on?

I used to work on desktop apps doing interesting stuff with large and/or soft-realtime data. Now I am working on a Ph.D. in CS. I decided I would not be happy in the long term unless I'm doing research-level work. Even though I was developing products much more interesting than the typical CRUD app, I was still spending lots of time on GUIs, undo systems, file IO, etc. I want to avoid that kind of work as much as possible in the future.

Re: Ask HN: I have a mental block designing software. Time to quit?

#87
post #44

Earlier quoted context omitted.

> How exactly does the "mental block" look like? Does it mean that you see several possible approaches and struggle to decide which one to use? Sometimes yes (paralysis by choice), but in this case no. In this case defeat and "I can't do it" are my initial response, and I shy away from programming. > A lot of people grow with their competences (be it knowledge or skills) to the moment when they start to realize the l…

>defeat and "I can't do it" are my initial response, and I shy away from programming. Was it always the case? Also: how do you finish your projects then? >a competent coach please, vs someone who's overconfident in their own abilities? I'd say that anyone demonstrating a strong confidence either in the results (ie. guaranteeing to help you) or own skills (ie. talking a lot about self) has a giant red flag over his/he…

> Was it always the case? Also: how do you finish your projects then?

No. Until I was 12-13 I had a real 'can do' attitude; I executed and others looked on in amazement. And up until 5-7 years ago I loved programming and making the computer do things.

Thanks for your excellent pointers to assessing a good coach - those are going to be really helpful. I only have a question about 3) as I don't know what the difference is myself :)

> 3. Describe you the idea of coaching and how it is different from advice, counseling, therapy and other forms of help which are sometimes confused with coaching.

Re: Ask HN: I have a mental block designing software. Time to quit?

#88
post #69

What you're describing to me is you've built a very solid structure for reasoning about programs, but it is too rigid, and too focused. I would heartily recommend learning a new language. You need to shake things up a bit. Two reasons: 1. https://www.wikiwand.com/en/Linguistic_relativity - Our language shapes our thought. This is true for spoken and programming languages. 2. You cannot properly understand a language…

> I would heartily recommend learning a new language. I've installed a nice selection of languages tonight. Can anyone suggest sample projects to do as learning exercises? My ideas a) don't need the language, b) are too complex or c) involve CRUD, and I do far too much of that every day :) TIA!

Read "Functional Programming in Scala" or any other good book on functional programming to see things differently if you've just stuck with imperative so far. There's also http://iloveponies.github.io/120-hour-epic-sax-marathon/

Read books on concurrency ("Learning Concurrent Programming in Scala" if you carry on with scala) and then you'll find different ways to write performant concurrent code - for CRUD sites or other stuff.

I'm not pushing scala rather exposure to other ways of doing things you might not have come across - functional programming, futures, akka, etc.

But yeah, also design patterns. And have you read http://highscalability.com/ for architecture ideas?

Re: Ask HN: I have a mental block designing software. Time to quit?

#89
post #88
post #69

Earlier quoted context omitted.

> I would heartily recommend learning a new language. I've installed a nice selection of languages tonight. Can anyone suggest sample projects to do as learning exercises? My ideas a) don't need the language, b) are too complex or c) involve CRUD, and I do far too much of that every day :) TIA!

Read "Functional Programming in Scala" or any other good book on functional programming to see things differently if you've just stuck with imperative so far. There's also http://iloveponies.github.io/120-hour-epic-sax-marathon/ Read books on concurrency ("Learning Concurrent Programming in Scala" if you carry on with scala) and then you'll find different ways to write performant concurrent code - for CRUD sites or o…

Thanks for your comment!

> But yeah, also design patterns. And have you read http://highscalability.com/ for architecture ideas?

Lots. I would love to have clients in that league (I greatly enjoy scaling, optimization, performance tuning)

Post reply on HN