hacker news with inline top comments    .. more ..    24 May 2014 Ask
home   ask   best   5 years ago   
Ask HN: What do you do when your entire being opposes the task at hand?
291 points by septerr  15 hours ago   172 comments top 85
jblow 13 hours ago 21 replies      
I felt obliged to comment because I feel I know what you are talking about and I also worry that much of the advice posted so far is wrong at best, dangerous at worst.

I am 42-year-old very successful programmer who has been through a lot of situations in my career so far, many of them highly demotivating. And the best advice I have for you is to get out of what you are doing. Really. Even though you state that you are not in a position to do that, you really are. It is okay. You are free. Okay, you are helping your boyfriend's startup but what is the appropriate cost for this? Would he have you do it if he knew it was crushing your soul?

I don't use the phrase "crushing your soul" lightly. When it happens slowly, as it does in these cases, it is hard to see the scale of what is happening. But this is a very serious situation and if left unchecked it may damage the potential for you to do good work for the rest of your life. Reasons:

* The commenters who are warning about burnout are right. Burnout is a very serious situation. If you burn yourself out hard, it will be difficult to be effective at any future job you go to, even if it is ostensibly a wonderful job. Treat burnout like a physical injury. I burned myself out once and it took at least 12 years to regain full productivity. Don't do it.

* More broadly, the best and most creative work comes from a root of joy and excitement. If you lose your ability to feel joy and excitement about programming-related things, you'll be unable to do the best work. That this issue is separate from and parallel to burnout! If you are burned out, you might still be able to feel the joy and excitement briefly at the start of a project/idea, but they will fade quickly as the reality of day-to-day work sets in. Alternatively, if you are not burned out but also do not have a sense of wonder, it is likely you will never get yourself started on the good work.

* The earlier in your career it is now, the more important this time is for your development. Programmers learn by doing. If you put yourself into an environment where you are constantly challenged and are working at the top threshold of your ability, then after a few years have gone by, your skills will have increased tremendously. It is like going to intensively learn kung fu for a few years, or going into Navy SEAL training or something. But this isn't just a one-time constant increase. The faster you get things done, and the more thorough and error-free they are, the more ideas you can execute on, which means you will learn faster in the future too. Over the long term, programming skill is like compound interest. More now means a LOT more later. Less now means a LOT less later.

So if you are putting yourself into a position that is not really challenging, that is a bummer day in and day out, and you get things done slowly, you aren't just having a slow time now. You are bringing down that compound interest curve for the rest of your career. It is a serious problem.

If I could go back to my early career I would mercilessly cut out all the shitty jobs I did (and there were many of them).

One more thing, about personal identity. Early on as a programmer, I was often in situations like you describe. I didn't like what I was doing, I thought the management was dumb, I just didn't think my work was very important. I would be very depressed on projects, make slow progress, at times get into a mode where I was much of the time pretending progress simply because I could not bring myself to do the work. I just didn't have the spirit to do it. (I know many people here know what I am talking about.) Over time I got depressed about this: Do I have a terrible work ethic? Am I really just a bad programmer? A bad person? But these questions were not so verbalized or intellectualized, they were just more like an ambient malaise and a disappointment in where life was going.

What I learned, later on, is that I do not at all have a bad work ethic and I am not a bad person. In fact I am quite fierce and get huge amounts of good work done, when I believe that what I am doing is important. It turns out that, for me, to capture this feeling of importance, I had to work on my own projects (and even then it took a long time to find the ideas that really moved me). But once I found this, it basically turned me into a different person. If this is how it works for you, the difference between these two modes of life is HUGE.

Okay, this has been long and rambling. I'll cut it off here. Good luck.

adrnsly 13 hours ago 3 replies      
I know the exact feeling you're talking about - I used to work at a wonderful small dev shop where things moved fast; whole projects were wrapped off in a week or two.

Until this one project where we were asked to 'fix' an already written Android app (written by an Indian outsource then sent to Canada). The contract was for a massive amount of money, everything looked clear cut and straight forward, how could we say no?

For almost 7 months (!!!) my team and I had endless meetings next to a wall map containing the 5000+ classes that each had to be dissected, understood and reimplemented properly. All the comments were in at least two different foreign languages, and even the best translation services (human included) could only give us at best translations like: 'not class, forwards' or 'use brick making way here', most likely due to the comments being poor in their original language in the first place (not due to the translation).

At first I had great momentum, I was an unstoppable force; then quickly things started slowing down - each task started taking hours longer, than days longer, than weeks longer. Ultra trivial fixes like the placement of one statement outside a try catch, could easily take a whole month to locate (by a team of 4!).

After pouring my heart and soul into this project day after day, grinding myself literally to the bone; I started getting depressed, physically sick to my stomach for days at a time, starting fights with co-workers over absolutely nothing, just so I wouldn't have to look at that fucking code one more time. Anything to just not look at that code one more time.

By the end of the project (which we did actually manage to complete), I was waiting for that moment of euphoria, that release of completion, that I would never ever again need to look at that code, or work on that project.

But it didn't come.

I was paid more than 100k for completion of the project, so I was well reimbursed for my time.

That's when I realized that it's really not about the money, it's not about the team, or the language; It's not about your repo, or your source control techniques. It's not about agile, and it's not about problem solving. It's not about working from an office or from home, and it's not about the mother fucking 'culture'.

When you're lying on your death bed, and you look back; will you be proud that you spent all that time and suffering to fix an app for some asshole who is trying to make a quick buck by exploiting people who aren't technologically wise enough to realize what they are doing?

The next day my boss asked to meet with me privately; thinking I would be fired (and happy with the idea) we met briefly at a local coffee shop. She said that all the anger, depression, and self loathing was 'worth it' because 'I made a lot of people rich' in the process (myself included) and they were happy to deal with that (and even to pay for therapy).

I was offered EVEN MORE money to continue working on projects exactly like these, to the company we had just discovered a cash cow of an app crop, and I was the golden goose. I could easily do this the rest of my life, and lead whatever life I wanted to outside of work.

I quit on the spot, and laughed and cried the whole way home. Knowing that I would be blackballed in the community that I had worked so hard to establish myself in.

Literally career suicide. The company didn't recover, and a lot of people were (and still are very pissed off with me - like angry emails, restraining orders, fucking pissed).

I promised myself that from now on I would only do work that I believed in enough to starve to death for (and it was looking for a long time like that was going to be the case). The truth is, if you want a job where you can make 6 figures (or even 7 if you're doing it right), you will find it. You will always find it, and they will always be there.

There is a vacuum of talent on the community of expert programmers caused by major corporations like ibm, amazon, facebook, twitter, and snapchat just filling up cubes in their 'programmer cluster'. A group of people they can throw whatever stupid, or trivial tasks at - and you won't say shit, because damn that pay is tasty. You're breaking peoples rights to privacy, doing WAY less than ethical things, and you probably don't even know it (because that's how it's supposed to work, or someone else above you clearly isn't doing their job).

My only advice is to get the fuck out. Run, run as fast as you possibly can and never look back.

Never respond to any recruiters for any reason, never respond to job offers, and don't even think about looking for another position at another company (I promise it's the same thing, no matter how they promise you otherwise, and tell you that their culture is the dopest - nothing like clubbing seals with some rad people right?).

Get off your ass, and do something worthwhile. If you can't do that, then learn how. If you can't do that, then you're a drone and you should keep that shitty job because it's the best you're ever going to do (in which case, fuck you, you make the world a worse place for everyone by whoring your skills out to unethical assholes for cash).

Make something that garners zero profit, make something that only helps people, make something that changes the world for the better. You will quickly see your entire world, and all the people in it change before you eyes. You will get more job offers in your inbox than spam, because the world will see that you don't give a fuck about anything but getting shit done and helping people.

Today I run a few companies, the largest of which is a NPO machine learning research firm offering free services to help cure cancer, track missing children, follow and assess viral outbreaks, and front line ML research pushing the needle of science forward (email: freeML@gatosomina.com for services); and some of the others include: organic vegetable gardening as a service (physical outdoor labour, everyday, which I enjoy more than anything) and free apps that assist paramedics and doctors (without ads or bullshit).

If you want to be happy, like, really, actually happy (and not just wealthy) you're going to have to risk it to get the biscuit; and it's going to be the hardest battle you've ever fought in your entire life, by at least a few magnitudes.

Good luck, it's a jungle out there.

bguthrie 14 hours ago 2 replies      
People tend to reserve pair-programming for tasks they perceive as being unusual, complex, or otherwise needing extra review. Personally, I've found it can be helpful even when you simply need to stay on task. When you both have the same goal, you can rally each other; it's typical to become more productive together than you would have been apart.

If this sounds like it could be your style, grab a buddy and see if you can hammer out some of the small stuff together. If not, some of the other suggestions here are good as well.

ryandrake 11 hours ago 3 replies      
Oh boy, so I get to be the contrarian again.

First of all, isn't it a bit dramatic to say "your entire being opposes" your task? It's not like you're out committing genocide or something. You're programming, and you have to work on a crappy programming task. Every programmer who ever worked a professional job has had to do this at some point. If the very fiber of your soul is wrapped up in your employer's MegaAccounting Client V3.0 REST API, I'd recommend re-thinking your emotional attachment to your job.

That money you get every two weeks is called "compensation" because it is compensating you for your time, which you would probably otherwise spend doing something more pleasant. This is the realistic world of grown-up work life.

If your company's Marketing bone-head says the customers want a green oval button instead of a system-standard button, well, it's stupid, but I'd laugh at how much they're paying to get this ridiculous code written and just write the damn code. It's really not worth losing sleep or sanity over. Not being emotionally attached to your work allows you to shrug off the stupid stuff that Really Doesn't Matter.

e12e 13 minutes ago 0 replies      
> (I am not in a position to change jobs at the moment. I am helping my> BF's startup by doing this job.)

Quit. Get out. Work out a plan with your BF. It's no good to you or himif you destroy yourself on work you hate. Be happy and poor togetherrather than rich and dysfunctional apart.

I've never had to work (for a long time) in a job I truly hated, butI've felt the pain of working in a company with a poor managementculture -- it's taken me a long time to get back the joy of developmentsince I left. I now work in a completely different, low paying job --but it's better being payed less and not having to compromise your workevery day. I'll probably end up with another job in the industry (well,I hope, anyway!) -- but I'll be very careful in choosing where I apply-- unless I manage to make a living independently.

For you it sounds pretty much anything, anywhere would be an improvementthough...

I had a gf that worked in a job that crushed her (shedid the right thing, moved away, got certified as a padi instructor andnow lives with her husband and their child, both working as divinginstructors -- I'd say she made the right choice :).

Quitting might not mean that everything works out for you and yourcurrent BF -- but it sounds like staying will ensure that things willnot work out for you.

Anyway, good luck, whatever you end up doing...

ebiester 14 hours ago 0 replies      
I wish I was done with the series of blog posts that helped me get over this! :)

I struggled with this for years and years. This is not one problem , but three: it is a problem with wisdom, speed, and discipline.

Luckily, we can learn tricks to improve each one.

If we want to attack this from the wisdom perspective, it is this: You are afraid of making the wrong decision because you are afraid to refactor. You are afraid to refactor because you don't have sufficient test coverage.

The good news is, for developers like us, test driven development is very helpful as a technique for getting us over these problems. If our team is not test-friendly, however, it will be difficult for us to make the jump because their code will not be written in ways to make it easy to test.

There are a few books I can suggest to help us jump the chasm:

1. Clean Code by Bob Martin. This book helped me think in more testable code, and also helped me understand how to make better decisions the first time around. It helped me by seeing patterns I didn't know first.

2. Refactoring by Martin Fowler. This one is old, but knowing the patterns of changing code gives us more confidence in knowing what is right, rather than hemming and hawing over what is readable and maintainable.

3. Refactoring From Legacy Code by Michael Feathers can help get from here to there. All of these help from three aspects: They help us develop a set of tests so we are less afraid of breaking existing things, they give us the freedom to experiment, and they help us break things down into smaller, more manageable problems by letting us think about "what is the next thing I can test?"

If we have the tests, we can be more aggressive in reducing complexity.


If we want to attack this from a Speed issue, then look for these things.

1. Look for patterns you use repeatedly, and try to settle down into a process. The fewer choices we make, the faster we can go.

2. Look to learn more about your chosen stack and language. It is possible that we are rewriting the wheel over and over. The more you understand the zen of your stack, the faster you can go and the more time you can devote to writing the same thing twice (without them knowing.)

3. Instead of hemming and hawing about the right solution, write all three. It is often faster to write all three and choose one than to get stuck in analysis paralysis. (That isn't to say you shouldn't think before you write code!)


Finally, you can attack this from a discipline angle.

1. Learn to meditate. By doing so, you can become more self-aware of analysis paralysis, calm your mind quickly, and mindfully choose a path.

2. Exercise. In the same way as meditation, exercise helps us learn to clear our mind and focus on command, and it helps sharpen our discipline chops.

With these, we can develop an awareness of how our body feels. Then we can develop an awareness of how analysis paralysis feels. If we can catch ourselves in the act, we can then institute something from our analytical skills: When caught in the trap, set 30 minutes on your timer, and bring out a pad of paper. If you feel you have the freedom, turn off the monitor.

Take deep breaths, and sketch out the solutions in the first ten minutes on the first page. Use UML or your own system.

In the next ten minutes, write a pro/con analysis on each path.

In the final ten minutes, make the decision. After this, your analysis time is up and you must code.

I suggest a combination of the above.

Good luck! It was one of the hardest things for me to defeat.

haroldp 8 hours ago 0 replies      
I wouldn't say that my, "entire being opposes the task at hand". I would reserve that sort of language for ethical reservations about a task. I do not do things I consider unethical.

But I do encounter many chores in my work that are boring, that are bad ideas, that are for difficult customers, or often all three. I can have the same problems getting those tasks done, just like you describe. Actually, you seem to be way ahead of me because it took my far to long to figure it out. I thought I was losing my ability to program. I was wondering if I was going to have to find another career because I had lost my ability to concentrate. I was reading books on getting things done, and concentration and trying to figure out what the hell was wrong with me. I would sit down to do a task, check email, check reddit, check hacker news, check reddit, get coffee, go to the bathroom, check reddit, "Arg! I have shit to do!" Check reddit, check IRC, etc. I caught myself more than once closing a browser tab with some distraction, pausing for a half moment to organize what I should actually be doing and then open a browser tab to the same thing again.

The insite came when I finally got something engaging to do, and I just powered through it. I could still program! How did I get in the zone? How do I get there again when I need it? Well I worried about hat for a while, thinking there was some combo of sleep, nutrition, environment and task management software that I could line all up and get back to "the zone". It finally dawned on me that I subconsciously find distractions to avoid doing things I don't want to do. What a revelation.

How do I get over it? Well I still struggle with it, but simply identifying the problem was a huge step towards fixing it. Here are some techniques that I use:

Pomodoro technique. This is a productivity trick that actually works pretty well for me. The short version is that that you make a list of very small tasks, then work for twenty minutes (straight! no phone, no emails, no coffee, no bathroom), then take a five minute break. This helps with distraction problems because you can tell yourself, "I can goof off in 7 minutes". It sounds like a lot of interruptions, but I'm amazed at how much I get done with it.

Creating crisis. I work harder with the Sword of Damocles hanging over me, so I put those swords there myself. Call me back at 2:30 and I will have this done. Then I'm good for two hours of, "oh shit, oh shit, oh shit," type production.

Pair programming (and rubber ducking). This really helps to power through crummy tasks. Unfortunately, I work from home for a tiny company. I don't have anyone to program with. But if I am really stuck, I can ask my wife to sit next to me, while I explain what I am doing, and what I am trying to accomplish, and the details of what I am coding as I code it. I can use this occasionally to get over a hump.

Change of venue. I have struggled to find some shitty bug in some shitty spagetti code for a crappy website selling stupid things for WAY too long. The only way I broke through was to take my computer somewhere else, in front of other people. David Sedaris has a great story about a book suggesting he make a change in his house to help him quit smoking. Buy a new couch or something in order to change the venue. In our comfortable habitual surroundings we act in comfortable habitual ways. So he moved to Japan to stop smoking. I can't do this every day, it's just for breaking major blocks.

Anyway, I need to get back to work. Good luck!

eduardordm 14 hours ago 0 replies      

I'm a manager, and sometimes I feel like you. Sometimes I need to ask developers to do things I don't believe in or things I'll throw away in a few months. This also demotivates me. You need both a lot of discipline and just a bit "aloofness" to keep going. Care less about those tasks, think about friday.

If your managers are any good, they know you have wasted hours, they know you are unmotivated, and they know those meaningless tasks are the reason, this is why you are a valued employee. I'd rather argue to death with an employee because he thinks his idea is best for the company than one that will just accept any task like a robot. But sometimes you have to implement ridiculous things into software, from clients being just crazy or because of some strange contract clause. This is when discipline kicks in. Such situations shouldn't happen often, but if they are, that's when you should move on.

You don't need to get "in the zone" to get the job done. Just start by doing smaller pieces, put your headphones on. You could just ask why feature is being built, but I doubt knowing the reason will motivate you at all.

incision 12 hours ago 1 reply      
1.) Doing things you don't want to do, but are necessary for a paycheck or otherwise is a basic part of being a grown-up. Lacking the discipline to simply get such things done and move on is a huge handicap as it's burning loads of time and energy that could be better spent elsewhere.

2.) This is surely arguable, but I think agonizing over a lack of satisfaction/motivation in a job is likewise a waste of time. If you can get those things at work, great - if not, don't try to force it - redirect it to side projects, friends, family or hobbies.

3.) Life is really short and full of trade-offs. Be sure to regularly re-evaluate your position or you might find yourself stuck rather than simply compromising.

>'How do you get in the zone and get it done when your entire being is revolting against the task?'

Through each of the things I described above. Whenever necessary I remind myself that:

* I'm a provider and professional, my family depends on me and I'm paid to do good work - getting this done is not optional.

* My time is short, delay buys me nothing.

* I have no shortage of great things to look forward to when I'm done.

rockdoe 15 hours ago 0 replies      
Also I waste considerable amount of time trying to do things in the most readable, maintainable and simple way possible.

Is waste really the right word here?

They don't see how many hours I have wasted, how unmotivated I am. Instead they treat me as one of their most valued employees (oh the irony!).

"When given a vague, annoying feature to implement, very carefully considered approaches and built it in a surprisingly readable and maintainable way"

What you're experiencing isn't atypical - sometimes programming something sucks! Your employer values your ability to power through it and still get good results.

martin-adams 14 hours ago 1 reply      
I can identify a few times I've experienced having something vague and complex thing to work on. If I were in your situation I'd look at the following...

1. If I'm working on something vague, try to extract more information about it. It's very hard dealing with frequent changes on a complex code base. I'd try to find out who the stakeholders are, customer is, and most importantly, what they are trying to achieve that this serves.

2. Break it down into smaller tasks and measure myself against these. I want to leave work having completed something and not return to work knowing I didn't complete something.

3. Try bringing a colleague in to help you, such as talking through the existing code and bouncing ideas off them. The energy a colleague puts in can help with motivation.

4. Make sure there is an end to it and that it's not an open scope. You'll never finish something if the stakeholder doesn't know what they actually want.

5. If this looks like it's the norm and you're not happy, while you say you can't change jobs now, put the plan in motion for when you can. Think about your CV, learning new things, etc that help. When the time is right you want to be ready to jump.

6. Get enough sleep. I find I procrastinate more when I'm tired. Of course, eat healthily and exercise.

7. Try to remove other distractions, such as any other commitments at work as a 10 minute interruption can cost you an hour if you're not in the flow of the work.

binarymax 14 hours ago 1 reply      
It sounds like symptoms of burnout. I am not an expert but I have personally suffered from burnout before...and it took me a while to get over it. It sounds like you are additionally hampered due to being personally obligated.

As far as I know the only way to get over burnout is to stop. If you do not you will suffer more. I wish I had better news.

mnw21cam 14 hours ago 1 reply      
Yes, I left such a position to go and get a doctorate, because I was fed up with the dumbing-down of the codebase, the way that my colleagues wrote absolute undocumented spaghetti cruft, I had to keep fixing their bugs, and management were making some very dumb decisions about key features. As far as I know they are still going fine, which is surprising given I was the only one who could understand how whole subsystems worked, mainly because I knew how to write safe threaded code.

But, enough on that. A few years before then, I felt like you did, but I wasn't actually in that situation. There is a very real positive feedback loop in effect - you feel like you're doing a bad job, so work longer hours on it, end up taking longer, feeling like you have "wasted" hours, and feel worse about doing a bad job.

Believe your employers when they say you are doing great, otherwise you're likely to be heading down the burnout route which had me off sick for half a year. It's not every coder that has such high standards as you, and that is not something to be ashamed of. Be proud of the code that you have produced. Think to yourself "It's just as well I wrote this bit, because if X had, it would have been awful".

I know this sounds like extreme arrogance, however sometimes it is necessary for the purposes of regaining balance. It sounds like you are being a little too humble. If it gets too bad though, get some help from someone.

ChuckMcM 10 hours ago 0 replies      
Time to gently move on to something else. There is a secret they don't tell you early enough, there is no "prize/goal/win" at the end of your life, you just die. Your life is the sum total of all the time you spend with friends and family and colleagues. And every day of that life you spend fighting yourself is a day you will never get back, you will never be able to change, and you will never cherish.

Dealing with a rough situation that you have no external control over is one thing, dealing with a lousy job you do have control over it. Let go, walk out the door, and look for something more fulfilling.

ollieglass 13 hours ago 3 replies      
As a manager I've had to ask people to do work like this. I try to share it out as best as possible, so everyone's getting the least unpalatable tasks for them. I've also made myself available to talk through why it's required.

Those conversations have taken my team and I to interesting places. I've discussed brand positioning with developers, and shared spreadsheets of time-to-value models with designers, at times going far outside of people's skill sets and comfort zones. If someone insists a piece of work is a bad idea, I invite them to argue against it but insist that I need them to make their case rigorously. Sometime they'll convince me, sometimes they don't want to work through the reasoning, sometimes I'll try and develop their case and argue against myself. I want to reach a position where we either change the task, or we're both satisfied that the task should be done. If that's too hard, then I'm after a position where they at least have rational faith in my request and my reasoning, and are ok to do the work on trust.

I spend a lot of time on this, for a few reasons.

First, I don't want to ask anyone to do something meaningless. Burnout isn't caused by workload. Workload causes exhaustion. Burnout is caused by resentment. If my team resent their work, that's a deep and important problem. I'll tolerate a only very small amount of that, but I'll let everyone know I'm conscious of it, don't like it, and am working to get away from it. Burnout is toxic and damaging to people and the group as a whole.

And secondly, this kind of explanatory work strengthens everyone's investment in the team and the work. It strengthens the team's ability to think together. As people become better informed, all of our discussions become richer and more valuable. People enjoy the work more, and can relax and trust each other more, knowing that decisions are made in ways they can understand and agree with.

Finally this is also a litmus test for me. If a company won't let me in on it's decision making, dismisses my concerns as unimportant and tells me to just get on with something, they're indicating they don't value the team in the same way I do.

Rudism 13 hours ago 0 replies      
I'll throw my hat in with the folks who are saying to get out early before you find yourself in the midst of a truly debilitating burn-out.

That being said, I've worked a couple jobs in the past where I felt similarly to you--one of which I objected to much of what I was working on not only from a utility standpoint, but from a moral/ethical one as well. The only thing that kept me going was the social network I built of similar-minded coworkers. The ability to vent, joke, and commiserate with people who felt the same way I did at the company was extremely cathartic and served as my therapy. I don't think that's a good substitute for getting out and finding something else that you actually enjoy, however, which I eventually did when I realized how it was affecting my mood even outside of work.

loumf 15 hours ago 0 replies      
You can add meaning to your work by picking goals and accomplishing them. It doesn't matter what they are -- just as long as they can be accomplished and you know that you did.

Pick things that incidentally accomplish the assigned goal. For example,

1. Pick an amount of time, like 3 hours, repeat this cycle

2. make a branch

3. implement the feature in the fastest way you can

4. think about why this isn't acceptable

5. throw away the branch

6. do it again avoiding one thing that made the last one crappy

Also, weighing merits of different solutions and picking one is your job -- no need to feel bad about that. Come up with an assessment tool that will help you decide. Time-box decision making, but don't stop thinking about your solution -- just give it the appropriate amount of time, not unbounded.

Making progress is motivating. You want to end up at the same place but have the feeling of progress making throughout the process. I believe that it's possible you are taking the appropriate amount of time to do the work at hand, but you are getting into an anxiety/depression cycle because you can't get into a flow state.

makmanalp 10 hours ago 0 replies      
Mark Twain is rumored to have said something along the lines of "Eat your frog" (it may be apocryphal, but whatever: http://quoteinvestigator.com/2013/04/03/eat-frog/). The point is that you should get up in the morning and make a point of doing the worst, most boring, most disgusting task you can think of. And don't think too hard, just get it done. You can decide whether to improve on it later. Then, the rest of the day, you'll be freed of all the worry, wallowing and indecisiveness.

The other thing is that if they value you, it's probably for a reason. You're fulfilling their expectations and providing them with value. Take the compliment and go with it! http://en.wikipedia.org/wiki/Impostor_syndrome

snorkel 11 hours ago 0 replies      
Why would your managers fire you?

Your managers demanded a stupid feature, and you took long time implementing the stupid feature due to its complexity.

The only thing missing is you need to warn your managers before you start coding such as "This is going to take long time due to the complexity, many many weeks. Also I don't think it's right for the product either."

As long as expectations are clear beforehand, and you met those expectations, then no one is getting fired, and therefore you should relax and enjoy coding Easter Eggs into each shitty feature.

swalsh 14 hours ago 0 replies      
You might be burning out, and not even realize it. I've been in a similar situation. The unmotivated mindset leads to additional hours compounding the effects.

My suggestion go on a vacation, if it doesn't get better... leave. You say you're not in a position to leave... but you have to, because its not going to get any better. You're not really doing anyone a favor by burning yourself out for them.

gknoy 12 hours ago 0 replies      
> I am assigned a feature ... that I feel adds unnecessary complexity > [My] managers ... minds are already made up.

One of the things that I found helped me the most when dealing with features like this is to Let Go of Caring about that particular thing. We fight for what we believe is best, but when a customer, manager, or other higher-ranking stakeholder decides otherwise, it's out of our hands. You did your professional duty by arguing for the Better way (as you see it), but now it's time to make the new direction work.

UX team decides buttons should be the way that pisses you off the most? It's OK, you're not the main user.Manager decides that a "Calculate" button is better than auto-re-calculating? That's ok: the users are happier using that. (We can transition later.)They want an e-mail based workflow for approving things, rather than a web-based one? That's OK: these execs spend most of their time with their phones, and don't want to be logging into the website.

Often what we feel is "unnecessary complexity" is a workaround for a key use case that we didn't realize, or yields customer happiness because it's what they asked for. In that case, it's __necessary__ complexity, just like a bit of ugly code that patches a bug. Try looking at it from the perspective of the user or the manager, and really understand why they feel it is important -- quite often, it's addressing a weakness of your software product that you were not aware of, or which you felt was unimportant.

jejacks0n 3 hours ago 0 replies      
As a programmer and perfectionist with Impostor Syndrome (http://en.wikipedia.org/wiki/Impostor_syndrome), I've learned some ways to mitigate these frustrations and stress causing issues, and figured they might be worth sharing.

I think many of us know your pain, and as a consultant I'm exposed to it on a pretty regular basis. It takes some of the fun out of my job for sure, but I don't let it stress me out. First, we should always want to be passionate about the projects we work on, and I think this is a result of being passionate in general. Being passionate makes it enjoyable, and it allows you to bring your best work forward (which is rewarding), but in our industry we must always create a balance of cost and quality in the midst of a very complex process. To me, this all boils down to priorities and expectations.

When you take your own priorities and combine them with those of someone else, you will never be able to get them to mesh completely. Your priorities may be to make quality code, or to make it elegant or smart -- easily maintainable, extensible, etc. etc. These are things that make it fun, and programmers all know the benefits of these things. Clients, or your bosses, may not understand the importance of these things, or they may, and they may be willing to pay it down later, whatever the case may be, there are conflicting priorities at play and this is the thing you must mitigate to avoid stress.

For me, I must either disregard the external priorities entirely and do it the way I believe it "should be done", or I must disregard my priorities entirely and adopt the external priorities as my own. This may result in technical debt, or a slow progression in the future, or can raise the potential of bugs to be introduced, but these are not my concerns if they are not part of the external priorities.

It's important that you communicate all of my concerns up front, and if it doesn't impact the priorities that are communicated, you must trust that it's ok. If you don't trust that it will be ok, or think you will be negatively impacted by doing it the way you're being asked to do it, you should leave. A management(or client)/ employee relationship is built on trust, and if you don't have that trust you will be less happy than you could be.

djeebus 14 hours ago 0 replies      
First and foremost, remember that you're writing code to bring in customers. Your codebase can be beautiful, pragmatic, semantic, and have 100% test coverage; if you don't have any customers, you don't have anything.

"Unnecessary complexity to the codebase"

It depends on what you mean by unnecessary. If you mean "won't bring in anymore customers", have that conversation with your managers. Not all of them are brilliant, and no one gets it right 100% of the time. If you can prove that the feature doesn't provide value, have that conversation with them.

On the other hand, if your boss ignores your input, and you're 1000% sure that there are other features that are more valuable to your business than the one in question, you can always push that one to the back and work on something that's more productive to the company. Depending on your political and professional circumstances, your boss may not notice or care, and their boss may forget about their red herring feature; you might be able to side-step the conversation altogether. This will only work if there's more than a few items on your plate that need to get done soon, and this feature can get pushed aside without delaying or blocking anyone else.

Bear in mind that if you go this route, you're putting yourself, your career, and your neck on the line. If it turns out that it wasn't a good idea and everyone agree with you, you'll look like a genius and gain some clout as a clairvoyant; if it turns out it was seriously necessary, you'll look like someone who pouts when they don't get their way. Either way your boss may also hold a grudge. I'm not saying it's the greatest way to go, just adding it as an option. It's helped me more than a few times in my career, but it's also frustrated my bosses a few times. Be gracious if you're shown wrong though, and quick to admit defeat if it's obvious you chose the wrong path, and you should be fine no matter what happens.

cognivore 12 hours ago 0 replies      
Wait, how long have you been programming? 'cause this is essentially the job description of every programmer I know.
orky56 11 hours ago 0 replies      
It seems your internal struggle about your perceived inefficiency is burning you out. Rightfully so if you are wasting time on what's not particularly important. Do your managers value the quality of your work as much as you do? If not, do you think you'd be able to live with a slightly lower quality deliverable that frees you from the stress? Perhaps it would allow you to work on that feature you do want to work on.

We have a right to be happy. We should make decisions that satisfy the majority of our lives and where do what we love. For things not under our control, we still need to love what we do.

The easiest solution to your problem is creating discipline and decisiveness. When you give yourself more hours to work than you are expected to, you create a vacuum of inefficiency. You work unsustainably on things of little value. Instead I would force you to a) figure out your success criteria, b) what are those steps, c) prioritize those steps, and most importantly d) set time limits for each of those steps. The constraint of time will force you to get to the 80% quickest. I have written some articles on these exact problems and in the process of creating an app with those insights. Feel free to read more here: https://medium.com/produce-productivity/ee13c1600b6b

falcolas 14 hours ago 1 reply      
Not a therapist, but have a look (or better, have a professional have a look) at ADHD-PI. What you've said describes perfectly how I feel at work a lot of the time, and it's what I was diagnosed with.

I seem to have a finite pool for motivating (or more accurately forcing) myself to do work. And when that pool is empty, it's off to HN or Reddit I go. Frustrating, and I still don't have a solution yet.

Hope this helps.

ScottBurson 10 hours ago 0 replies      
Also I waste considerable amount of time trying to do things in the most readable, maintainable and simple way possible. This means weighing merits of different solutions and choosing one. I am a really hesitant decision maker, resulting in more wasted hours.

This time is not entirely wasted. Even in the worst case -- where the code you are so carefully writing winds up not being used after all -- you are getting good practice in code craftsmanship. The next time you are faced with a decision similar to one you are making now, you will make it more easily: not only have you considered the issues before, but you know how one of the possibilities actually worked out. This is how one builds experience.

I usually find that writing code slowly and carefully is in fact the fastest way to get it done, because it minimizes debugging and rewriting. There are exceptions, such as exploratory programming, when you know you're going to throw the thing away anyway, and in small utilities built for personal use; and there are times when getting something working quickly is important (for a demo, for instance) even though you know you'll have to rewrite it. But these are exceptions. When you're implementing important functionality that's going to be in the product for the foreseeable future and that others will have to maintain and build on, the slow, careful way is best.

It seems to me the real problem here is that although your managers value your work, they don't listen to your architectural opinions. That's a serious problem. Maybe at some point you'll need to tell them, "if you want it done that way, you'll have to find somebody else to do it". Pick your battle carefully though -- it needs to be a case where their way is clearly and substantially suboptimal.

doktrin 8 hours ago 0 replies      
I can't say how much this post speaks to me. I've felt similarly for the last month or so, or ever since I was assigned my current project. I don't have any actionable advice, so I'll just share my current situation.

Without going into details, in my case the task is implementing a terrible, hacky solution for a total edge case problem. It's something I will probably never do again in my entire career.

It's draining. It claws at my self esteem, as I sit in the office wasting literal hours during a day not doing anything. The output of the 4-5 hours of actual work I put in over the course of a week appear satisfactory to the stakeholders, which is mind blowing.

I know that the sooner I get this done, the sooner I can move onto something more interesting. However, just working on this particular task has sapped my will like nothing I've experienced before in my career as a developer.

neverminder 13 hours ago 1 reply      
I'm in a state that you've described pretty much every day. This is reality I'm afraid. Only the best of the best of us get to choose what they want to do, the rest are having a hard time surviving most of the time. I work in a software company and absolute majority of my coleagues are not interested in technology at all. Some of them sit on the same chairs for 15 years turning some ridiculous specs into useless code. As soon as the clock strikes 5 they get up from their chairs and proceed to the exit with unchanged zombie faces. I can swear I saw cows doing that somewhere in the countryside. I spend all the spare time I have to get as good as I can so that I could eventually not be ignored anymore and find a job that I would really like.
buckbova 12 hours ago 0 replies      
When this happens to me I take the time to refactor all sorts of "dependencies" in the process. It ends up being a net positive. Yeah, I added some complexity where it wasn't needed in one area but I've removed some legacy code or redesigned an ugly hack.

They don't know this code is generally unrelated or don't complain to me about it. Only problem with this is I can now be opening up new bugs because these revisions aren't always fully QA'd.

lnanek2 9 hours ago 0 replies      
This is par for the course for programming. I usually just shrug, write it their way, and figure it is their money they are wasting. It's my job to mention better ways, but in the end, do it how I'm told. One work place in particular we often rewrite the same thing 3 times over. Sometimes it gets better, sometimes worse. On rare occasions, things do actually work out better their way if they knew a different product was coming down the line with different requirements, or a graphics designer pushed really hard for something that ended up making the app look cleaner or kept her engaged in the project even if it was a PITA for the programmers, etc.. So sometimes you'll discover it isn't so bad after you implement it. For the rest of those times, just grab a personal project, or hit a hackathon, and do it your way. Then don't grasp so hard on having it your way on work projects.
CaRDiaK 13 hours ago 0 replies      
I get like this more often than I like to admit. I just break the entire thing down and write a multitude of check box's. Personally I'm using the bulletjournal technique (www.bulletjournal.com)

If I cant get the motivation then I need more abstraction. Abstract until you drop! You are naturally conditioned towards completing things and positivity. That's why people get badly addicted to games like farmville and such. You do something simple, you get something back, you do something else, you get something else. Really your just baking time. But the psychology of achieving is where the addiction comes from. It's not the game. It's the fulfilment from completing something. You need to see this progress visually so you feel like your moving.

It's not uncommon for me (when I'm really low and scraping the barrel) to have a task like for a job such as this;

[ ] Open Sublime[ ] Set-up folder structure[ ] Skim read spec[ ] note areas of concern for later [ ] Describe required method to self / colleague / rubber duck [ ] pseudo code initial method [ ] expand pseudo to code [ ] looks in spec for extra details [ ] list who needs to be contacted for further information[ ] email manager estimate[ ] take a break...

Now you can start to get "little wins" even on something you don't really agree with / want to do. The goal now becomes to tick those damn boxes, not to implement some feature you don't agree with. It might seem strange to tick a box for something as simple as opening a program, but if that's the level you need for your motivation then that's OK. The reality is these check box's are just mental milestones for progression. What's really important is your ticking them though. If you find yourself for hours on end not doing the list, the list is wrong somehow. Perhaps you don't have small enough tasks. Perhaps the tasks are too hi level and need to be split into sub tasks on those. Just tick, tick, tick.

Try it, it might work for you, it might not. This sure helped me though! Good luck.

neeleshs 9 hours ago 0 replies      
Yes, I have been in these situations. For me, there was no getting in the zone - I used to spend a lot of time pushing back, trying to oversimplify a solution, or just freezing because I was not stimulated enough by the task at hand.

Ultimately, I chose the path of gritting my teeth and getting over it. During that phase, the code quality suffered a little, but I did not have to waste hours and hours of my life freezing on it. This phase lasted for a few months in some cases.

This is by no means a long term strategy - I accept it as part of any programmer's life and simply deal with it without being emotional about it as much as possible. I have been fortunate enough to get more exciting work than mundane stuff

Jean-Philipe 14 hours ago 0 replies      
Unless it's morally against my ideals, like violating privacy, stealing money from kids with phones, etc., I don't see that many problems with features I don't agree with. They want it, they pay, why not? Surely, if it was my own company or a team I'd value, then I'd hesitate to implement that feature and argue with everybody about it. But at some point, I leave the project and once I don't I own it anymore, I don't have problems with features I don't like. That is, unless they tell me /how/ to solve the task.

What helps me most is finding a technical challenge that makes the feature interesting and fun to implement. This shouldn't be too hard, if you are free to design the feature technically. Hope that little hack helps you getting things done.

flipped_bit 14 hours ago 0 replies      
Welcome to programming!

"Also I waste considerable amount of time trying to do things in the most readable, maintainable and simple way possible"

Motivation is tied to your attitude here as you are looking to do more 'interesting' work, whereas the task at hand looks boring. However the task at hand could be important for the company, so it is important to take trouble understand the big picture here. Most engineers (and I am one of them) are too self-centered to do this, and this can be debilitating.

It involves coming out of your shell, being proactive to talk to the business, product and other areas and see why these set of features that needs to get done has important implications.

At the end of the day, everything is about service. If you enhance your attitude to think more in a service-oriented way (it is not all about you), this changes your 'attitude profile', and in turn can boost your motivation factor by several orders. Suddenly what looked boring becomes very important. It may mean to be more pragmatic ( no ideological fixations on 'purity of code'), roll up your sleeves and get it done.

The valuable service to the customer, can lead into repeat business, which adds to the bottom line, and that later could mean more bonus for you, which you can use it up for that special time with your BF that you have been planning for a while.

scardine 13 hours ago 1 reply      
Don't get so emotionally attached to the job, it is not professional.

Sometimes I have the impression that the younger don't know how to take it like a man. There is a difference between complaining and whining, guess which one makes a man miserable...

Reality is hard to change, but perception is easy. You can really improve your happiness by reworking your perception.

Take some distance and look at the big picture: as an Employee, your main concern is if the pay check cashes. Everything else is ultimately a problem for the business owners (professionals are pragmatic, not cynic).

If your vision does not align with management and you happens to be right, it is a lot more sad for the company than for you personally. It is not your baby - wish them good luck, do your side of the deal as well as you can and don't suffer over it. You have your startup, your own baby to look after.

jhh 14 hours ago 0 replies      
I don't think that's specific to programming. It's what we all experience when we procrastinate.

Set yourself small very clear goals which you write down and where you commit yourself to finishing them in a given amount of time.

However, what your mind is telling you with the feelings you experience in my opinion is something along the lines of "Don't do this, it's not great".

So when you experience this very often, you need to change something in your life, or else you'll fall into depression because you have overcome your inner hesistation one time too often.

Don't take this as a scientifically accurate account, just my personal experience.

zawaideh 9 hours ago 0 replies      
Every job has some aspect of it that you will resent, and we've written about it on our blog (http://blog.sandglaz.com/how-to-do-tasks-you-simply-resent-d...).

I've been there before, and had some periods of time at a previous position where it felt like every minute of the job was a struggle. Getting things started was the most difficult for me, but once they were started, I could get them done.

If this job is just to pay the bills, and is not critical for your career, then:* Work on autopilot. Do what is required of you, and use some of your time on the job to learn things that would advance your career. For example, for each 4 hours worked, allow yourself an hour of learning something new to advance your career.* Find outside activities that you look forward to each day. Don't let the job define who you are. If you do, it could crush you.* Since they value you, ask to work reduced hours if possible. The less time you need to commit to the job, the less likely you are to burn out.

However, I can't help but recommend that you stay on the look-out for a job that brings you satisfaction and challenges you to do your best everyday.

peter-row 5 hours ago 0 replies      
Grant me the serenity to accept the things I cannot change, courage to change the things I can, and wisdom to know the difference, right?

Your problem is not really knowing if you can change things. Or whether it's worthwhile to change things. Ultimately, you can't really know whether it's better to try to change things (communicating better, focusing more on design vs writing code faster, getting a new job), so you have to accept that.

So ... whatever you choose to do, you can't really beat yourself up over making a bad choice. It's a hard decision. Whether you stick with the job and try to change people's minds, do things the way you currently are (but without stressing so much), or find a new job is a difficult decision, but no choice really stands out as a clear winner (from the little you've said), so just pick one and go with it.

If you want a new job, go hit up linked-in.

If you want to do things the way you currently are, just accept that programmers "waste time" - there's a reason why competent programmers often only write 10 lines of code a day - it's not easy work.

You can try to communicate better, but really, some people just don't listen. Or maybe the managers don't have a choice - they either have managers or customers.

Finally, work harder on documenting / presenting your progress. It never hurts to write stuff up, and explain the decisions you're making or the technical reasons why progress is slow.

toxiczone 6 hours ago 0 replies      
I don't have any tips for you. I am stuck in the exact same situation. I'm actually thankful that you shared your story and several of the comments posted here. It made me feel less lonely with my situation.

The quitting part, moving on to a new job is not an option for me as I am convinced that it is the same exact situation in most businesses around my area.

I started working on some personal projects which helps a lot, but does not solve my problem.

I find myself pushing to the last minute before the task at hand is due. The extra rush of adrenaline from the looming deadline gives me the kick I need to overcome the meaningless work I am about to do...

Good luck.

mmilano 8 hours ago 0 replies      
You're there by choice because your BF needs your help, yet you write about how you're surprised they won't fire you. That probably makes less sense than any feature request they have sent you.

It's a good question though.

After analyzing requests I have issues with, I will setup a meeting to discuss what I think are the issues, and propose a better solution.

If they push it off as "This is what the customer (or some other decision maker) wanted", I ask if we know if they have considered the issues and if we can propose alternatives.

If they still want to move forward, I ask or work with them to discover more detail about how it will be developed, and make sure they fully understand and explicitly acknowledge each piece I think is insane, irresponsible, or otherwise.

It usually doesn't get to that with good managers or clients. If it does, and it happens regularly, it's time to fire them and move on.

stopachka 12 hours ago 0 replies      
The biggest thing you can do is to align yourself as working together with your managers. You are not a code monkey.

What does this mean?

Well, if they assign you a vague task, you get clearer about it, you ask them why they want to do it, what the objective is. A lot of the time, you could be wrong, and with their objective it makes sense. A lot of the time you'll be right. The best way to show it is to mock it up, and explain your thinking on why it's wrong.

The biggest killer is when you feel like a code monkey, it's usually not the work.

Sir_Cmpwn 14 hours ago 0 replies      
The question I thought this title was asking, and one I'd like to hear answered, is: "What do you do when you're asked to do work that you feel is unethical, as a developer?" For example, I was recently asked to build a system wherein users would be refunded actual money into "credits", and allow the administration to modify the value (1 credit != $1) arbituarily.
thisone 13 hours ago 0 replies      
Have I been in these situations? All the time. I care about the software we produce, so I have strong opinions about the development of it.

How do I handle it? I say my piece, I listen to the response from my boss. If he disagrees with my analysis, then I accept it, sit down and do the work to the best of my ability.

Nursie 3 hours ago 0 replies      
Express your concerns, do the work as well as you can, find another role.


MartinCron 13 hours ago 0 replies      
A very short mantra that has helped me: "Own what you own".

That is, if I see a project as someone else's, and my job is to help them do their best, I am happier than if I see a project as "mine" and other people are just screwing it up.

Like many important life lessons, I learned this one a day too late.

motters 11 hours ago 0 replies      
If I was in that situation I'd try to get a different job. I know how hard it is to do that in the current economy though, so failing that I'd just do the minimum needed and be uncompromising about working only the assigned hours so as to maximize my utility outside of that particular employment role.
veganarchocap 13 hours ago 2 replies      
Currently fighting that same problem, I'm more of a programmer, but I'm being placed on really, really fiddly UI 'features'.

I've made about 10 cups of tea, gone to the toilet about 6 times, read every tweet tweeted in the past 24 hours. Started three arguments, considered quitting and storming out... it's horrible and I'm glad you posted this because I've been going through exactly the same thing.

sidcool 12 hours ago 1 reply      
I might be playing a devil's advocate here, but isn't our job as an employee to follow the direction and vision of the management? I am not asking you to sell your soul. It's just that sometimes in a career one might need to do work that one considers below his/her capability. My manager sometimes makes me fill up excel spreadsheets of who is working on what and for how many hours. It sucks, I hate it. But I have to do it.

I am not mocking your situation. If it's really bad for you, follow jblow's advice. But if it's a once in a while demotivation, swallow the pain and go on. You will reach greater heights and from there these menial times won't matter.

Just my two cents.

bdcravens 15 hours ago 1 reply      
Find something about the task that intrigues you, and build your motivation around that. A new gem, or new language feature, etc.

I've also found focusing on tests helps. Write as many tests as possible - focusing on getting those to pass. In theory, by the time you're done, the feature will be to.

cheetos 11 hours ago 0 replies      
I was in the same position as you five years ago. I decided to leave and work on my own product. I worked 80-hour weeks for months and years, sacrificed my health and relationships, but the motivation of working on my own thing kept me going. It was incredible. Just a few months ago, the product was acquired, and I joined their team. And now I'm dealing with the same nonsense I was dealing with at the original job.

As developers, this problem isn't going away any time soon. Our options are basically to create our own thing and be our own boss so there is no management to frustrate us, or just give in, write the code, take the check, and enjoy our lives outside of work. It's that simple, but it's also quite liberating when you allow yourself to accept it.

JoeAltmaier 13 hours ago 0 replies      
Argue more compellingly. Your managers don't 'get to' make the decisions, they are responsible for making decisions, using the best information available. As their best programmer, you are the source of that information.

When I am asked to do what is not rational, I refuse and give argument. But to play this card you have to be willing to pick up your coat and leave, not as a threat but as a last resort.

You say you're stuck there, but the reasons are not yours, they are someone else's. Get over that and your options open up.

lberlin 10 hours ago 0 replies      
I can't comment on the situation of writing code for useless features for bad managers. That is a separate mental hurdle.

But I think all of us sometimes struggle with sitting down and getting things done. When we have a bad day, it's because we struggled making decisions and didn't end up accomplishing very much in our own eyes. We're our own harshest critics.

One thing that I've realized (actually just in the last few days) is that you simply feel 10 times better at the end of the day if you write a lot of code, knock of tasks on the to-do list, and generally "get things done".

Knowing that diving in and doing hard things will make you feel good makes a huge difference for me. It's like "Ok, this might suck a little getting started, but it's what will actually make me feel good and happy." It's really easy to sit and think, or read the internet, but it's not a good feeling at the end of the day.

As far as wasting time, whenever I'm struggling coming up with an approach or solution to a problem, I start writing it down. It usually doesn't get too far just in my head. But if I map it out, write it out, I get back to working on it much faster. An inefficient solution that works gets you much closer to the final product than struggling to find that "perfect" solution right off the bat. Make it work, then optimize.

Havoc 11 hours ago 0 replies      
>>Have you been in such situations?

Similar - not coding though.

>>How do you get in the zone and get it done

I treat it as an optimization problem. Specifically because I have a problem with this too:

>>I waste considerable amount of time trying to do things in the most readable, maintainable and simple way possible

So I consciously aim to force that compromise between quality & time more towards the time side. That goes against my fundamental nature, but I've come to the conclusion that I must learn this...and as a result it feels more like a learning & personal development challenge rather than me doing something I don't want.

jheriko 14 hours ago 0 replies      
you have to make a choice imo. you can either suck it up and get on with it or flat refuse to do it. if you feel strongly enough then refuse to do work and quit the job... fulfil your contract to the minimum possible whilst giving them every legal reason possible to want to pay you to go away.

however i feel inclined to reserve that for serious problems, like weak leadership, oppressive or immoral behaviour etc. rather than poor features or undesirable work...

doing things you don't want to do is part of work. letting your leaders make their mistakes and learn from it is part of it too. i'm strongly inclined to say you just need to grow up a bit and get on with it... and be grateful that this is a 'problem' for you because its nothing compared to what most people consider to a problem in the workplace.

tomohawk 14 hours ago 1 reply      
You can't care about the problem more than the customer, or you'll go crazy.

That is not to say you shouldn't be proud of the workmanship of what you build (not quite the same thing as being proud of the product).

Unless you have a position where you have design authority, stop worrying about the why, and focus on the workmanship. Impress those that do have this authority with how well you do with what you're given.

If you believe that you have insights into making a better end product, then learn to communicate those insights at the appropriate time (before they've made up their mind). Try to get ahead of the curve and propose your ideas.

tks2103 9 hours ago 0 replies      



Listen to music.

I never found the ability to rationalize a task I dislike. Instead, I find joy elsewhere and try to preserve that feeling as I tackle the task.

marvin 14 hours ago 0 replies      
My suggestion: Major lifestyle change before you burn out and involuntarily go out of business for six months. Take control of this while you still can.
TheGunner 14 hours ago 0 replies      
I'm glad I'm not the only one that gets this sometimes.

I can completely identify with some of the points made, my particular frustration is working with appalling specifications that are 9 times out of 10 incorrect/incomplete quiet often leading to features being written multiple times. It's demoralizing. I have no particular solution, some will say just knuckle down but it's easier said than done, there are some tasks that just can't be made interesting. Unlike the OP I can change job and am, next week.

untog 13 hours ago 0 replies      
You should change jobs. I know you are trying to support your BF's startup (do you have equity in it?) but if he really cares about you he'll understand that you are on the brink of utterly burning out and need a change.
AnthonBerg 10 hours ago 0 replies      
Coffee and smoking make this much worse for me. (In fact when I don't smoke and drink coffee I don't have this problem - whereas when I do, I do.) Leaves me to conclude that it's based in anxiety.
ebbv 14 hours ago 1 reply      
While I can 100% relate to your scenario, a big part of being a professional at any job (not just development) is being able to set aside your personal feelings and emotions and get your job done.

It's good that you are getting your job done, but it seems that you are still having issues setting aside your personal feelings and emotions. This is pretty normal for inexperienced developers. It's something you should focus on working on.

Here's how I developed that skill:

1) Remind myself that this is not my company or my project. It's someone else's. There's no reason for me to feel so personally invested in the project as a whole. If I've voiced my concerns and thoughts and been overruled, then my job is to get what is asked of me done to the best of my ability.

2) Have side projects that ARE personal and that I CAN be emotionally invested in. When you have a side project where you do call the shots and it's done 100% the way you want, you will find it is easier to not be so emotional over your day job.

3) Lastly, I have found that as I get more experienced and better at explaining myself, situations where managers overrule me and tell me to do something that is against my own recommendation become more and more rare (they'll still happen sometimes as long as someone above you can make unilateral decisions, so never expect it to fully go away.)

It's good that you've recognized your situation needs to change. Best of luck.

swframe 14 hours ago 0 replies      
1) Look at the problem a different way and try to find a way to make it more interesting, attractive and (most importantly) impressive. I had to find and fix a tedious problem so I wrote a visualization, defect detection and automatic correction tool. If you have the freedom, try solving it with a new language or technology that you've always wanted to learn.

2) Challenge yourself to finish the project as quickly as possible. If a realistic estimate is that the work will take 1 week then try to finish it in 1-2 days. If it is awful work, try to get it over as quickly as possible. It helps if you can find an existing solution that you can use as a starting point.

3) If you're paid hourly, you might consider outsourcing the problem to someone off of elance. You should reframe the problem so that it doesn't require you to share any info (source code etc) from your employer with the person you outsource to. Ideally, ask the person to create an open source project on github.

JSeymourATL 12 hours ago 0 replies      
You've got a huge opportunity here to practice the art of Managing Up and Managing Oneself -- impacting your quality of life.

- Eliminate ambiguous requests. Can you probe for your managers stated/unstated objections & needs?

- What's the expected outcome? Are your recommendations easily understood and compelling? Is your business case sound?

- If the managers are happy with schlock work, can you ever be OK with that?

Ultimately, the power is yours.

aniro 9 hours ago 0 replies      
I just read this stern but lovely dirge in a novel last night..

"Do you wrestle with dreams?Do you contend with shadows?Do you move in a kind of sleep?Time has slipped away.Your life is stolen.You tarried with trifles,victim of your folly."

Life is short. It is time to see through the trap you have woven around yourself and move along. Just do it constructively so that in the end, EVERYONES interests will be better served.

cliveowen 14 hours ago 0 replies      
Frankly, it's just called programming. Programming is that pesky, resilient three-headed monster between your idea and the finished product, you have to give in and tame it.
m_coder 14 hours ago 0 replies      
It seems to me that this kind of situation is what some types of programmers try to escape by creating "amazing" code. This is the kind of code that you come back to a little while later and wonder what you were thinking when you wrote it.
jeffrwells 10 hours ago 0 replies      
The advice of burnout, changing jobs, etc is well covered already.

I have been doing sole crushing work for years in school. When you don't have a choice, the most useful thing for me to get started is the pomodoro method. Spend just 25 minutes of agonizing work and plan what you want to do for the 5 minute break. Usually after 1 or 2 cycles I actually get focused and motivated enough to make some progress.

lectrick 13 hours ago 0 replies      
Learn to write GOOD test suites. Once you realize that they are preserving your sanity, they will actually become fun to write.
gmarkov 14 hours ago 0 replies      
Consider the following - maybe your managers realize how vague task is, they also realize that you put a lot of pressure on yourself to make it, as I understand without strong support. I have been many times in same situation, usually when this happened first: I read "The humble programmer" :-),which reminds me that there is always something that I don't know, second: look again on the task and try to find its challenges, things that after completing them will make me a better programmer.
fenesiistvan 13 hours ago 0 replies      
Just search the internet for "get the shit work done" to find the answer for your problem. Really. You can find also some good practices.

I believe that most of our jobs can be divided to two parts:

-the fun part (interesting/fun/profitable work)

-the shit part (boring tasks/emails)

So, just get the shit work done when it needs to.

KhalPanda 14 hours ago 0 replies      
> What do you do when your entire being opposes the task at hand?

...anything other than the task at hand, obviously. :-)

bowlofpetunias 13 hours ago 0 replies      
For one thing, stop feeling guilty.

Whatever the reason you are feeling depressed with your current situation (already lots of good suggestions in this thread), feeling guilty about wasting time or cheating your managers is basically a form of inflicting self-harm on top of everything else.

You're getting paid for whatever you do, and apparently the people that pay you are happy with the results even if you aren't, so just put that aside and focus on what makes you happy.

rabino 14 hours ago 1 reply      
Open HN.

No, seriously. I go work somewhere where people can see my monitor. Helps me keep out of Facebook, etc.

pechay 14 hours ago 0 replies      
Don't let yourself get paralysed by indecision.
pasbesoin 11 hours ago 0 replies      
I spent a lot of time forcing myself to conform to others' wishes and will. Or to "work around" the problems, e.g. by staying late -- both to get some quiet time at work in which to concentrate, and to avoid some nasty neighbor issues at home.

Ultimately, I ended up at another definition of that word: "Spent".

I'm just saying...

ChristianMarks 8 hours ago 0 replies      
OP, do not listen to the moralizers who tell you that you need to exercise discipline and will power. Let them deplete their limited reserves of will power and see how far it gets them: you can change your environment so that you thrive in it. And that beats relying on will power and discipline by orders of magnitude. Quit early and often.
iondream 13 hours ago 0 replies      
sounds like you might need therapy. I've had a similar problem and speaking to a therapist helped.
moron4hire 14 hours ago 1 reply      
Actually, you could probably quit and it wouldn't be as big of a deal as you expect. Most people over-estimate the risk of quitting. And most people are a lot more understanding than we give them credit for.

Every time I've reached that point that you have described, I've quit. It was the best thing for me every time, too. There is no point wasting your time doing something you don't want to do, especially if it's for someone you care about. You'll just do a shitty job and you don't want to dump shitty jobs on people you care about.

Is it just that the work is boring, or are you being asked to do unethical things? I mean, either way, I would quit, but if it's anything unethical I would urge you to run as fast as possible.

However, if it's just "boring" work, perhaps recasting it in a different light might help. Look at it as a game of seeing how many you can finish in a single week. Stop worrying about doing the "best" job on it. If the project is so boring to you, then you probably shouldn't care so much about the quality of it. Just dump out some garbage, get the checkboxes filled, see how much you can get away with. Make it a learning experience, a chance to test your boundaries.

aaronem 14 hours ago 0 replies      
You have no power to choose the features you're assigned to implement. The most, then, for which you may reasonably be held responsible, even by yourself, is that you implement a bad idea in a good way. From the sound of it, you've got a lot of practice at that, and you've made it a habit. That being so, you have nothing for which to reproach yourself. Cultivate detachment, and relieve yourself of the need to try to take on more responsibility than your authority can support. This will free you to concentrate on what you can control, i.e., the quality of your implementation.

And, if you can't change jobs, then consider coming up with a side project. It doesn't have to be commercial, or even of particularly general application; even if you're just scratching an itch of your own, it'll give you scope to exercise the agency whose absence in your day job is giving you fits.

peterwwillis 13 hours ago 0 replies      
So there's this feature, and you don't like it. You don't want to write it. So your brain starts backing away from it like it's a burning ship. You begin to give yourself excuses. You subconsciously imagine it will take a long time or that it will be tedious. You are basically subconsciously convincing yourself that you will hate it, for any reason. And the less you want to do it, the harder it will be to make yourself do it.

But it's in your head. Using simple tricks you can change how your mind interprets the thing, and put yourself ina more receptive state to be able to accomplish the task without it seeming like a battle of wills.

First, put yourself in a good mood. Listen to your favorite music, eat or drink something pleasant, think about the fun things you'll be doing soon. But whatever you do, don't villify the work or think "I can't wait for this to be over!"; that's just more avoidance.

Once you're in a better mood, walk through the work in your head so you understand everything you need to do, and estimate the time it will take, but shorter. Try to find something positive about it to work towards, or something good or interesting you want to see come out of it. It could be something as simple as timing how long it takes for you to write five methods. To prevent further avoidance behavior, remove your watch and hide your clock. If you can, move to a quiet place where you can focus with the least distractions possible.

At the end of the day, if you really don't enjoy your job, you probably need a different one. But it's a mistake to confuse a bad job with an unwillingness to do work you don't agree with. Consider yourself their savior, and do it in the best way possible so that it minimizes their crappy decisions and emphasizes your skills. Imagine you are a woodworker; maybe you didn't want to build a cabinet today, but you're going to build the best god damn cabinet those jerks have ever seen.

(Also: consider if you will be with this BF in five years and whether wasting this part of your life will have been worth it. Kind of a crappy thing to imagine, but you can't spend your life doing things you don't like just because it makes someone else happy)

JohnOfEgypt 14 hours ago 0 replies      
Been there before, luckily just few times.- Put yourself in a good mood, music helps a lot, energizing beats, try Panjabi MC!- Slice the feature into small deliverable, hint: use index cards and a sharpie, yes, it's magic.- Finish one story (index card) at a time and have a tiny celebration (coffee, cookie, walk ...) every time you do that. DON'T skip the fun part.

Always think of yourself as an explorer collecting and connecting clues on a mysterious adventure!

Keep in mind, business drives programming, not the opposite. The codebase is only worthy as long as the product is selling (with the help of your managers).

itistoday2 12 hours ago 0 replies      
Get someone else to do it.
logfromblammo 10 hours ago 1 reply      
Just check out. Hang an "out to lunch" sign on your brain.

There is no solution within your reach for management that is ignorant with respect to your job. Stop putting forth extra effort that will ultimately be wasted. Clearly, you have discovered serendipitously that no one can tell the difference between you doing your job well and you doing your job poorly. So stop trying. Just relax and do the first thing that could possibly work. Really build up some technical debt. Management probably does not even know what that is.

That way, you can use the ever-increasing bogosity of the code base as an argument for being resource constrained. Lobby for junior employees that report directly to you. The end goal is to set yourself up for a job hop into a better position at a better company.

The one you are working for now can be definitively marked as a dead end. So milk them for cash and emotionally disengage. Get your spiritual fulfillment by investing your creative talent elsewhere. Meanwhile, coast until you can bail out safely.

That's about what I'm doing at my crappy, soul-crushing job.

skimmas 14 hours ago 0 replies      
you quit.
Ask HN: Why is Stripe's API better than Braintree's API?
3 points by ben-gy  1 hour ago   2 comments top 2
workhere-io 1 hour ago 0 replies      
Braintree's checkout process is every bit as easy to implement as Stripe's. However, signing up for Braintree and getting approved takes longer (at least in the EU - I don't know what the situation is in the US). On the plus side, Braintree works in several countries that Stripe doesn't yet work in.
jeffstoneblake 45 minutes ago 0 replies      
The 2.9% + 0.30 model seems to be pretty drilled into everyone's head... it's worth noting that if you get a real merchant account from a company like Chase Paymentech or First Data... you'll get pricing as low as like 0.05% for debit cards (w/ interchange plus). All in all, it would average to around 2% or less per card you process. If you do any kind of volume - it's worth it.
Ask HN: Owe over $100k US backtaxes. Not sure what to do.
58 points by bad_decisions  14 hours ago   44 comments top 19
philiphodgen 12 hours ago 1 reply      
Follow up comment:

I have responded to two people from this thread and I thought I should make it publicly available to help others who might be out there.

At some point you owe money to the IRS. You've filed the tax returns, you've wrestled with the IRS about waiving penalties, and there is a number. You're looking at it, and it's big.

This is what tax lawyers call "collections work." You owe money, and the IRS is trying to collect. As I noted in my previous comment, the Internal Revenue Manual is the operating procedure manual for Revenue Agents in handling collection of taxes owed. Plus of course there are shards of wisdom here and there that are important to know. Some are published by the IRS (they have an assortment of published documents, like things called 'Revenue Procedures') but some of this wisdom is informal, learned through experience with the system.

The work is time and paper intensive. Going to a tax lawyer is probably not cost-effective, because the hourly rates are too high, and you don't have money. So you need help. Where do you go?

Well, call tax lawyers, accountants, and (most importantly) Enrolled Agents. Enrolled Agents are regular people who pass an exam administered by the IRS that enables them to represent taxpayers in tax controversies.

The particular type of human I would look for is an ex-IRS employee who has left government work and set up shop as an Enrolled Agent. You now have the best of both worlds: someone who knows the inside baseball game, and is out here in the real world, working for you. Also, the costs are likely to be more reasonable that an attorney or CPA.

Look particularly for an Enrolled Agent who specializes in collections work. Buzzwords include "offer in compromise", "Lien", etc.

In the case of the two people who contacted me directly, I pointed them to John Knight in Southern California. His website is www.knight-ea.com (don't judge him by his website) [EDIT: thanks 'dewey for pointing out that it is really www.johnknight-ea.com] and he fits the criteria I mentioned. He gets frequent referrals from the top tax lawyers here in Los Angeles. (I know, because I talk to my colleagues.) I send him 100% of my collections problems.

I am not competent to give advice on exactly what to do in this area -- if you owe a ton and need to figure out what to do. I would recommend that you stay away from any tax law firm that advertises heavily on the traditional media. There are no miracles, but the "One Day at a Time" mantra will carry you through. You will, eventually, be (tax) debt free.

Again, anyone else out there -- if you're in this boat shoot me an email. But now you know what you'll get when you email me. :-)


philiphodgen 13 hours ago 4 replies      
Email me. Contact info in profile. The IRS cannot waive interest. That's the law. They can waive penalties but not just because. There has to be a reason. The IRS has procedures to follow. It's a bureaucracy. See if you can fit yourself in the rules. (The rule book is the Internal Revenue Manual and it is online).

I will put you in touch with someone who is good at this.

Appeal to authority: I am a tax lawyer.

patio11 11 hours ago 0 replies      
Stupid question, but bear with me: have you filed your taxes correctly now? There are CPAs and there are CPAs. If you don't have someone wise in the ways of net commerce, find someone who is to give you a second opinion. Mine consistently finds me a tens of thousands of dollars every year versus equally valid but less advantageous ways of filing a return with the same underlying economic facts. (e.g. I've used the Foreign Earned Income Exclusion since forever, but when I have a good year, taking the foreign tax credit and some provisions of the US/Japan tax treaty is more advantageous, even though that means I can't take the FEIE. This saved me low five figures one year.)

Knowing what I know about affiliates, it's at least possible on the outside that you might not have had the world's most businesslike records. Can you reconstruct better records, at least for the major expenses for the business? If so, you can have your CPA file amended returns. You'll still be looking at principal and interest for your taxes but it's in your interests to pay principal of $80k and interest versus principal of $100k and interest.

jacquesm 13 hours ago 2 replies      
$100K in back taxes means in income of a low multiple of that.

Where did the money go? Did you turn it into assets? If so then you may want to simply sell all or part of what you have.

If you did not turn your income into assets but it has all burned up see what you can do in terms of documenting your business related costs over that time. Conditional on the IRS agreeing with all this you could then make them a proposal on how much you'll pay month-to-month.

If you feel that that is not going to be a possibility you might end up having to declare bankruptcy. That's a real pain in the ass, but if you have no assets and no income that's probably where you're headed. If you have assets or income then likely you can make a deal. If you have assets that are somehow worth something to a bank you could possibly use these as collateral for a loan.

Best of luck!

trustfundbaby 11 hours ago 0 replies      
So very sorry my man, I had the same thing happen to me, so I COMPLETELY understand what you are going through.

I had one really good year as a freelancer and wound up spending the money I'd put aside for taxes because a client who had been paying me a retainer suddenly cut me loose right in November (the absolute worst time to try to pick up work as a freelancer). I was burned out and depressed about losing the gig so I didn't work for almost 8 months and wound up burning through the $30k I had set aside for taxes. I missed filing my taxes or an extension and the penalties just mounted until eventually my bill came out to about $40k.

After "negotiating" with the IRS (complete bullshit, they tell you how its going to be and you just have to deal) They decided that I could pay $2k a month on a $80k salary (how insane is that?). I lucked out and got a job that paid me almost double about 3 months later, if not for that I'd be toast.

Its easily the most stressful thing that has ever happened to me. Tax Lawyers were rude and dismissive ("Maybe get a cheaper car?" said one) once they realized I wasn't Mr Moneybags. And nobody can or will loan you that kind of money.

The only thing I can offer up apart from the Offer in compromise is that once you get the bill under $25k. You can negotiate directly with the people you talk to on the phone, once your bill is over that, everything they say/offer you has to go to some faceless manager somewhere, and it can be rejected and ridiculous alternative unilaterally offered back to you.

drzaiusapelord 12 hours ago 1 reply      
>but basically the IRS wants all my after tax earnings for 5 years.

Typically the IRS can set you up with a payment plan that's a portion of your income. Its time to find a tax lawyer, not a CPA about this. Settlement/compromise, installment plan over a long term, and even bankruptcy are options.

pdevr 12 hours ago 0 replies      
Did you commit any allegedly fraudulent activity to get that money? Not trying to be snarky or accusative, but happened to see a similar case[1] of an affiliate marketer who is also an HN member yesterday and want to make sure you get the right lawyer/legal service.

[1] http://nypost.com/2014/05/22/wolf-of-wall-street-wannabe-all...

sokoloff 12 hours ago 0 replies      
My regular tax preparer is an Enrolled Agent, and I can heartily recommend him. He helped me clean up some old tax messes that I'd made; he's very smart, very knowledgeable, and very much not cookie-cutter.

Charles Markham: http://www.markhamandcompany.com/

His website is terrible and he screens his phone calls ruthlessly. Don't let either of those things put you off; he's worth it. Feel free to use my name or not; it won't get you (nor me) anything. Maybe it will get him to pick up the phone the first time...

My email is in my profile, but most of what I'm going to tell you is above: call Charles. :)

Good luck!

PS: Yes, you probably are a little screwed for the coming few years until you get this cleared up. It is a very good feeling once you emerge from the other side, having caught up on filing, and having cleared up the IRS debts. This is money that you owe; you lived beyond your actual means for a while. It's going to suck a while, but assuming you have your health and earning power, you'll get out of it and it's bright on the other side.

BryanBigs 13 hours ago 0 replies      
I'd get a tax attorney if at the least for the free one-hour consult most offer - preferably one that doesn't advertise on late night TV. I am not an attorney, just a guy on the internet so take my advice for what it's worth.

I think the last step for you is the Offer In Compromise - in simple form you'll show them how much your net worth is, and give it to them. In return they'll retire your tax debt. Obviously, it's going to depend on how much you are worth/vs owe, and if they think you operated in good faith or not.You need to not be in bankruptcy, and current on all filings to offer it. They also will come down HARD on you if you miss any filings/payments for 5 years after.

pseingatl 12 hours ago 0 replies      
You file an Offer in Compromise. There is a specific form to do this; it is best done with the assistance of a tax accountant or attorney. Even if you leave the United States, the tax bill will keep growing unless you address it. Extradition is not an issue btw, this is a civil matter.
johnnymonster 12 hours ago 0 replies      
There are quite a few things you could do to mitigate the burden. Are you still working for yourself, or do you have a full time position? Its going to be a lot easier for you to mitigate this if you are running your own business. Let me know if you want to talk about some strategies to review with a tax accountant. Disclaimer, I am not a tax lawyer, however, I will give you some good points to review with your tax lawyer that they can help you setup.
molsongolden 12 hours ago 0 replies      
If you actually cannot afford to pay the amount and don't mind the IRS digging through your financial records you can file an Offer in Compromise. Might be worth looking into.
DanielBMarkham 12 hours ago 2 replies      
Similar spot here.

Note: be sure you file your taxes. You legally have to file, whether you can pay or not.

Once you file, after two years the debt can be part of a bankruptcy, but you have to keep filing.

As you know, this is a really sucky spot to be in. I believe the IRS has a program for people who have no chance of repaying -- not sure what the title is. It's worth looking into.

You did a brave thing coming online with this. I imagine a lot of folks would just call you names and be done with it. Speaking for other guys in the same situation, thank you.

Good luck!

jlongtine 11 hours ago 0 replies      
I have a friend who is in a similar situation, and he was able to negotiate the total down quite a lot with the IRS. I'd definitely recommend finding a tax attorney or CPA who can help you with that.
mxpxrocks10 12 hours ago 0 replies      
Good luck! I think the best thing is to work with a law firm to file an Offer in Compromise on your behalf. Google and check ratings. I believe there are some good, legit services.
PeekPoke 14 hours ago 1 reply      
File for bankruptcy?
anonhelper 13 hours ago 0 replies      
I have a great accountant. He has helped a lot of people and fought the IRS. I am sure he can help http://www.manta.com/c/mt17npq/patrick-frawley-associates

I promise you I am not the accountant himself :) and this is not a spam comment. He can help!

smrtinsert 12 hours ago 0 replies      
Call JG Wentworth.
Singletoned 12 hours ago 1 reply      
Seeing as no-one else has suggested them yet:

- Move to a country without an extradition treaty with the US.

- Change your identity. I don't imagine they'll put that much effort into hunting you down for just $100k.

- Create a Kickstarter campaign.

- Ebay the next 2 years of life. That way you are only in hock for 2 years, not 5.

- Marry someone and don't tell them about the debt until it's too late.

Tell HN: Potentially impressive meteor shower tonight. Get outside
12 points by cjbarber  7 hours ago   3 comments top
cjbarber 7 hours ago 2 replies      
Not sure how HN feels about a promotion like this, but I gain nothing from it so I'm going to try: I compiled a list of tips and locations to watch the shower from, and put it on github pages last night.

Also I was pretty happy with the domain name :)


(Your opinion) Is private access more valued than public access?
2 points by OmarEL  1 hour ago   discuss
Ask HN: What do you look for in an open source project?
5 points by Lockyy  6 hours ago   3 comments top 2
SEJeff 5 hours ago 0 replies      
I can say this as a co-maintainer of 2 large projects (salt and graphite).

1. Look for community ie: mailing list, irc, im, github, etc, etc

2. Look at commit frequency. How often do they commit. Is the project abandoned?

3. See if the developers are friendly. Feel free to email / im / chat with the developers. Ask what you can do to help.

Keep in mind contributing does not mean code code code. It can mean triaging bugs, updating documentation, herding other community members towards the right things, etc.

Hit me up with more questions if you want: jeffschroeder@computer.org

J_Darnley 5 hours ago 1 reply      
Contribute to one you already use. Why do you think you need to look for anything else?
Ask HN: I want to be good at everything
5 points by josephjrobison  9 hours ago   5 comments top 4
ggchappell 5 hours ago 0 replies      
I would not call that unrealistic. A few comments:

(1) Only on HN would anyone dream of referring to your list as "everything". You are actually targeting a very narrow, focused skill set: those required for a small(-ish) software or software-intensive business. Like it or not, you're proposing becoming a specialist (albeit with a somewhat broader specialty than a typical job description would call for).

(2) In the real world, "everything" includes many, many other things. To get good at all that stuff on your list, you'll need to leave other skills by the wayside. The comment by taprun mentions chess, running, and cooking. You won't be getting better at any of those.

(3) The I-do-everything approach sets a hard limit on the size of a business. An important reason for hiring & delegating is so that a business can grow.

taprun 6 hours ago 0 replies      
In economics, I learned about something called a "trade-off". Basically, if you spend time learning something, you are spending that time not learning something else.

I remember meeting someone who was fantastic at chess. He destroyed me. Repeatedly. My mental model of him was essentially "me but good at chess". It didn't occur to me until much later that he didn't know how to program a computer, couldn't run a mile without stopping and didn't know how to cook Chinese food.

I think if you stop seeing people as "you but can do X", these feelings will go away. Alternatively, read up on the concept of "comparative advantage" and realize there is a mathematically proven reason not to try to be an expert at everything.

Raphmedia 9 hours ago 1 reply      
Of course, you can learn most of those things. However, it is my belief you will soon tire yourself. Getting to the top of everything is hard enough, staying there even harder.

I used to be up to date in a lot of domains. 3D modelling, app frameworks, web technologies, back end, front end. Those days, I find it's hard enough to focus on being up to date and relevant with front end web development while balancing an healthy life with friends and family.

You can do it, but remember that there is an upkeep to being relevant in a lot of domains. If you can deal with it, sure, go ahead!

However, what I would recommend you is a good team. I'm finding I connect easily with people that have complementary skill sets to mine, and it's a great experience.

ASquare 8 hours ago 0 replies      
I don't think its unrealistic - the bar is just very high for what you want to do.Perhaps it may make sense to talk to people who would be looking for such an integrated skill set and find out which ones matter more than others and to what degree/level.

That will give you an automatic prioritization of how to go about getting these skills without becoming overwhelmed.

Why does HipChat client 2.2.1080 flash my webcam on startup?
3 points by dm03514  8 hours ago   1 comment top
nattaylor 4 hours ago 0 replies      
I've always figured it was a diagnostic... so that it can determine your eligibility for video during the rest of the session or something.
Ask HN: Can someone explain the console for me?
2 points by redxblood  6 hours ago   2 comments top 2
ggchappell 3 hours ago 0 replies      
Okay, I'll give this a shot.

"Unix" is an operating system that came out of Bell Labs long ago. It has had many imitators, any of which might be loosely called "Unix". The imitators include the various flavors of Linux. MacOS X has one buried inside it. Windows is something rather different.

The program that runs in a console window is called a "shell". So a "shell" is a kind of program. Modern shells include lots of fancy functionality, which varies from one shell to another. But their basic operation is the same: type the name of a program, and the program gets executed.

Most shells from the Unix tradition have names ending in "sh" (guess why). Bash is one of these. Other popular shells include zsh, ksh, and tcsh. Bash is by far the most popular these days. It is the default shell run by console.app in MacOS X. It is also the default shell in many Linux distributions.

Windows, as usual, is different.

So, typing the same commands into a shell in Linux vs. MacOS will likely get you similar results. Differences might be due to configuration that differs from one system to another, and programs that are installed on one system, but not on another. Typing these same commands on Windows will probably get you completely different results.

As for "language": we usually don't use this term when referring to directly typed console commands. Most modern shells do include a programming language whose syntax is based on the command-prompt syntax. So a shell doubles as an interpreter for its built-in language.

lightyrs 5 hours ago 0 replies      
I think you'll have more luck if you start researching "Terminal Emulators" instead of the more generic, "consoles".


Your confusions are well-founded. This is a very vast topic.

Ask HN: What's going on with Google's WHOIS record?
2 points by iLoch  6 hours ago   2 comments top 2
cjbprime 6 hours ago 0 replies      
That's just how whois works. The bottom of the list you pasted probably says something like:

"To single out one record, look it up with "xxx", where xxx is one of the of the records displayed above. If the records are the same, look them up with "=xxx" to receive a full display for each record."

mattmoss 6 hours ago 0 replies      
Only one of those appears to be google.com.
Ask HN: Tip of my tongue IaaS / Cloud for science?
4 points by channalp  9 hours ago   2 comments top
jcr 9 hours ago 1 reply      
Depending on what kind of "science" you might be thinking of Rescale.They have interesting tech, wide support of third-party tools, andthey're great people; they even gave me (a self declared non-potentialcustomer) a free trial.


Ask HN: How does Amazon make use of Mechanical Turk?
2 points by rememberlenny  9 hours ago   1 comment top
rgovind 7 hours ago 0 replies      
I don't know about Amazon, but I do know some people who use it to get mundane but necessary tasks done. For example, if you have a forum and you want to seed with questions...you can use mechanical turk to get people that.

Also, for a semantic search engine I was working on, we needed to add categories for various articles. We used Mechanical Turk for this.

Ask HN: How can foreigners get a job in the USA?
4 points by k-mcgrady  16 hours ago   6 comments top 2
notlisted 14 hours ago 0 replies      
The official government site that will answer some of your questions - http://www.uscis.gov/working-united-states/temporary-workers...

Submissions start April 1st each year. There's a maximum ("cap") and they typically "run out" for the year in several weeks/months. See this page for dates in the past (scroll down) - http://www.h1base.com/visa/work/h1bvisacaph1bquotasystem/ref...

Please note: education and expertise matter a lot. If you do not have a masters degree your chances are much smaller. Good luck.

jcr 15 hours ago 1 reply      
I've gotten to work with a lot of amazing silicon valley engineers who arehere on H1B visas. As as I understand, losing your job does not normallymean being sent back to your country since you can transfer the H1B visato your new employer.

The tough part is just getting the H1B visa since you must have a companyhere sponsor you to get it. This is why the monthly "Who's Hiring" submissionhere on HN requests that posters declare whether H1B's are welcome.

Ask HN: Can you build something better than Youtube?
6 points by anilshanbhag  20 hours ago   9 comments top 7
zindlerb 19 hours ago 1 reply      
The thing that will unseat youtube will probably not look like a competitor originally. I don't know what it will look like. Twitch seems like a possible canidate.
bluerail 4 hours ago 0 replies      
It would take lots of money, hardware and resources to build and maintain a site like Youtube (did I missed the pounding legal and privacy issues to be dealt with)., and the possibility of revenue is so lower to compensate for the money spent which is a model that investors don't like..

As youtube already captured the desktop video streaming and most of the mobiles, a possibility will arise only if a new platform awaits.. like VR, or IoT.., these things would give an early bird ticket for the competition arena..

And, i am slightly eyeing on the possibilities for a Video streaming services in IoT field., Say for example, streaming vids in your fridge, roof, doors or whatever..

AbhishekBiswal 14 hours ago 0 replies      
It is Possible. But if there is a startup working on it / a service already there, and is getting some traction, Google probably knows about it. Again, Google can make/introduce new features to keep the users coming back to it or it can simply acquire the service ( For example, Twitch ).
sjg007 8 hours ago 0 replies      
It will start as a mobile video social thing.
chintan39 20 hours ago 0 replies      
There is always a way to build something better then existing giants.Some of examples in past:AltaVista vs. GoogleMySpace vs. Facebook.

There will be somesite, someday that will takedown youtube.

eip 19 hours ago 0 replies      
It would help if you already Tier 1 network capacity. Several large and geographically distributed data centers.Access to black ops computer processing and storage technology. Billions of dollars. And about 8 years.
ShaneCurran 12 hours ago 1 reply      
Vimeo is trying to achieve just that.
Ask HN: What's your favorite pen/load/vulnerability testing service?
2 points by tomkin  12 hours ago   1 comment top
runjake 11 hours ago 0 replies      
@indie303 on Twitter. If he won't do it, he can point you to good outfits that will.

"Reputable" is a loaded term in the infosec world. There are a lot of "reputable" incompetents.

Massive network issues across Europe
95 points by abritishguy  4 days ago   22 comments top 12
Ihmahr 4 days ago 3 replies      
Transatlantic cable down. Are they busy installing a prism?
zokier 4 days ago 1 reply      
> It was a scheduled job that went a bit wrong, says Bo Djurberg, manager at Telia

from http://www.aftonbladet.se/nyheter/article18915221.ab via google translate)

Strom 4 days ago 0 replies      
I can pretty much only reach sites which are routed through the netherlands for me (like Cloudflare proxied HN, or Google). Everything else doesn't connect at all or times out after downloading 10% of the HTML. I'm connecting from Estonia.

The Digital Ocean status page [1] claims that "Preliminary investigation indicates that Telias Transatlantic cable are down." which would make sense, because my ISP is Telia and I can't connect to most of the internet.

Edit: Well, this outage lasted a bit over an hour. Now at 20:55 UTC I can access everything once again.

[1] http://www.digitaloceanstatus.com/

mcintyre1994 4 days ago 0 replies      
> "One of our upstreams (Telia) appears to have a trans-Atlantic cable cut. We're routing around in many EU locations now." @cloudflare


jaekwon 4 days ago 0 replies      
Hi guys, I'm very curious about the effects of this. What is the network like? Can you characterize it in terms of latency, dropped packets, bandwidth?

Say if you wanted to upload/download a megabyte of data to a datacenter in the US using TCP with retries, would it work eventually with high probability?

karnei 4 days ago 0 replies      
Its amazing how well traffic gets rerouted now days
cordite 3 days ago 0 replies      
It was really interesting how I could still communicate to some of the servers via connections that went through Level3.

Yet once I got back in the server (behind that indirection), the server couldn't even ping google, and its DNS was totally down.

Would've done a traceroute for fun if OVH's mirrors were reachable.

jpdus 4 days ago 0 replies      
Ah, thanks for the info.

Connections to our US broker failed at 10pm (dst) on different servers (based in Germany) and i had no idea why, I already wanted to blame our hosting provider.

justincormack 4 days ago 0 replies      
Clearly a test for who can withstand network partition...
rmoriz 4 days ago 0 replies      
Germany: Dropbox unreachable, Tumblr very slow
crucialfelix 4 days ago 1 reply      
mostly unreachable from berlin: rackspace.com, amazon.com

but I see the traceroutes failing after they make it to the US.

mjcohen 4 days ago 1 reply      
Russia starting a cyber-war?
Ask HN: Why has nobody else 'defected' from NSA/GCHQ since the Snowden incident?
14 points by Theodores  1 day ago   11 comments top 11
Phlarp 1 day ago 0 replies      
Consider the possibility that others have come forward and leaked documents, which have then gone on to be published (perhaps even by Greenwald et al) with sources listed as "NSA documents obtained by $publication". Everyone would assume they came from Snowden without much question giving excellent cover for other leakers who want these things to be known but aren't willing to give up drastically above average salaries in tropical locations to do so.
Uhhrrr 1 day ago 0 replies      
Greenwald et al haven't finished their run yet, and have done a good job of keeping the story in the news. A second leaker probably wouldn't change the trajectory of the story right now. They may want to stay and see if things change. If real reforms happen, there's plenty of fun stuff to work on at NSA. If some programs are continued despite those reforms, then it's time to blow the whistle.

And if only bogus reforms happen, then they would be in a good position to leak Feinstein's phone calls from last week.

ksherlock 1 day ago 0 replies      
Snowden wasn't the first NSA whistleblower. Wikipedia lists 4 other NSA employee whistleblowers. And every one of them was investigated by the FBI, subject to armed raids, or otherwise persecuted. Surely NSA employees know what they're dealing with better than we do (and I don't mean that in a good way).
mindstab 1 day ago 0 replies      
cus he still can't go home, or see his family, friends or anyone, and is in a precarious position with another super power and occasionally has to pawn along basically for his survival now. I doubt too many other people want to sacrifice their entire lives. He has shown us how it's down, and the price and I don't think anyone else wants to pay (and that's if they are lucky, there is still large risk it could go much worse
superflit 1 hour ago 0 replies      
Who says snowden has "defected"?

Maybe it was on purpose..

phaus 1 day ago 0 replies      
Its not the same thing at all. The people coming forward about a sex offender have absolutely nothing to fear; they weren't the ones that broke the law.

On the other hand, revealing classified information will send you to prison for decades. Depending on what you do for a living, it could even result in the death penalty. Best case scenario, you will spend the rest of your life living in a country with a government worse than your own, wondering when a member of the intelligence community is going to murder you.

The comparison really doesn't hold up.

Also, think of how badly this has damaged not only the U.S. government, but also the private sector. No company in its right mind, foreign or domestic, still wants their data to traverse networks from the United States. They might not be able to avoid it, but that's besides the point. By the time all is said and done, tens of billions, if not trillions of dollars in damages will have been done to the U.S. economy. The NSA's shenanigans have been the most detrimental thing to happen to the United States in at least a decade. Unfortunately, the government doesn't blame themselves, they blame Edward Snowden. And so you can be sure that billions of dollars and tens of thousands of man-hours are being dedicated to the task of closing any holes that allowed Snowden to leave the country with large amounts of classified information.

turbojerry 20 hours ago 0 replies      
"To Arendts mind, Eichmann willingly did his part to organize the Holocaust and an instrumental part it was out of neither anti-semitism nor pure malice, but out of a non-ideological, entirely more prosaic combination of careerism and obedience."


And the original book,"Eichmann in Jerusalem: A Report on the Banality of Evil" in PDF -


benologist 1 day ago 0 replies      
It's an interesting question. I think most people wouldn't have the combination of courage, access to sensitive info, and be able to uproot their life potentially forever.
us0r 1 day ago 0 replies      
I kind of hope they wait until we get proper "reform" which is treated like a piece of toilet paper at the agency and they continue business as usual.
staunch 1 day ago 0 replies      
Snowden himself might not have left the NSA if someone like himself had blown the whistle as effectively.
massappeal 23 hours ago 0 replies      
you should check out Frontline's The United States of Secretshttp://www.pbs.org/wgbh/pages/frontline/united-states-of-sec...
Ask HN: Which service do you use to sell downloads?
53 points by renaars  3 days ago   53 comments top 25
patio11 3 days ago 2 replies      
I may well be e-junkie's oldest surviving customer, although I eventually transitioned everything off their app into my app with the exception of Paypal IPN processing. They've got almost $500 of LTV from me, $5 a month at a time.

If I were making the choice again today, it would be Gumroad by a country mile. Regardless of whether you end up using them, look up Ryan Delk's presentations regarding the habits of successful sellers (multi-tier products; X 2.2X 5X pricing; email marketing). They'll make you much more successful than the typical person who just throws a $FOO onto the Internet.

joshdance 3 days ago 2 replies      
I've sold about a thousand dollars thru Gumroad. http://gumroad.com

I like the design. I like the simplicity. People can just use their CC like normal. They take a percentage of your sales, but so far found it worth it.

I wish it had order tracking (just a box I could tick when I shipped something would be nice) but that is irrelevant for downloads.

programminggeek 3 days ago 1 reply      
I would use gumroad or whatever is easiest/fastest to get it out there. Don't worry about fees and junk right away. Get your product available to sell and focus on selling it. Don't spend a lot of time on how you are going to process money and deliver the product. Focus on the sales. When you have $10,000 in sales and 1% margin starts being worth $100, you can spend a few hours maybe worrying about if gum road is the right choice. Even then, it's probably not worth worrying about.

Just sell things, enough things that it actually matters who you are using for processing. But, with 0 sales, you are doing 0 order processing so it doesn't matter.

jeremymcanally 3 days ago 1 reply      
http://getdpd.com is the best option I've found. The interface makes sense, the pricing is super fair, and they allow you to send unlimited updates for free to your users (most other services charge more or, even worse, per update!).
singer 3 days ago 1 reply      
My service (https://snappycheckout.com) offers a Stripe Checkout like experience and allows you to sell files from Dropbox. It costs 2% or $0.50 (whichever is less) per sale (plus the usual Stripe/PayPal fees).
bhouston 3 days ago 0 replies      
We wrote our own integration into Shopify.com that does RLM-based licensing (a standard in the visual effects software industry.)
luxpir 3 days ago 0 replies      
WooCommerce on Wordpress for an ebook/digital package. Free, barring Paypal fees (grmmble - I could use a different gateway, or even BTC, but in the real world PP is my best bet), and user-friendly enough. Has been very reliable over the years.
ivan_ah 3 days ago 1 reply      
https://gumroad.com/ : nice design + very simple to use
fookyong 3 days ago 0 replies      
I use e-junkie for growthhackinghandbook.com

Flat monthly fee. Their admin UI is clunky, their checkout pages are basic but functional, but they solve a number of problems* without asking for a percentage cut of sales.

I think for basic stuff they work just fine. I'm just selling one ebook and I just wasn't comfortable with having a cut of my sales taken AND my funds being withheld by a third party before some weekly or monthly remittance. With e-junkie the funds go straight to my PayPal account where I can use the money immediately (I constantly pay for things via PayPal).

*obfuscating download path, handling coupons, handling multiple downloads etc

acangiano 3 days ago 2 replies      
I no longer need them, but in the past I had positive experiences with FastSpring. eJunkie is also a popular option.
quaffapint 3 days ago 0 replies      
I plan on using wordpress and the free paid membership pro plugin (http://www.paidmembershipspro.com/) for my upcoming release.

Let's me sell a per year license with an optional reduced renewal fee at the end of the year, which most services don't seem to easily offer. Also then lets me ties into other things like support forum membership.

jevin 3 days ago 1 reply      
You can have a look at http://www.fastspring.com/ too. I use them to sell my plugins online. Their support is fantastic.
graeme 3 days ago 0 replies      
I use woocommerce on Wordpress. I have a large number of products, and their cart process works pretty well. Checkout is smooth. Plentiful extensions.
hngiszmo 3 days ago 0 replies      
A friend earned quite a bit with his music on CoinDL: https://www.coindl.com/page/author/139

It's bitcoin only though but I like the preview for music and the no-bullshit easy handling.

garrettdimon 3 days ago 0 replies      
Plasso (formerly Spacebox) I've been incredibly happy with both the service and the support.


greenwalls 3 days ago 0 replies      
I have had good luck with Cleverbridge http://www.cleverbridge.com.
infruset 3 days ago 1 reply      
Haven't used it, but I think this deserves a mention as it accepts bitcoin: http://coinlock.com/
bizifyme 3 days ago 0 replies      
Our service https://www.bizify.me offers a complete package. Credit card processing is included and also payment by mobile phone (SMS) for many countries. There is also a WordPress plugin and you can install our App on your phone to easily follow your sales. No setup fees, no monthly fees, no fixed transaction fees and the price for a digital product can be as low as 0.1 EUR.
nelstrom 3 days ago 0 replies      
I'm pretty impressed with SendOwl. I like the flat monthly fee and generous bandwidth allowance. So far, I've not done a great volume of sales, but my customers have already remarked on how quickly the 0.8GB video file downloaded. So the core functionality seems sound. I'm looking forward to using their affiliates feature to help market my future products.
bthomas 3 days ago 0 replies      
Do any of these services have a good workflow for pay what you want downloads?
cannam 3 days ago 1 reply      
SendOwl (http://www.sendowl.com), formerly known as Digital Delivery App. No particular complaints, but it's been a while since I've looked at the competition.
BrechtVds 3 days ago 0 replies      
For WordPress plugins and themes I enjoy https://easydigitaldownloads.comIt's not perfect, but has some nice plugins (licensing!).
maxx6 3 days ago 0 replies      
Sellfy (https://sellfy.com) works great for me. I especially like the feature to use PayPal and Stripe together.
samreh 3 days ago 0 replies      
If you like/use shopify, check out:https://skypilotapp.com
antidaily 3 days ago 1 reply      
Bonus if the service is flat monthly fee.
Ask HN: living and working in US
48 points by seminole  17 hours ago   90 comments top 34
davidw 16 hours ago 1 reply      
> She thinks we'll finally have some sunshine, lots of affordable fresh food, perhaps live in a house with garden, beautiful nature close enough to actually go camping for the weekends, and friendly and approachable people.

That sounds kind of like Italy. Maybe not as much sunshine as California here up north, but it's certainly better than the UK or Belgium from that point of view.

Of course, the economy is in the tank, but maybe you can work remotely or something.

Going to the US is not easy: you'll have to find a company willing to hire you.

That said, if it's what you want, don't let the naysayers get in your way - go on a vacation there, travel around some, meet people, see what day to day life is like, and then go for it! It's not perfect, but there's a lot of good stuff there - much more than some of the haters here give it credit for.

Some people work crazy hours, many people don't. As someone who is likely to have a good job, you'll have decent health care, even if the system is a bit screwy.

Edit: a few other places to check out might be:

* Colorado (Boulder, Denver, Ft. Collins). Snowy, but still quite a bit of sun. If I ever went back to the US, this is high on my list of places to check out.

* Austin, Texas. I don't know much about it, but it's supposed to be a nice place, and definitely sunny/hot.

* Bend or Ashland in Oregon. Not as sunny as California, and cold in the winters. Not as many jobs either, but nice smallish towns.

abcd_f 16 hours ago 4 replies      
My all time favourite place in North America is Europe.

I am a European. I lived in US for two years, I lived in Canada for 15. I also lived in Sweden and Japan. States are good because it's just one big Walmart - everything is ridiculously cheap, but what it gets in quantity it tends to lose in quality. Canada in this respect is somewhat better, but it has the same problem - it feels ... I don't know ... diluted? Too much stuff, too little substance. It is nice, it is comfortable and affordable, but - and I am dumbing it down considerably - you can't get a decent croissant, because nobody simply gives a shit about getting them right.

On the other hand, the grass is always greener on the other side. If you move, you will have at least a couple of years of excitement and novelty.

PS. And generally working too much and not enjoying life is in fact the biggest lifestyle issue in States and Canada. No better manifested by the fact that most of the restaurants are there for eating and not for socializing.

stefantalpalaru 16 hours ago 3 replies      
> we'll finally have some sunshine

You will and you'll also have the chance to discover the difference between excess and moderation.

> lots of affordable fresh food

The food is either affordable or good.

> live in a house with garden

More like a house with a mandatory lawn in a region hit by a very serious drought. You might also want to ask about the rules imposed by the homeowners association and whoever rents you the house.

> beautiful nature close enough to actually go camping for the weekends

Yes, if you like deserts and you want to live in SoCal. Note that "close" has a different meaning on that side of the pond.

> friendly and approachable people

Maybe at first. With time you realize that the friendliness is a form of politeness that hides fear, distrust and greed.

KhalPanda 16 hours ago 2 replies      
Just out of curiosity (as a UK resident), how would you plan on moving to the states from a legal standpoint? As far as I'm aware, if you don't have immediate family who are US-citizens, $500k-$1M to invest in a business, marry a US citizen or take employment on a H1-B (not easy), it's not possible?
gone35 16 hours ago 1 reply      
Sorry if this doesn't sound as much but... do your research. Ex ante it appears you and your wife are under a lot of misapprehensions and, if I may say, grass-is-greener media/cultural European clichs about the US --too many, perhaps, to disabuse in a single "Ask HN" thread.

Like others said below, a good idea would be to come live in the US for, say, a summer or so under a short-term tourist or student visa (eg maybe for a career-related summer course or unpaid internship) and see for yourself.

sologoub 16 hours ago 0 replies      
California is a double-edged sword. I've lived here for over 15 years and it's definitely the place I intend on staying for quite a while.

If you plan on being near either Bay Area or the greater Los Angeles area, you have to be ready for the housing prices. A good, safe area with good schools will cost you. A short commute on top of that will cost you double.

That said, if you do your research, you can find very solid public schools (school districts) and University is doable, unless you go private.

As far as neighbors, it's a mixed bag - there are plenty of great people and there also many fake, greedy, etc. Just like any big city. Culturally, Americans seem to be more predisposed to welcoming people than not.

Back to the finances, with the costs of housing, it's not likely that you will be able to be the sole breadwinner. I've been trying to solve this puzzle for a while, but on a single income things just don't pencil...

Now the upside - California lifestyle is something else. You have all 4 seasons at your disposal with only a drive or a short flight year round. This opens up a lot of possibilities for enjoying nature/sports. If you are more into just quiet enjoyment, the state offers magnificent areas like Big Sur, that are also surrounded by awesome hotels, camping grounds and wine country. California wine is great and very inexpensive.

You also have the beach (really cold water though) and great weather most days out of the year.

Downside of Los Angeles is traffic and lack of public transit. In SF, you trade public transit for huge cost of living increase.

Never having lived in Belgium, I can't compare. My only experience has been a very short (6 months) stint in the UK and Moscow. I would not come back to either voluntarily after California.

If you are not afraid of a little rain, I would strongly recommend you consider Seattle - reasonable weather (I like rain) and not too much cold, great nature and friendly people (by my standards of visiting and working with a few great folks), no state income tax (CA works out to an extra 10% for me), a lot lower cost of living with similar level of education offered by the local school system.

jacquesm 17 hours ago 2 replies      
What countries are you from originally?

Plan a holiday to the US, look things over and then make a budget (emigration is far from cheap), save and then decide to back out or bite the bullet. Don't do anything permanent until your visa is in the bag for you, your spouse and your child. Hollywood and anecdotes are not good inputs to a life determining decision like this, consider it a huge project and devote resources accordingly.

Why is Belgium disappointing you?

The US is definitely not paradise but it may give you chances that are hard to replicate elsewhere. At the same time, I know plenty of people that are successful in the EU. It usually boils down to the people, not the place.

runewell 12 hours ago 0 replies      
We would love to have you and your family. The USA is so large and diverse that practically any living scenario is possible. If you want to live near nature with sunshine, fresh affordable food, and a home with a garden then I would suggest checking out more rural parts of northern California. There are many employers that will allow you to work onsite part-time (one day a week, month, or quarter) and the rest of your time at home, assuming your output is acceptable and you are available during working hours. Special arrangements such as this are more difficult in the beginning but are very easy to setup if you have proven yourself to be a productive programmer.

I would suggest checking out areas such as Redding, CA. If you make over $100k a year you could get yourself setup with a nice place such as the link below.


More properties in that area:http://sacramento.craigslist.org/search/rea?query=acre&sale_...

Note: Life can be wonderful in the USA but our healthcare and education system need work. Healthcare is fantastic if you get good insurance, but that will cost you each month. Being a programmer, it is likely your employer will provide health insurance. Our Universities are some of the best in the world (ex. MIT, Harvard, Stanford, Yale, Carnegie Mellon, etc), but our elementary and high school education system is inefficient so you may want to consider one of the many private school options in your area. This too will be costly. Basically expect to pay 10-15% of your salary towards making up for our deficiencies in these areas. Work/life balance is entirely possible here although many European countries structure their national policies around promoting such ideas while the USA pretty much leaves it up to the individual to organize their life in the way they see fit. This is why we have so many people living on the extremes, from super-star entrepreneurs to homeless individuals and everyone else in-between.

yodsanklai 15 hours ago 0 replies      
Novelty and the feeling of doing something different are very good reasons to move.

Salaries will be higher in the US but without a doubt you will lose in term of vacations and free time. Everything you wife mention, you can have in Europe. Food wise, I think you're better off in Europe if you like fresh inexpensive food.

The nature on the west coast is incredible. The national parks there are among the most impressive places I've seen. However, with 2 weeks vacations, you may not have much time to visit them. You can't really go to the grand canyon for a weekend for instance. You'll have more time to go there on vacation while you work in Europe!

ashazar 15 hours ago 0 replies      
Just sharing my bookmarks that were previously discussed on HN.Hope you can find some useful info in them.Best of luck for your journey.

1. What's the best place in the U.S. to live and work cheaply?https://news.ycombinator.com/item?id=6702111

2. What's the best place in Europe to live and work cheaply?https://news.ycombinator.com/item?id=6703058

3. Where can I move cheaply to work by myself for a year?https://news.ycombinator.com/item?id=6700531

4. A "Hacker's" Guide to the Bay Areahttp://islandofatlas.net/2013/10/04/a-hackers-guide-to-the-b...https://news.ycombinator.com/item?id=6502430

RickS 16 hours ago 1 reply      
If there's one place you'll find a 40 hour work week, it's enterprise Java. Most of the glorified 80 hour work weeks occur in the startup realm. I'm generalizing significantly here, but enterprise is stereotypically a "clock in, check out" type of job at larger companies, and securing something that pays well without sucking up your whole life is very easily doable.

Are those 5 weeks of holiday paid? If so, that is not a common benefit in America.

Without citizenship, your healthcare coverage is likely to be either costly or limited.

Scholarships and grants exist, but a free ride through college is also rare.

If you were already a US citizen, this move would be possible (but even for the majority of Americans, what you ask for is off the table), but since you're not, I say move to Canada.

Specifically, Toronto. As metropolitan as any American city (with a sufficiently large job market), numerous strong immigrant communities, better healthcare, great food. Nice and clean, fairly safe - I'd have no qualms bringing up a kid there. The surrounding suburbs are very mellow.

awjr 15 hours ago 0 replies      
I'm going to add something from the experience of being the kid that was dragged around Germany and the USA from the age of 3 to the age of 12 moving every 2 years.

Positives:- I was put into the german school system learning german almost like a 'native' and I still have it. (Massive positive)- Luckily I had 2 brothers. We'd move somewhere new, clump up as a gang, then slowly get to know people and get our own set of friends.- I still find it easy to make friends.

Negatives:- Become good friends with somebody, move on. - Making new friends all the time.- I found my memories of Germany 3-10 better than the USA (10-12) but in Germany we were thrown on to our bikes and rode off into the countryside for the day (we lived in villages). In the USA we were driven everywhere although we did have a pool (Florida).- When we finally came back to the UK I found it slightly odd. Culturally I'd missed out on a lot.

Schools were much of a muchness. Of note we were in public school and then quickly moved to private school in the USA (this was 1980).

eshvk 12 hours ago 0 replies      
I moved to America six years ago. I have lived in California, Texas and now live in New York.

> My wife keeps saying we should move to US, perhaps California. She thinks we'll finally have some sunshine, lots of affordable fresh food, perhaps live in a house with garden, beautiful nature close enough to actually go camping for the weekends, and friendly and approachable people

Sure, if you lived in Nor Cal, somewhere close to Marin or in the East Bay, you could probably get that. It is kind of puzzling to me that you would go all the way to America for this though. Wouldn't you prefer to live in the EU closer to a community ?

> 40h workweek 5 weeks of holiday a year free/cheap health insurance free/cheap education up to university level for our daughter.

You are not going to get a 40 hour work week in America. It might be close to 60 hours. At least 50. Again, depends on the place. If you work for a big company like Google, things will be reasonably. Early stage startup. Miserable. Vacation is 2 weeks - 4 weeks. Health insurance has always been paid for me by my employer. Schools, I can't comment. I don't have offspring.

Someone mentioned other regions. Let me give you a quick run through considering that long term, America is my home but I don't know whether I want to live in a city.

Austin, Texas. Too small, too hot. Still too Texan.

New York. I love NYC. But it is not what your wife would want. It is a Megapolis.

Colorado. I fucking love Colorado. Boulder is amazing, it is a great college town with all those beautiful girls. Great opportunities for hiking. It has a great and upcoming tech scene. Honestly, if I were ever to buy a summer home or move elsewhere in the U.S., it would be Colorado.

kasey_junk 16 hours ago 0 replies      
Not to put too fine a point on it, but just saying California isn't really even enough to narrow things down. Remember that California is about the size of Spain, but in many ways with more geographic, population and economic diversity.

The cost of living, job opportunities, weather, and life style varies dramatically from San Diego, Los Angeles, Bakersfield, Sacremento, and San Francisco.

I'd recommend a trip to see. That said, California is the last place I'd move if I were a tech worker right now. You can get many of the same benefits (except possible access to VC money) in lots of other places. The Research Triangle NC and Austin TX for instance both offer much of what you are asking for at a much more affordable price.

foobarian 15 hours ago 0 replies      
I'm lucky to work for a Boston shop where work/life balance is good relative to my perception of the average American software company, specifically, close to 40 hour work weeks, "death marches" strongly discouraged by upper management because they get how bad they are for turnover, 3 weeks vacation at start, then one more week after every 3 years.

One thing about vacations in US is that no matter how much time one gets on paper, I found the company cultures to look down on taking time off. It's almost like people are ashamed to take their vacation time.

lazyjones 16 hours ago 0 replies      
I faced this question at the age of 29 (late 90's) when I got an interesting offer to work in Florida (I live in Austria).

In the end, I decided against it. At the (2-day) job interview, people who worked there pointed out that the biggest benefit over Europe was the perceived freedom, the feeling that noone would bother them about their private business (this is probably no longer the case / general feeling today). I found the poverty in urban areas most shocking (loitering people, obvious racial inequality).

In the end it boils down to whether having your "dream job" (for me it was game programming) is worth both getting ripped out of your surroundings and coping with lower standards in many areas in the US over Europe (well, depends on whether you live in a poor EU country), as well as other issues like the harsher environment (floods, earthquakes). 50-60 hours was a given in the 90's, perhaps it is no longer the case now that Google/FB set the bar higher for job quality. For me it was better to stay, although nowdays I sometimes ponder moving to Switzerland, Norway or perhaps Australia (for different reasons, none involving career perspectives).

TheSmoke 15 hours ago 0 replies      
Some random thoughts:

- The most important thing for me: EU states are social states and US is not.

- You are not going to get a free health insurance or cheap but quality education for your daughter like in Europe. (Not saying she won't get quality education, just saying it won't be cheap as we are used to in Europe.)

- US is not a developer's paradise but it's a paradise of possibilities and opportunities.

- http://www.zillow.com/homes/for_sale/CA/house,condo,mobile,l... In that link there is a list of houses with a garden that you can buy to give you the idea. For the places that you would think you could afford, there is a possibility of living without a job. (Find remote work and it all works out?) But I think they are better houses than houses in most of the Europe.

- You can think of Austin, Boston or Chicago instead of California cities.

- Wait, there's another possibility: You can move to Berlin, Vienna, Istanbul, Mugla, Izmir or Aydin. You'd work remotely most of the time except for Istanbul, Berlin and Vienna.

- Food in Europe is a lot better than in the US and by food I mean real food, not the cereals, cookies or things they eat thinking they're having breakfast. :) (At least in SF)

- I tend to think that startups are not for people that are married and with children. They are demanding and consuming. Unless it's your own because only then it'd be worth to your efforts and time. We all know that.

Wish you all the luck for whatever you decide and let me tell you one more thing. You should absolutely be grateful for the wife of yours. Mine is not moving a centimetre..

lingoberry 16 hours ago 0 replies      
Unfortunately you don't just "go and work" in the US, it doesn't work like the EU. Unless you're a hot commodity and you can convince Google et al to pay for your visa ($tens of thousands) and then winning the H-1B visa lottery, you will have a tough time.
__xtrimsky 15 hours ago 1 reply      
26 yo that used to live in California, but lives in NY now.

You don't get sunshine everywhere in California.

I personally hated the weather in San Francisco, but a bit to the south (Mountain View) is already much nicer.

Now I'll go through your requirements:

40h workweek: Yes easy to find

5 weeks of holiday a year: That is almost impossible to find in my experience, except if you are willing to get 3 weeks out of your pocket. (meaning you are actually deducting your pay)

free/cheap health insurance: Find a company with health insurance, and then you should be able to have one for your family, and only pay an extra of 200 to 600$ / month (yes that is cheap in the US)

free/cheap education up to university level for our daughter: that's not possible, you will have to pay for college. I think you can get one cheaper if you live more than 6 months in that state, and then send your daughter to a state college. Here is an example of a university near me (starts at 4000$ / year):


comrade1 16 hours ago 2 replies      
For the sake of your child you should probably stay in Europe. The education system in the u.s. is terrible. 100% of my European friend couples have moved back to Europe as soon as they've gotten pregnant or gave birth in order to provide a better education for their children.
empressplay 16 hours ago 0 replies      
Emigration is going to be difficult, isn't it? Companies seem to rarely sponsor immigrants unless they're total rockstars or aqui-hires because in-sourcers like TCS can bring "average" IT workers in cheaper.

It looks like the days of Google et. al. recruiting from far-afield are over, unless you're CTO of an early-stage startup someone like Google might buy, or at least have some kick-ass side projects you can point to that will make you irresistibly attractive enough for someone to deal with all of the associated immigration headache, perhaps being better / worse off from a lifestyle perspective is a bit of a moot point?

Sorry to be a downer but... cart before horse, etc. etc.

kovrik 16 hours ago 2 replies      
I'm a 25yo Java developer from Russia. My gf and I don't like (almost hate) our country and we want out.

We choose between USA, Netherlands, Germany, Norway, Switzerland, Canada, Australia and New Zealand.

I'm not a well-known software engineer, not an outstanding genius (yes, I'm not very confident about my skills) - that is why it seems very difficult for me to get a job outside Russia.

But I love programming, I try to learn something new every day, improve my skills and knowledge. And I hope we will get out someday (hope dies last :) ).

I wish you good luck - don't worry, everything would be alright!

bowlofpetunias 16 hours ago 0 replies      
"And change we got, but not the good kind."

This raises a bit of red flag, because lots of people migrate with a vague idea of "the grass is greener" without knowing what they're getting into. Since Belgium is not a bad place to live, I'm wondering what it is you're running away from.

And since you put a work/life balance, cheap health insurance and cheap education top of your priorities (all things Belgium already offers) and don't seem to know very much about the US, I wonder why you're not considering the much less complicated and safer option of another EU country? (Also, of all continental European countries, Belgium is probably most like the UK with it's post-industrial similarities.)

What is it that makes you think you and your family be happy in the US?

I'm getting a strong sense you don't really have a clear picture of that, and are just looking to flee to a magical land far away from your current troubles. I live in a place with lots of expats, and that scenario usually doesn't work out well.

kghose 16 hours ago 0 replies      
The only way to figure out if you like it is to try it out. Unless this was a bash US starter, in which case, carry on.
lukasm 16 hours ago 0 replies      
Remote work from Spain?
adriaanm 16 hours ago 0 replies      
Do not underestimate the cost (time & $$$) of immigrating and the in(s)anity of US immigration law. Winning the H1b lottery is probably the easiest way. Getting a green card requires a pretty dedicated sponsor willing to spend $5-10K, not to mention the >1 year wait (this is assuming best case: EU citizen with "US equivalent" of a Masters).
schwarzie2478 16 hours ago 0 replies      
May I ask what your bad experience in Belgium entailed? I'm curious, being belgian and a programmer... Although IT management here ranks very low in my humble opinion, it's not bad working here in the IT sector ( unless you work for banks and financial institutions, those are jerks :-) )
deodorel 15 hours ago 0 replies      
You look for sunshine, sea, jobs and an european location? Have you considered Sophia Antipolis, on the French cote d'Azur? I live and work there and it's quite nice, and you'll surly find a lot of java jobs.
wellboy 16 hours ago 0 replies      
Australia dude, best country ever. Salary as high as in California. It has all the good things that the U.S. has, without the bad things.
seminole 17 hours ago 4 replies      
Sorry about the formatting.

* 40h workweek

* 5 weeks of holiday a year

* free/cheap health insurance

* free/cheap education up to university level for our daughter.

sspross 16 hours ago 0 replies      
Come to Switzerland! You'll love it and as an enterprise java dev you'll find a job. Maybe I can help you here in Zrich, silvan.spross[at]gmail.com
h1karu 16 hours ago 0 replies      
The cost of living in the tech-scene areas are outrageous and skyrocketing, those are the facts. The sun-shine California lifestyle can be quite nice you'll need to be prepared to pay out the wazoo. Don't believe it ? Prove me wrong, start looking at the Bay Area rental market.
manolus 16 hours ago 0 replies      
Go live in Brazil!
hellbreakslose 16 hours ago 0 replies      
You didn't mention the visa thing at all.

You said you are EU citizens. It's ok for you moving around EU but moving to the US is going to create immigration problems for you.

One of you will need to get sponsored for a long-term working visa not the temporary one. Then still I think according to US laws your Wife won't be able to work until you get a Green Card. I heard that they are trying to change that law but still.

Sorry to break it down to you like that, you can still try and make it, but its not an easy thing to move to the States especially having a family with you.

I'd suggest you apply to 20 companies+ and try schedule them all within a week. So you and your family can go there for a week do your interviews and see if you can get someone to sponsor you.

It's not like you said I am just going to move there... If you say that to the officers in the airport asking you the reason for your visit they are definitely not going to let you in.

Ask HN: Thinking of mentoring? Looking for a mentor?
20 points by eatitraw  1 day ago   19 comments top 14
eatitraw 1 day ago 1 reply      
I am a software developer at Yandex(russian search engine company) and I want to mentor someone(or even a group -- it is much more fun to learn in a group!).

Ideally, a potential mentee:-- Wants to code her or his own small search engine. Obviously, it is difficult to recreate Yandex or Google, but it is relatively easy to make something on a smaller scale. -- Knows some C++, but wants to expand her or his knowledge -- Is in the beginning of the software development career

This is just a description of someone who I can help the most. If you don't quite match this description, send me an email anyway -- I can still help you with your own project in C++ or help you code a search engine in a some other language than C++. Or maybe I can just help pairing you with someone more relevant. :)

Email: in profile.

blairbeckwith 1 day ago 1 reply      
Quite experienced in building developer communities around platforms. Whether you're looking to kickstart an ecosystem or grow an existing one further, I have solid knowledge of the process from a software and business perspective. I currently run Shopify's App Store ecosystem which does millions of dollars/year in revenue for our partners.

Reach out to me if there's any way I can help: blair@shopify.com

yen223 1 day ago 0 replies      
I'm looking to pick up machine learning skills, especially on the math side. I've completed the Coursera course on Machine Learning, and I'm looking to take it to the next level. In return I can teach whatever I can - I have some pretty decent Python programming skills.
S4M 1 day ago 1 reply      
I could get some help with front end web development. In exchange, I could help in maths. The deal would be: you are available to answer my dumb questions in css, html or jquery, and I am available to answer your dumb questions about maths (linear algebra, bit of number theory, analysis, probability and statistics).

I guess it would be a good fit for a competent web developer who for some reasons wants to learn maths (I am about the opposite). My email is in my profile if someone is interested.

gauravgupta 23 hours ago 0 replies      
I'm a developer with about 6+ years of experience in web companies like SlideShare, Educomp and Naukri.com. Currently running my own startup and doing tech consulting for other startups in my free time! More details here - http://www.gauravgupta.in/freelance.php
wturner 1 day ago 0 replies      
I have a few programming mentors I work with and I'm looking to develop the business side of myself thus I'm looking for a business mentor. In exchange I can help you with web projects and give you a percentage of whatever business we create.

I'm in my late 30's so I have a lot of experience. I don't mind working with people who are younger , but 30 is about the cut off limit. My goal is to seed a lifestyle business that has the potential to grow very large. I'm more interested in a good fit between myself and the mentor than the mentor being extremely successful. However, you should have a track record that reflects a degree of successes. wktdev@gmail.com

I'm looking to get started in about 2 months.

Thank you.

jackgolding 1 day ago 0 replies      
I am interested in having a designer/front end dev/UXer to bounce off and help me get started with my portfolio.

I am a Market Research Consultant (Data Analyst) so I could offer mentoring/advice for surveys or data analysis. I also am pretty handy at programming (python) and maths (early uni.)

Shoot me an email! jackgolding@live.com.au

MrGando 1 day ago 0 replies      
Reasonably versed mobile dev ( iOS ). If you need some help/mentoring, give me a shout at "me at nicolasgoles.com"

I'm looking to learn interesting or advanced iOS (low level stuff, interesting UX concepts). Also interested in server side coding with Go.


hath995 1 day ago 0 replies      
Hi, I'm looking for a mentor for math (proofs, abstract algebra, real & complex analysis) and algorithms.

I'm a software developer working in Node.js, and very solid with JavaScript, MySQL, Mongo, and other web technologies (jQuery, Angular, etc...). I also have experience with a number of other languages including PHP, Java, C/C++. I'd be happy to mentor folks in those things as well.

redxblood 1 day ago 0 replies      
Im a student of Computer Science in my second year. I know HTML, CSS, Bootstrap, a little Jquery, Java, a bit of C++, and have created a couple websites.

If anyone would like mentoring of any of the above, id love to help!And if anyone knows about Node.js or databases, id certainly would be glad to learn. In return id teach or help in whatever i can.

adidash 20 hours ago 0 replies      
Experienced in search marketing, web analytics, & conversion optimization and a mentor at a startup accelerator.

Looking for a programming mentor to help me learn Python. Have some HTML, JS, & CSS experience but no backend knowledge. Email - adityadugar@gmail.com.

macguyver 1 day ago 0 replies      
This is a great idea and similar to this thread: https://news.ycombinator.com/item?id=7692769. I think there's a chance of building this into a platform. Email me if you're interested.
SJMosley 1 day ago 0 replies      
I am looking for a mentor in game development. I studied game development and computer science in school. I have worked on a few games academically but am looking to start making and any expertise would be extremely helpful.

Email: in profile

voltaire 1 day ago 0 replies      
Looking for mentor in director / vp product role mainly for career advancement advice.
Tell HN: Videos with privacy
2 points by simgidacav  18 hours ago   2 comments top
aw3c2 17 hours ago 1 reply      
What is the difference between music and listen?
Ask HN: What's your earliest web development story?
7 points by smoyer  1 day ago   6 comments top 5
reuven 7 hours ago 1 reply      
Hey, just noticed this thread!

There is a lot to say, and I"m not sure where to begin. But I was (as I wrote in my original story) one of the editors of the MIT student newspaper. We had a lot of fun, and some great computers. And every so often, someone would come by and ask to search through our archives.

Now, our "great computers" were Atex systems for typesetting and layout, based (I think) on PDPs of some sort. So to search through the archives meant loading a "disk pack," which is a laughably large hard disk that you had to put into the machine or take off of it. Just searching through the 100+ years of the newspaper's archives was a huge task.

At some point, we figured out how to get the information from Atex onto a more modern computer. And I set up the index, for my undergrad thesis, to be accessible on the Internet (not the Web). But the interface was clunky, and while it was better than before, the search was far from perfect.

So it was really great timing when Jeremy Hylton (now of Python/Google) went to that talk. We turned off my thesis software, turned on a Web site, and set up a simple search to work on our Web site. The thing is, while this was a great feature, there was one missing component -- users. So we actually took out large "house ads" (i.e., advertisements that the newspaper takes out itself, rather than selling to advertisers) telling people how to get a browser, what a URL was, how to enter the URL into a browser... all so that they could search the newspaper archives.

This was in early 1993, and I was still living in Boston at the time. A few months later, I went to a computer show, in which someone was showing off Web authoring tools. He asked who had a Web site, and I was the only one to raise my hand. I think that it just started at that point to become known among the technological elites, but the "elite" part meant that you had ever browsed the Web, not that you created sites yourself.

Another quick anecdote: When we set up the newspaper's Web site, we wanted people to be able to contact us. HTML forms had just been invented, as had the CGI protocol. So I hacked together a little program that took the contents of a form and sent it, via e-mail, to our administrators. I called it form-mail, and it was written in Perl, and all was great... until a few years later, when someone named "Matt" took it, removed my name, added his, took out all of the security features I had put in, and then made it famous as part of "Matt's Script Archive," which was the bane of Perl programmers' existence for years.

I seem to have lost the e-mail exchange that I had with him at the time, but when I told him that you cannot just remove someone else's name from GPL'ed code, he claimed to be scared, and then never did anything about it. Which is just as well, given that he so sullied the name of my program that I'm happy to give him the credit for all subsequent versions.

One last point: There wasn't any CGI.pm, or other Perl module to do Web stuff, back then. So I wrote my own code to decode data from POST-submitted forms. If you ever see the Perl code "for $pair in @pairs", then it's almost certainly copied from the code that I wrote in that first form-mail program, oh-so-many years ago.

Fun stuff, indeed!

smoyer 1 day ago 0 replies      
We were building distance learning systems and the classroom controllers were low powered PC hardware running DOS. These systems were connected to the system controller by Lantastic networking (we had no TCP/IP stack on the classroom controllers) and yet we needed both network monitoring (without SNMP) and status information related to the classroom hardware (tied to the classroom controller via RS-485) as well as the classroom's state (was it being used, which devices were powered on, etc.)

We ended up writing a device driver for the DOS machines that could message other Lantastic nodes with the system's current status. Once we had the status stored back at the system controller, we needed a way to allow administrators, operators and teachers to easily see the overall status ... my initial choice was to provide the data via a web server since the system controller had a TCP/IP stack and was connected to "the outside world".

In 1995, what do you use to write a web server that has no static content? Tcl/Tk was one of the first scripting languages to include the ability to open a "server socket" and it provided lots of libraries that made it easy to template text (in this case text/html). We ended up with one summary page that displayed the status of the entire system and a detail page for each classroom. There were no graphics, system status was shown via text and colored backgrounds using in-line styles, and the server automatically redirected you to the index if you asked for a non-existent page.

Sadly, the system never made it to production as we found we also needed a web-based method for scheduling classes, provisioning users, etc. This system was written in (pre-Java) ColdFusion and the monitoring functions were migrated into that system.

greenyoda 1 day ago 0 replies      
In 1995, I worked on getting a large piece of enterprise software to send output to browsers in HTML format. The product took off pretty quickly and is still being used today by big companies. HTML had only very basic markup (no CSS yet) and the only method for talking to a web server was CGI programs. But you could do tables, and those were adequate for generating business reports. Java 1.0 had just been released.

This was long before the web had become a popular culture phenomenon: most people outside of academia didn't know what the internet was, and search engines were in their infancy (Alta Vista was founded that year). Windows 3.1 did not have a built-in TCP/IP stack, so you had to be a geek just to figure out how to connect your home machine to an ISP via a dial-up modem (Windows 95 made it much easier) and install a browser. However, the web was starting to catch on in the business world as companies started putting useful information on the web and their intranets. It was an exciting time to be working with that technology since the potential was largely untapped.

NameNickHN 1 day ago 0 replies      
Ahh, the good old days. In 1997/98 I created a website for my hometown with photos, cinema schedule and the like. I "designed" it Coral Draw und Adobe GoLive. It was a time when you were hip if you used tables for the layout. And if you used Server Side Includes, you were quite the hacker.

My first real web development project was an appointment scheduler. In 2000 a potential client wanted one but we couldn't license one from the only company that offered that kind of software at the time in Germany. Thus I taught myself PHP and MySQL and within a week I had a working prototype. Users could reserve appointments and admins could manage them.

The deal with the potential client fell through, though, but I continued working on the code. It was hard going because back in the day, there were no PHP frameworks (that I knew of) and no CSS frameworks.

It's been moderately successful and I still have happy customers from that time. I only wish I had done early on what I did two years ago: offer it as a hosted service (or SaaS, as it is now called).

tehwebguy 1 day ago 0 replies      
In 1994 or 95 my elementary school worked with Academic Resource Center (ARC) which was a local elective based school that would host different schools each day for special courses. This was a "gifted" thing.

One class was to make a website, which I didn't know the definition of at the time (being about 8 or 9 and living in a home without a computer).


* Macintosh LCs

* Macintosh 512k


* Lynx on the classic Macs

* Netscape on the LCs

* Pico for text editing

* Pine for email

* Fetch for uploading

We learned basic HTML which was enough for me to keep pushing toward development once my family finally bought a computer.

When I realized that I wasn't going back to college to finish because my business was doing so well I thought back to ARC and hunted down one of my old teachers to try to make a donation. I couldn't find the one who taught HTML so I reached out to the lady that taught us Logo Writer, but ARC had long been shut down so no dice.

Rules for Show HN?
12 points by jevin  2 days ago   7 comments top 4
dang 1 day ago 1 reply      
Show HN is for something you've made that people can play with. Landing pages, email signups, and fundraisers aren't things people can play with, so we edit "Show HN" out in those cases.

For example, instead of an email signup, Show HN is for the thing you email people about once it's ready; instead of a fundraiser, Show HN is for what you build with the funds you raise; and so on.

We're planning to feature Show HNs on the site a lot more, since most people agree they're one of the best things here.

whatthemick 2 days ago 1 reply      
I'm interested in this aswell. I assumed "Show HN" was the appropriate thing since you clearly state it's a type of self-promotion.

I personally appreciate people being upfront about it being promotional, StrongLoops latest "tutorials" have been a bit of a sinner in this regard. They usually provide great content but always mention their own services (which is fine in my opinion but it should be obvious from the get-go).

Edit: Perhaps the prefix is removed to remove any bias, perhaps people are inclined to be more positive towards user contributions - Perhaps by removing Show HN you let the product live on its own merit, rather than any type of emotional bias.

jcr 2 days ago 1 reply      
To ask about the specific case of "Show HN:" being removed from yoursubmission, the right place to do it is by emailing: hn@ycombinaor.com

I've never seen any official rules or guidelines regarding "Show HN:"submissions, but there are differences in sorting between url-basedsubmissions and text-based submissions. Since text-based submissionssink faster, I've seen some suggest using url-based submissions. On theother hand, with a text-submission, you can specifically ask for whatyou want (design help, content help, ...) and provide contact info.

From the following, it seems some changes may be afoot.

https://news.ycombinator.com/item?id=7761378> We do intend to add a few things, such as a "show" link in the topbar for Show HNs

logn 2 days ago 0 replies      
Show HN is generally used to show off things you've made or had a part in. If it's just a new product then use the title on the site you're linking to.
Ask HN: How Do You Securely Share Passwords in Teams?
43 points by s9ix  3 days ago   62 comments top 34
AaronFriel 3 days ago 2 replies      
I'm working on a piece of software (SaaS, self-hosted) that acts as a reverse proxy and stores credentials. The goal is to avoid having to require users to know any secrets other than the ones you already trust them to have (a domain login, a Google Apps account, etc.) The goal is to have a single-sign on for the entire internet, and any topology of mapping users to accounts. Account per user could be used if you want to provide access to individual (but company controlled) Reddit, email, Trello, etc. accounts. Many users per account could be used to manage Facebook, Twitter, et al. And access policies can control whether or not users are allowed to send particular types of requests or visit URL fragments.

It's a work in progress, I have an online parser/rewriter for HTML, CSS, JavaScript that can handle moderately complex websites now, including Facebook. Might have something ready by the end of the summer.

Here's an album with some screenshots from last year: http://imgur.com/a/ekoO2

MikeKusold 3 days ago 1 reply      
Ideally, you don't share passwords. If it is a server, every user should have their own account with sudo access if needed.

If it is a website that you are unable to add multiple users to an organization with, LastPass has a password sharing feature that doesn't directly expose the password with people you share it with. Although if someone cares enough, they will be able to find it.

Any time an employee leaves a company, all shared passwords should be reset. It doesn't matter if it was an amicable departure or not.

aroch 3 days ago 1 reply      
Passwords: We don't. Everything that could use a password is either keyed or certificate auth. Edit: I should add that there are things that use passwords but those are user-specific accounts or communal accounts (which are considered, essentially, public accounts) and are accessible only on the internal network. Users are responsible for the safe-keeping of those passwords and user accounts can do no harm, so to speak, if compromised.

Secrets: In a closed office, verbally.

cones688 3 days ago 2 replies      
Large enterprises usually use PIMs (Privileged Identity Managers), web based consoles where you check out credentials for the task. I have seen IBMs and it has some pretty creepy (if you are the dev)/powerful (if you are CISO) features like session recording etc [0], does allow you to see who used what at what time and rotates passwords for the systems required between use..

[0] http://www-03.ibm.com/software/products/en/pim/

edit: video demo https://www.youtube.com/watch?v=CITq80gf6Hk

damon_c 3 days ago 0 replies      
I've been thinking about this lately and it occurred to me that it would be nice to be able to store sensitive info in an area accessible to everyone on the project but still be able to limit access.

Currently we use ssh keys to limit access to servers and code repositories so the perfect solution would allow passwords and such to be protected by similar means.

I believe gpg[0] has a solution but I have not implemented it myself yet.

0: https://www.gnupg.org/gph/en/manual/x110.html

furyg3 3 days ago 0 replies      
For user specific passwords, our team uses whichever software they prefer (usually LastPass or KeePass)

For passwords that can absolutely not be made user-specific, we use SimpleSafe (https://www.simplesafe.net/). It allows you to make groups of passwords and assign rights to those passwords, and has decent logging. It's web based and works ok on mobile.

These few passwords are for network devices, passwords for websites where only one account can be made, or master/root/administrator passwords that we don't use but need to write down somewhere just in case.

These are the keys to the kingdom, so it should be behind VPN/SSH, ideally completely isolated from your regular infrastructure, and with tested backup procedures.

lotsofcows 3 days ago 1 reply      
A couple of KeePass files in DropBox.
kennu 2 days ago 0 replies      
Keystok (https://keystok.com/), which uses JavaScript to encrypt/decrypt secrets in the browser, and also provides a REST API and client libraries to access the secrets programmatically, for deploying API keys to apps etc.

(I'm one of the developers. It's a commercial SaaS service.)

brokentone 3 days ago 1 reply      
Honestly the original "share" isn't the big issue -- many ways to communicate securely. But the history is what will get you if your communication platform ever gets broken into.

Most of the external accounts (log analysis, analytics, CDN, etc) have individual accounts, no sharing necessary, up to the individual to maintain complexity and remember the password.

For other services, certificates and multiple authentication methods (2FA) works out nicely.

jcfrei 3 days ago 0 replies      
If there's no other way than using a shared password, you might resort to using the gnupg suite to encrypt it (and then share it with your favourite messenger/mail client). The necessary programs are usually pre-installed on your distribution.
Diederich 3 days ago 0 replies      
I might have missed it, but has HN done any kind of review of zerobin? http://sebsauvage.net/wiki/doku.php?id=php:zerobin
lowry 3 days ago 1 reply      
None mentioned gitcrypt yet. I used it for 3 years, sharing password in a team of 4. A bit cumbersome to setup, but once you've been through the installation instructions, it just works.


rburhum 3 days ago 0 replies      
"Sharing Passwords" could mean sharing the master account of a service you don't have ssh/certificate access to
kruk 3 days ago 0 replies      
For most of the services we create separate accounts. Nowadays most sites support multiple accounts, those who don't are rare enough to just share a password via email.

Personally I use 1Password for storing passwords and it allows sharing vaults between users so as my team grows we might actually consider using these.

arn 3 days ago 0 replies      
Sendinc.com is an option for secure self destructing emails. As much as you trust a 3rd party.
gaadd33 3 days ago 2 replies      
We use https://commonkey.com/, it works pretty great and all the encryption is done client side (although the usual caveats about javascript encryption still hold)
matthewcford 3 days ago 0 replies      
We've just started using https://www.mitro.co which seems better suited for us, we've created an org, and have teams for different projects/level of access.
karthikv2k 3 days ago 1 reply      

Pros:1. Open source tool, you can run internally in your company. https://github.com/saravanacp/secureshareme2. Very secure: it encrypts the data in the browser and the key is stored in the URL anchortag which is not sent to server at any point of time. Only the sender and the receiver has access to the keys. 3. You can also opt to send a secondary verification code to receiver's mobile for two layers of security.4. Option to self distruct message based on time or if an attack is detected.

jsegura 3 days ago 1 reply      
Password safe in a smb share. I don't really like the idea but it's imposed.
eddieroger 3 days ago 0 replies      
Other than the default answer of "rarely," we've started using a shared 1Password vault. We actually end up using the notes functionality more than anything, but there are some common team accounts in there. Since most of us used 1Password already, it was easy peasey.
mbesto 3 days ago 0 replies      

Cheap, effective and good security track record.

tvon 3 days ago 0 replies      
payaaam 3 days ago 0 replies      
When we HAVE to share passwords, we email them using Virtru (encrypted emails). All of the encryption is done client side. You can set the email to expire after 1 hour. No one would ever be able to read it again. https://www.virtru.com/other-platforms

That being said, we use personal accounts for all external services. All personal passwords are stored in 1Password.

bjelkeman-again 3 days ago 0 replies      
Why are you looking for alternatives? Looking at this issue myself.
hussong 3 days ago 2 replies      
passpack.com -- have been using it for a few years now and never looked back.
josefresco 3 days ago 0 replies      
Google Drive/Docs.
petval 3 days ago 0 replies      
KeePass with triggers for synchronization, it syncs on opening and closing the db. Two factor authentication for the db files and separate db file for every unique group.
eli 3 days ago 0 replies      
What don't you like about Meldium?
1111y 3 days ago 0 replies      
Keepass wallet stored on a secure, internal network.
surfacedamage 3 days ago 1 reply      
paulocal 3 days ago 0 replies      
Lastpass. It's awesome and easy to use. Wish the UI was a little better but it's not terrible.
peterwwillis 3 days ago 1 reply      
Write it on a post-it, walk up to the person, give it to them, then take the post-it back.

Passwords are designed to be human-interface memorized authentication tokens. Sharing it any other way than via human interaction just makes it a digital key, and real digital keys are much more secure than digital passwords. So share it via human medium, or rethink why you're using a password.

savszymura 3 days ago 0 replies      
Excel spreadsheet on the network drive. I wish I was joking.
hamburglar 3 days ago 0 replies      
A handful of text files containing sets of passwords of similar "privilege level" (e.g. one containing social media logins, one for PayPal or services that cost money, etc), stored gpg-encrypted to specific lists of people and kept under revision control. It is cumbersome, particularly with regard to editing and key management. But it works and doesn't rely on any 3rd parties.
Ask HN: Productivity tools for windows 8?
3 points by chintan39  20 hours ago   4 comments top 3
vijucat 18 hours ago 0 replies      
Windows 8.1 has an inbuilt Alarms app which includes countdown timers that you can use for keeping track of time in general (Pomodoro technique etc;). Here's how it looks like : http://i.imgur.com/cz0tg6Z.png

Non-Windows 8 specific : Eclipse has a full-screen plugin that I use to be free from distraction when working with code.

There's an Autohotkey script for making any window full-screen + borderless, too. It's great for focusing on one task :


Autohotkey can automate various other things like having keyboard shortcuts for Volume levels, opening applications, turning off Caps Lock, etc;

mbrownnyc 17 hours ago 1 reply      
I use console2 (make sure you grab the 64-bit version) + an autohotkey script to provide a "quake-like" console drop down... in which I use...

Powershell is extremely awesome; it's basically a c# console.


Chocolatey and/or OneGet, Boxstarter, and myget.

Notepad++ <i>and</i> Notepad2. I use both, notepad++ for complex replacement tasks, notepad2 as my simple editor.

Puretext which strips formatting from text when pasting.


See: http://mbrownnyc.wordpress.com/misc/my-toolchain/

Not sure if this is what you mean by "productivity tools," but these things greatly increase my productivity and reduce the time it takes for me to complete tasks.

mdpm 10 hours ago 0 replies      
preme, listary, cmder/conemu. that's a good start.
Ask HN: anyone from Berlin startup scene?
6 points by winterismute  1 day ago   4 comments top 3
bjoerns 1 day ago 1 reply      
hi, I'm based in Berlin (I run spreadgit, a version control system for Excel). we could meet up for a beer or something on Saturday. Otherwise, the cool startup kids hang out in the betahaus over in Kreuzberg (http://www.betahaus.com/berlin/). I'll drop you an email.
gailees 1 day ago 0 replies      
I'm here. Shoot me an message: bit.ly/hellllyeah
X4 1 day ago 0 replies      
near Frankfurt, sorry
Ask HN: Best laptop and programs for learning to code on the go?
9 points by rblion  1 day ago   10 comments top 8
stevenspasbo 11 hours ago 0 replies      
I have a macbook pro, and depending on what I'm working on I either use eclipse, ADT, or vim.

The laptop doesn't really matter, but I hate doing any sort of development in windows, so I'd either buy a macbook (second choice) or get a Dell or something and install ubuntu or arch on it.

mindmade 1 day ago 2 replies      
I'm in a similar situation and after much research I just got a refurb 2013 13" MacBook Air. The only difference between the 2014 Airs is 0.1 GHz (and a couple hundred dollars).
cosmc 1 day ago 0 replies      
Your Laptop doesn't really matter too much overall, neither does your text editor to an extent. I would just use what find comfortable as a beginner and you'll naturally discover what you like/dislike. Sublime Text is a good place to start for an editor if your looking.
fengor 1 day ago 0 replies      
I have two options fo ron the go. Depending on how heavy I travel these are: Thinkpad T61 or Packard Bell dot-s netbook.

Both run archlinux with i3 as window manager so I usually don't really notice perforamnce issues on the netbook.

For an editor I was always a fan of vim but I recommend using what you are comfortable with. IDEs like Eclipse are nice but if performance is at a premium I recommend jsut sticking to an editor and a shell.

Version control i would recommend git.

jenkstom 1 day ago 0 replies      
If RubyMine is anywhere near as good as PyCharm, I'd say give that a try. It has really opened up my knowledge of Django by letting me easily navigate code. I'm using an older Dell Latitude 15 inch notebook running xubuntu, which is working very well for me after I upgraded the RAM and put in a solid state hard drive.
zdzich 1 day ago 0 replies      
Ubuntu, Sublime text, Terminator
gullyleft 1 day ago 0 replies      
MacBook Air, Sublime Text.
chatman 1 day ago 0 replies      
Thinkpad. Fedora (DVD version which includes preinstalled git, svn, eclipse, python, jdk etc).
Ask HN: I'm looking for new ways to serve museum visitors with content
6 points by eli_oat  2 days ago   8 comments top 8
brudgers 1 day ago 0 replies      
These webpages receive more traffic from google searches than they do from QR redirects

The web is many orders of magnitude more accessible than most small museums, and in a potentially important sense people viewing your webpage are your visitors. It is likely that a significant fraction of the physical visitors have already been webpage visitors.

Now a little personal bias. If I'm in the museum, I didnt come to surf the intertubes. I don't really want to be in an environment where using cellphones is acceptable, let alone one which encourages it. Headphones and written guides don't intrude on other people. Cellphones do.

But that's just me of course. The reason I mention it is to suggest investigating what would improve the experience of the sort of people who actually visit your museum. Will it be enhanced by the web? Would money be better spent on physical objects or building infrastructure or display fixtures and lighting or staff or literature or scholarship or educational programs?

How many guided tours does creating an In museum digital experience cost and which creates more value for a physical visitor? Digital resources are a fallback for over demand. For under capacity systems they are a lower quality solution than full service.

Good luck.

loumf 1 day ago 0 replies      
One of the best experiences I have had in a small museum was at the the Salvador Dali museum in St. Petersburg, FL. They have an amazing collection, but the best part was that there were frequent docent-led guided tours. I got more out of that visit than nearly any other museum I've ever been to (which is a ton).

When I go to museums without this, I bring printed guided tours to follow (Rick Steves has a bunch, but there are others). The good ones have a them, take you to specific pieces and tell a story that puts them in a cohesive context.

The best audio guided tour I have had was at Graceland -- there, it's mandatory (too crowded) and you follow along a linear route through the house. The reason it was great was that Pricilla Presley is the tour guide and they can incorporate Elvis's voice and music.

seanccox 1 day ago 0 replies      
A few years ago, I designed some paper-based puzzle quests for friends visiting historical sites in Istanbul, and around that time I heard about a US company doing something similar on a mobile device: SCVNGR.

I don't code, and mobile tech is unreliable for short-term visitors to Istanbul, so I never bothered trying to port the content to a device. Basically though, the solutions to puzzles are used to decipher new material and explore the spaces more thoroughly. For example, everyone who goes to the Hagia Sophia visits the mosaic portrait of the Empress Zoe, but not everyone knows about the Viking runes carved into a stone banister, so the idea was to link things and challenge people to explore, and then to use what they had found to unlock other puzzles.

It was clunky as shit on paper, and sometimes friends would give up or call to ask for clues, but they said they enjoyed it (or they were really, really polite). On a device, I'm sure that sort of interaction would be simple, and it's something I still toy with learning to build, but Istanbul keeps happening to me and getting in the way.

mattwritescode 1 day ago 0 replies      
In the past I have worked on a similar type of project but for a large trade show. After research we found these problems:

The problem with a straight QR code are that non technical people just have no idea what they are or how to use them (just ask your parents or friends).

NFC etc again have the same kind of issue. Non-technical people just dont know how it works (also the fact that only the higher end devices support it).

Personally I would go for one of the two following options after working on something similar.

You could look into an app for the museum. The app will have a QR code reader built in, but you can also offer geolocation. The important thing in this case is to advertise the app everywhere. Also give the museum free wifi so people can download the app.

Or look at an internal WiFi network which only servers your website. If you wanted to get a little more technical you could get the website to allow location (really only works on single floor buildings) to server items close to where you are.

User9812 1 day ago 0 replies      
More interactive content, and well designed infographics. I've been to a lot of museums around the world, and usually they have a sign next to each object of interest with a short essay. I went to another museum where they had headsets, and you could listen to the content. This never appealed to me. I don't have 8 hours to stand with a headset on, listening to each piece. I also don't have the time or interest to read something that looks like a copy/paste from wikipedia. If I wanted to do this, I'd just stay home and read online. If I want more information on a particular piece, once again, I can read at home on my own time.

Other people seem to feel the same way. The majority of the time I see people glance at a sign, read one or two lines, then keep walking.

Imagine people only have an hour to go through the museum. How can you organize and display the most interesting data for them? Pick out the best facts, and design some eye catching infographics that make them stop in their tracks.

And why not make things more interactive? I'll learn more that way. Quiz me, give me a few multiple choices on a touch screen, and let me guess what period this artifact is from, or how much this particular ship anchor weighs. What about the number of people on the Titanic, or how many were crew, how many were passengers? How many survived? Things like this make people stop. They're walking and they see a question with a few answers. It makes them think, talk about it with the people they're with. You could show the average votes for each answer based on past visitors, etc.

slvv 1 day ago 0 replies      
This is a great question - and I'd love to hear people suggestions for how to serve these needs at smaller museums & historical sites with small budgets, too.
kinj28 1 day ago 0 replies      
how about clicking a picture of the exhibit via an app & app providing more information/content regarding the exhibit?
carreraellla 2 days ago 0 replies      
i would go with NFC or iBeacons and custom video's
Ask HN: A startup trainer?
3 points by pontifier  1 day ago   4 comments top 4
macguyver 1 hour ago 0 replies      
This is a very interesting idea.

The day-to-day realities of managing and growing a startup are very challenging, especially if you are the sole founder. I've been there in the early days for numerous startups and for myself, and found that most difficult parts are not necessarily related to the business, product, or customers themselves, but rather they are usually emotional in nature, and center around how to stay motivated, continue to get things done and move forward when there's no end in sight. The hardest part is feeling like you're alone, there's no one else who gets it to talk to.

I'm not an investor or startup advisor, but I'd be happy to help you out if you want to work together. My contact is in my handle.

JSeymourATL 11 hours ago 0 replies      
Best and smartest motivation hack is engaging with your beta-testers/customers/end-users daily. Live interaction & feedback is huge. Your passion will re-emerge if you focus giving them something cool and worthwhile. Try to build those conversations into the top-half of your day.
fabrice_d 1 day ago 0 replies      
You should talk to https://twitter.com/pfinette he loves to help people like you!
efnysien 1 day ago 0 replies      
It sounds like what you're looking for is best served by an incubator. Barring that, if you're in the valley (or even elsewhere) you should get involved with some sort of shared-working space like HackerDojo. From what I've experienced, the people and environment provide a nice expectation boost (it's very difficult to push yourself alone - much easier when people know what you're up to, and have expectations on you to succeed - then you have to!).

Best of luck!

Ask HN: I feel like an 'expert beginner' and I don't know how to get better
108 points by aoeuaue  6 days ago   51 comments top 35
patio11 5 days ago 1 reply      
Do you want to be a programmer or a computer scientist? They're both options. One of them ships software for a living, the other ships journal articles. (This is a joke grounded more than a little bit in reality.)

Your list of interests sounds like that of a computer scientist, but I'm allocating a little space to "Maybe your only exposure to computer programming so far has been undergrad CS and you're describing it in the only language anyone has ever taught you."

The best way to skill up as a programmer, if you're interested in that, is to ship more software. There is deep, mythical knowledge in programming, and it is acquired with sweat on your brow and a pickaxe in your hand chipping away at a coal face made out of Why Doesn't This Freaking Work.

You will note that most programs you work on build on things you have heard about in CS classes but do not implicate most of them directly. Compilers are very nice to understand. If you want to be a programmer, absent you making the goal of working on compilers your life's work for the next 10 years, you will probably not work on compilers. Most coal faces sound like something rather more like "A business has some fairly straightforward transformations to be made on two sets of data. There's plenty of opportunity for smart implementation choices and cleverness, but that mostly informs the small rather than the large of this project." (Cleverness in the large in programming is good selection of which coal faces to attack at all. After you get there people often stop calling you a programmer no matter how much programming you do.)

electronvolt 6 days ago 2 replies      
If you want to improve at programming: follow the advice about either making a personal project or working on an open source project. The fastest way to get better at programming is to program more.

However: it sounds like your interests are actually more in the realm of Computer Science than Programming, though: type theory, theory of computation, compilers, AI, etc. are less in the realm of programming and much more in the realm of computer science. You don't really need to know how an NFA or DFA works in most day to day programming, frankly. For learning Computer Science, I would suggest finding an advanced course with all of its material online (MIT OpenCourseware is a good place to start, or any of the other free online courses places), and working through a course on the topic. If it has prerequisites that you don't know any/most of the material from, then find a course on those. In my opinion, the other common options (reading through a textbook, reading papers, working on a project related and just learning what you need for that) all have flaws: textbooks are usually designed to accompany a course, which means they usually have much more than you need to learn a lot about the subject (and, in my experience, many are unbelievably boring and poorly written; if you want to go that route, make sure you find ones that are appropriate for self study). Reading papers is really interesting (and a lot more fun than reading textbooks), but without context or knowledge about the area, it's hard to evaluate the paper's meaningfulness/claims/etc., and hard to decide which papers are important to read. Working on just a project (e.x. just writing a compiler) leads to learning just enough to make that project, and not more.If you want to improve at programming: follow the advice about either making a personal project or working on an open source project. The fastest way to get better at programming is to program more.

Frankly: it sounds like you are decidedly not as much of an 'expert beginner' as you think you are. Familiarity with basic data structures+complexity, an understanding of theory, and an understanding of math through linear, ODEs, and discrete already puts you on a very firm grounding. (Outside of certain very specific parts of CS, you /do not/ need more math than that. If you're going into graphics research, knowing differential topology+geometry might be handy. I'm having a hard time thinking of things other than that, though.) From your description, you have more or less finished the 'beginner' stage, moved well beyond the 'novice' stage, and are moving towards becoming someone with a lot of advanced knowledge. Just knowing that you're interested in things like type theory+compilers/machine learning+expert systems+AI already puts you /way/ beyond being a beginner.

Shameless plug of someone else's stuff: if you're not sure where to start on the courses front, and want to start on the programming languages side of things (compilers, etc.), this course might be a good place to start: https://www.udacity.com/course/cs262I haven't worked through this course in particular, and I don't know its exact difficulty, but I took undergraduate programming languages from this professor and he's an /amazing/ teacher.

Edit: don't know why I had two copies of that written, but now there should only be one. Also, cryptography is another part of CS that you need more math (in this case, abstract algebra). (More multiple copies? I seem to be pretty bad at this "say things once" thing, and need to make some preference changes.)

eranation 6 days ago 0 replies      
Either build something, or go to the academy. If you build something, you'll do a lazy evaluation of the knowledge tree, learning just what you need to get the job done, which will be a very small subset of all that you described above, depending on the domain of your problem. However if you want knowledge for the sake of knowledge, get a master degree / PhD, it sounds to me it is exactly what you are looking for.

Also you don't sound line an expert beginner, you sound like a beginning expert, I'm programming for 10 years for a living, built a couple of money making startups, and doing my MSc at the moment, I can't say I know half of all that at an expert level ;)

Finally, accept that you don't really have to know everything, and more so, you can't really be an expert in everything, it's really hard but CS is a very wide field. You can't help but being a beginner expert on a wide area of topics, and only a "real" expert in a very narrow subject. Not all CS Phds are expert in everything, actually they are most likely expert in a very narrow set of topics relevant for their research.

Bottom line, either learn for learning and do it in a place that honors it (academy or independent / commercial research) Or build something that makes money, and the subset of human knowledge needed to make it work will be defining itself (you'll have to fight the urge to learn things that "you'll probably need later", and make it more "on demand" learning)

Karellen 6 days ago 0 replies      
Pick a Free Software project that you use regularly (possibly one without a CLA to begin with if you want to avoid paperwork), preferably one written in a language you already know, find the bug tracker, and find a bug (or wishlist item) that sounds interesting but really trivial. (No, really. The first time you do this will probably be a lot harder than you think it ought to be. If it's not, no problem, pick something less trivial second time around.)

Download the code, figure out how to build/install it, and start to find your way around the codebase to try and figure out which bit of code is at fault/needs extending. When you get stuck, ask on the dev mailing list or IRC or whatever comms channels the core dev(s) have.

A lot of programming is not about designing something elegant and new. It's maintenance work, fixing bugs, extending functionality, adding new features. Sometimes adding exciting new features is a chance to design something elegant and new, but other times it's a bunch of repurposing and refactoring some features that are mostly-there under the hood, but need a couple of tweaks, and a small amount of really new stuff (but in the same idiom as the rest of the system) and exposing in a new way.

You'll really find out how to properly spelunk into a codebase (which is a complementary skill to just reading code), how code is used, and how it solves real-world problems.

If another dev solves the bug before you do, that's not a problem. The real purpose of the exercise was for you to learn, and only perhipherally to help the project. As a bonus, you can see how the other dev solved the problem, and how their solution differs from yours. Did they solve the bug at the "same level" as you? Was their fix a bigger or smaller change than yours?

If you get there first, great! Submit a patch to their mailing list, or a pull request to their git page, or whatever they use. Do not take their criticisms of your work as a personal insult. (If they do insult you personally - which almost certainly won't happen, but very occasionally does - that's another matter. Drop it and find another project. Life's too short to waste on asshats.) Rather, listen to exactly what they don't like about the way you solved the problem, use that to fix the problem in a way they will like, and re-submit.


ChuckMcM 6 days ago 1 reply      
Simply put you have to start practicing. Try to solve problems with the techniques you've learned, and you will get a better understanding of their strengths and their weaknesses. That will help you internalize the theory you have absorbed. It does take time (this annoys most people) but it serves the exact same purpose as homework does in school, moves the understanding from the hippocampus out through the rest of your brain.
striking 6 days ago 1 reply      
To become a better programmer and not a better computer scientist:

Do your own thing. Build something you want to see built and you will learn oh so much. Programming isn't about how you implement something so much as it is for what reason. Think of something you want to see built and figure it out from there.

For example, I learned Python by trying to write an app that would take my Shazam tags and convert them to a Google Music playlist so I could more easily remember songs to listen to later.

Notice that I didn't write anything about SQLite or how slow Python's HTTP was when making the queries, because in learning Python, that wasn't important; those things were just implementation details that I only started thinking about after my application was demonstrably "slow." And more than that, I really didn't consider anything about lambda calculus and I don't know a single thing about NFAs or DFAs. I just wrote an app.

And I learned something, enough to get the job done. If you really want to learn about how to apply functional programming, learn Haskell. If you want to learn about compilers, write a compiler. You'll learn enough, because there's no way you can learn "everything" on a topic in Computer Science.

The field is much too broad, and you'll be way better off lazy-evaluating it than calculating it wholesale.

Tl;dr: If you want to be a better programmer (as opposed to being a better computer scientist) build and the knowledge will follow.

Im_Talking 6 days ago 1 reply      
I'm always suspicious of the advise to work on open-source projects, or practising programming on your own, or online coding academies, etc. I feel these are without purpose and people soon lose interest since there is no goal (although helping out on an open-source project is certainly noble).

My advise would be to look at your own network (friends, family, etc) and find those who are in business and ask them about their pain; and there is always some pain that a business has. Then figure out a solution to their problem and program that.This serves 3 purposes:1) It has a definable goal and purpose (solving the pain) as it's a real-life project.2) You will learn tons about yourself, programming, and the business.3) It could lead to either employment or a program you could sell to others and start a business.

As always, make sure you write-up a contract which states that the IP is yours. Hope for the best; plan for the worst.

wonnage 6 days ago 0 replies      
I think some of it might just be that CS theory sounds intimidating. But if you paid attention in college (which it sounds like you did), you might find that papers really aren't that hard to read. The hairy bit comes up when you don't know enough math, but this is typically more a problem if you're trying to learn something specialized (e.g cryptography).

Also, there's a disconnect between academia and the workforce. You might invent a fancy new data structure that blows up in real use because it ignores caches. Or you might invent something that's cache-aware, but everybody's using scripting languages or the JVM and doesn't have that level of access to the hardware. And so on. If you're strictly speaking about becoming better at the work of programming (rather than CS), that stuff isn't that important. You will spend way more time, especially as you move up in seniority, interacting with people - whether it's designing your system to be understandable by humans, persuading others of your ideas, getting funding, etc.

brudgers 6 days ago 0 replies      
Some remarks:

+ There's a traditional sequence in skilled trades of apprentice -> journeyman -> master. A contemporary trade probably throws student on the front end and perhaps renames apprentice to 'intern'.

What separates a student from an apprentice/intern is the type of problems they work on. The same idea distinguishes the journeyman from the apprentice except that the journeyman is expected to successfully solve the problems they work on. Etc for the master.

What I am getting at is that there is a range of expertise and that what marks someone as an expert is the sort of problems they solve. But it's critical to realize that the context in which they solve those problems matters. This week thousands of students will be writing quicksort code. In 1960 it was the stuff of ...well CA Hoare probably was an expert programmer in an absolute sense, and perhaps a new journeyman among those who were programmers. Here again, context matters when talking about expertise...the one-eyed man in the kingdom of the blind and all that.

+ It's not really clear what you mean by 'expertise'. An expert AI programmer is someone who has solved expert level problems - one in an academic setting earns a credential. In a vocational setting it's going to take several.

But in both settings the context is years, not hours per day.

+ Sure you're free to define what it means to be an expert. Regardless of what definition you choose, the question remains, what does an expert do that you aren't doing? This isn't a question of research. It's not a question of methodology. It's a question of personal opinion - that is, what activities would you have to do to meet your definition of an expert. Maybe that's working at Google. Maybe it's earning a phd. Maybe it's writing a replacement for HotSpot.

+ Once you know what sort of problems you need to solve to move toward being an expert, perhaps just trying to solve some of those problems is the place to start. I.e. what sort of problems does an apprentice or journeyman tackle?

Good luck.

lmm 6 days ago 1 reply      
Solve real problems - write programs that "scratch your own itch" - and learn as you need to. It's hard to tell how well you're learning when you don't have actual results to go by.

Honestly though that set of interests doesn't seem like the sort of thing that lends itself to real problems; it sounds to me like you've already got more than enough CS theory. If you're looking to learn the kind of programming that will make you better at doing it professionally, you need to start making practical things. Find a hobby that could do with a website/app or something else in your life that can be automated.

noonespecial 6 days ago 0 replies      
I've felt like this my entire life. You're in a good spot. You know a lot about what you don't know. You are prepared to learn these things as you need them to reach your goals. It's the people who feel like they are experts who have actually stalled.

You can easily spend the rest of your life shaving these mythical yaks and when you are old and surrounded by mountains of yak hair, you'll feel exactly the same as you do now.

There is more to learn than you can ever hope to. Just learn what you need as you go. It's the key to all existential crisis: Try not to think so much.

jradd 6 days ago 1 reply      
The most important advice that comes to mind is a bit proverbial, and from a board game so appropriately titled; "Go."

Lose your first 50 games of Go as FAST as possible!Don't worry about winning or losing or finding the "right" move, just put some stones down, get used to looking at the shapes that come up, and get a good feeling for how the rules work. Of course, a consequence of that attitude is that you will lose most of those games, but it doesn't matter. Once you have a bit of experience under your belt, then you are ready to begin

j45 6 days ago 0 replies      
I'm going to recommend if what you're doing isn't working for you, that you should try a different approach to see if it can get you the momentum you're looking for, in addition to what you've already been doing:

Take a break from focusing on the strategies and tactics of programming. No single algorithm, framework or language is going to unlock the panacea of potential inside of you. Most problems simply aren't that complex in the beginning.

Having the mindset of an innocent beginner always is the toughest thing to maintain to remain a problem-based thinker instead of a solution-based thinker.

The best way I've found is simply to solve problems the best I can, and when I learn what I could have done better, if the need is there, go and refactor it. No matter how great you are, or aren't today, what you write may look bad in 5 years because you have more experience.

Most things we build as developers become obsolete. It's a separate discussion but I'm not sure what you're trying to optimize, your skills, or a result in a project?

No developer is a a factory of churning out code or results at the same speed. Be less focused on the practice of programming alone and look at the results you're creating.

Software is as much a craft, an art, as much as a technical skill, and maybe it's something for you to explore the other fronts.

issa 6 days ago 0 replies      
I'd suggest drilling down into ONE subject area. If you want to become the world's foremost expert on NFA to DFA conversion techniques, go for it!

Forget about trying to learn EVERYTHING. Pick one thing, learn it well, repeat with the next thing.

As mentioned, the more you can do this within the confines of projects you feel passionately about, the easier it will be.

joeld42 3 days ago 0 replies      
Build something. Resist the urge to use all that theory to make it optimal. Just make it work. From what you've posted, I'd suggest inventing a "toy" language and writing a compiler or interpreter for it.

One of my favorite sayings goes: "What's the difference between theory and practice?" "In theory, there is no difference".

It sounds like you have the theory covered pretty well.

lettergram 6 days ago 0 replies      
There are few choices and/or some combination of the following:

(1) Start committing to Github daily. Make your own project and just go with it until you it's finished and learn what you need too.

My example project: http://austingwalters.com/openbkz/

(2) You can go through online courses in an attempt to learn more and become an expert, many courses are online. You could also start following blogs, read papers and replicate results.

If you are interested in maximizing learning: http://www.scotthyoung.com/blog/

(3) The past month I have been writing a blog a day, it increased my productivity and forced me to really master topics:

My explanation on blogging: http://austingwalters.com/learning-through-blogging/

I recommend blogging, videos, or writing stuff down for "teaching" others because it really helps you master a subject and helps you think of ways to use those concepts.

frigg 5 days ago 0 replies      
>Sure I know what a NFA is, but ask me convert it to a DFA and I'm lost.

Do you really think your average HNer knows how to do that? Or even know what that means and how you define it? I really don't think so :)

In my opinion you know plenty about computer science, certainly much more than your average programmer, but I understand how you feel. I think of myself as not knowledgeable enough and below average all the time.

You haven't mentioned your goal. Do you want to eventually work in any of the areas you mentioned? Or rather you want to learn this for your own intellectual curiosity?

truncate 6 days ago 0 replies      
I recently got out of college I'm going through almost same situation. What I've learned is you are eventually going to forget many things after some time, and you can't know it all. Secondly, knowing theory is one thing, making use of what you know is another. You can grasp all theory you want, but the main point is how are you gonna put that into use? A good job where you get to solve interesting problems may help. I couldn't do so. What I'm doing right now is, pick up a subject area and build things from scratch. I feel that this is working for me.

Also, I see a pattern that more you are used to studying more quickly you tend to understand something new. I believe its something do with reading habits. So don't leave theory completely, but keep a balance b/w theory and practical.

dominotw 6 days ago 1 reply      
I've learnt so much over the years and barely remember any of it. I wonder whats the point of studying all this if I am going to forget 90% of it in couple of months. How do people deal with this? Should I convert everything I learn into some sort of cliff notes for rapid reacquisition of the knowledge at a later time?
eshvk 5 days ago 0 replies      
On the Computer Science side of things. You are spreading yourself too thin if you say that you are interested in type theory, FP, Compilers, and so on. Each one of these fields is a discipline in itself. You could spend years and years acquiring the 'deep' knowledge of one of those itself. Don't set yourself up for impossible goals. Try to focus and selectively figure out what you want to do and how much "depth" you want to acquire.

> mythical stuff before it's too late.

Too late for what? What is the hurry?

marai2 6 days ago 0 replies      
Trying to learn Machine Learning stuff I realized I didn't remember much Linear Algebra from my college days.Im also a beginner in Haskell. So I decided to crack open my Linear Algebra book and start implementing what I was reading in Haskell.The result of this was that my Linear Algebra knowledge that was all hazy now feels like its etched out in my brain like a digital circuit board :-)And my Haskell calf muscles are in much better shape. Im still a beginner in Haskell but I can now walk fast in it instead of just crawling like before. Hopefully in a year I'll be running in Haskell too.
gte910h 5 days ago 0 replies      
> I lack 'deep', real knowledge and am desperate to acquire this mythical stuff before it's too late.

I mean, there are books on this stuff? Read them, do their exercises, and you will be fine.

I will say, most of this stuff now functions mostly as mind training. The specifics about low level computer systems, Big (O), parsing and compilers is the only part I see repeated use in my day to day.

>So knowing this, how would I best use say 8-12 hours a day, every day, to learn this stuff?

You should audit courses at a CS program taught near you. This stuff is chunky and the books are designed mostly for a classroom setting

vwoolf 6 days ago 0 replies      
1. Keep trying.

2. Books and papers are great, but you should also try to find a mentor / guide / teacher / expert to talk about the issues you're facing and what you're thinking about. Schools are organized the way they are for a reason, even if they often fail at their intended purpose.

aoeuaue 6 days ago 1 reply      
PS: I guess what I'm looking for is a 'work-out' type procedure. Like practicing to run a marathon, you work out and run a lot (I assume). What should I do in order to 'work-out' my CS skills? Musicians practice, athletes work-out, what do computer scientists do in order to improve problem solving skills and knowledge?

Unlike for athletes or musicians, practice in a knowledge field (like CS), seems a little ill defined..

yaur 5 days ago 0 replies      
Ship a product. More specifically, think something up, write it, ship it. Along the way learn what you don't know to finish it, but the first time you try this don't push yourself too hard. Once your done, post a "ShowHN" and we will probably tell you whats wrong with it.
gatehouse 6 days ago 0 replies      
I tend to be pretty mercenary, but I think that writing software in exchange for money will be the most educational thing you can do right now.
ma_mazmaz 6 days ago 0 replies      
When looking to improve your programming ability, it's important to ask for what end you are improving your skills. If your goal is to become a professional computer scientist, then you'll need to choose an area of focus. The field of computing simply has too many facets for anyone to master them all. If your goal is to learn, simply for its own sake, then all that matters is that you are enjoying the learning. It won't matter what technologies you use, or if what you're making actually works, so long as you enjoy it. In either case, you should choose something to learn that interests you. There are many highly sought after computer scientists, who specialize in computer vision algorithms, for example, who get recruited by companies all the time, despite knowing little to no software engineering and data structures. TL;DR: Learn anything, it will get you places.
jwatte 6 days ago 0 replies      
1 read abd understand other people's code

2 build, then rebuild, your own systems

After 10,000 hours of this, assuming you keep climbing rather than just doing the same thing over and over, you will be competent.

daralthus 6 days ago 0 replies      
Get an internship at a company you think you will like to work at, something with 10-15 people I think is ideal. If you can't find one yet make some small projects help some friends or build something at a hacker space and try again.
isuraed 6 days ago 0 replies      
Build something that is doable but will push your current skills. Choose a project that appears slightly beyond your current capability. That is the only way to truly learn.
cel1ne 6 days ago 0 replies      
Maybe try something pretty. Information visualization with http://d3js.org/Or make a game with cool AI.

Whatever you do, as long as there is a minimum amount of fun in it, you'll get better.And the more you know, the better you can identify what areas you have and/or want to improve in.

andersthue 6 days ago 1 reply      
Love what you do and keep doing it, after 25 years I still aknowledge that I am a beginner in some areas and an expert in other.

Above all, always have fun!

alien3d 6 days ago 0 replies      
there's not limit for creativity.Programming is about creative.Look around your and pick one problem and create a project to solve it. Ask people around your ,it is good or not.I suggest you to take part time in non computer department and see how /anything can be improved via software you make/build.
keypusher 5 days ago 0 replies      
Make a project.
InclinedPlane 6 days ago 0 replies      
Seems like you fell into the typical CS trap. The problem is that Computer Science is not software engineering, and the dev skills you need aren't going to magically fall out from between the pages of CS books. What you need is more dev oriented knowledge and experience/practice.

A couple books that are worthwhile: "Refactoring" and "Rapid Development". That will teach you a lot of basic skills in terms of development process and how to improve the design of real systems (warts and all). Also, take a look at the Architecture of Open Source Systems, it'll acquaint you with how applications fit together.

Also, take on some projects. Pick something interesting and work on it. Pick some small stuff then move up from there. I'd suggest in your case eventually building a compiler. If you're interested in AI, build some simple games and work on building AI for them. There is nothing more important than actually writing code.

       cached 24 May 2014 04:05:01 GMT