I hope I'm wrong about this.
Twitter? I opened an account a while back and didn't see any differences between FB status update and 140 character.
I think I still have a LinkedIn account but never use it. I have never found professional social networking tools useful. I think thats mostly because I don't really need to do a lot of networking as a data engineer. If my job had more of a 'social imperative' (e.g. sales, leadership, marketing, or freelance) I probably would use it.
Recently I closed Facebook as well as I was spending too much time there involuntarily, and I've been really productive since then. Every day I miss it less and less. Take into account that I used before and after Whatsapp as the primary means of communication among my friends and family.
I use LinkedIn for professional networking but very sparingly.
I started using Mastodon recently and participate there but maybe a few times a week.
I am on a few programming Slacks and fairly active there. That seems to hit the sweet spot for an old IRC user like myself.
What worked for me was a lot of self reflexion. Understanding way I was angry in the first place.
I found out that happiness is just the way of approaching things. That the world is just a projection on your head. An interpretation of the five senses + state (learned experience mostly).
Changing the input, just mades you an slave of the environment.Changing the state, gives you back control over your feelings.
If you reflect about why the feelings appear in your mind that generates stress, anger, you can start accepting them, welcoming them, until the point you no longer get anger, or stress...
For me, it become a routine. A) a way to trigger the self reflexion, or consciousness while stress happens B) find the reason for the feelings.
Example: People don't understand what I say, and then do other things. It bring up fear, rejection, mostly coming from childhood. Ok. I converted an unknown unknown into a know unknown. I excuse my self and decide if better communication skills is a task that I am willing to commit learning, on that case I do, or I just acknowledge that I often going to have mistakes and laugh about it.
Time over time, I was able to have happier live. Even enjoying the sadness that sometimes generates things not going the way I wanted at work.
Some of it involves a different worldview. Changing the world becomes both less important and more possible. It becomes easier to prioritize important things in life like caring for loved ones or for others who need help. The conflict of the day, whether political, personal, or work related, doesn't endanger the purpose of my life. The worth of my life is no longer defined by "success", power, happiness, or winning.
All this ties back, of course, to the Christ of the bible and His teachings. Ecclesiastes is also a powerful book when I'm feeling cynical. I honestly feel both Christ and Ecclesiastes are at time cynical and curmudgeonly; the positive examples are helpful to me. Reading and praying (about the reading, about life) probably serve the same purposes as the meditation techniques espoused in this thread, but it is more than just body hacking.
> Talk to people helps. But one person can only bear with you for so much. Even though it is a good friend/love you very much.
Talking to my church family and to a much greater extent God doesn't have the same issue. A healthy church family is a bigger group, all of whom are dedicated to your health in every way. And God has more than enough attention and patience for me.
In general people don't appreciate talk about religion, but people are advocating cycling, meditation, yoga, and major career changes. I hope a suggestion to read a bit of the Bible, say a few prayers, and trying something new Sunday morning isn't far off base.
For what it's worth, I've prayed for you Steve, that you can find emotional health and success in your life.
My advice is see a therapist on a somewhat regular basis; we are quick to ensure that we always keep our bodies in check and healthy but rarely do we consider that perhaps mental therapy is also something we should do regularly. You've said it yourself, talking to people helps; my suggestion is see a therapist, it is their job to help you gain introspection and be your guide; and in general give you a safe space to express how you really feel and what's activating it (good or bad, ups and downs). It's helpful to have multiple people that you can lean on for this thing, a therapist might help guide you towards creating a community of people that you rely on.
I was dealing with similar situation like you. I had a hard time to find peace after work at home. I was looking for advices around and once came across an article(I can't find the article) which recommended that you should not stop doing activities which you liked as a child when you are an adult.
When I was thinking about it, that was exactly what I did. I stopped doing things which I enjoyed when I was a kid. I used to play a lot of Age of Empires and loved that and did competitive swimming. So I started with the swimming and it helped me both mentally and physically. After a year or so, I started slipping back to the same routine as before and not even the swimming was helping. I tried to do some research on the Age of Empires thing and installed it to my laptop after 10 years or so. Since then the strategy for me in critical situations is:
1st - Go swimming/biking/running, try to sweat it out.2nd - If 1. does not work(happens like once in couple of months). Play some freaking Age of Empires for 6+ hours straight3rd - If 1. and 2. fail, talk with people
Firstly, this sounded really silly to me and I think once I have kinds this won't even be an option, but in my current situation this small hack works pretty well for me.
Stop trying to fix the symptoms, fix the cause. Why does work of all things make you this angry? Is it a lack of control? Would you be happier running things or doing consulting? Is it the project(s)? People/a particular person?
Stop trying to get rid of the cough and start trying to get rid of the illness. It is not normal to get so angry at work that you bring it home.
You need to find a new job, plain and simple.
If it's your 10th job and you are feeling like this still, you have to figure out if it is bad luck (it does happen) or if it's something with you. Either way, it is sort of you, since you managed to keep finding and stepping into jobs you are unhappy at. Certainly, a hint or two during the interviewing stage was overlooked.
Melt down at work in a spectacular fashion
Engage in a campaign of passive-aggresive attacks on the team causing your anger, explain it as an attempt to use negative feedback to get their working habits to change
Never admit your mistakes; make sure any mistakes you make regarding those teams' responsibilities are swiftly swept under the rug
Conflate your productivity with the company's: anything that slows you down is bad for all devs & the business's bottom line
There's tons of things that happen at an employer that are wrong, and that are stupid and that are complete nonsense.
There are things that you must simply let slide. Things that truly do not matter. Very few things REALLY matter. Very few things, and none of those things are the day-to-day work life.
Speak to a therapist regularly for a few years. One that specializes in trauma survivors.
You might also try working on this nutritionally. I have recently had good results with upping my consumption of vitamin C to get excess anger under control.
I think much of the bad stress we get in jobs comes from our deeper understanding that the work is pretty pointless or simply unimportant to us. The idea of that (pointless) thing being who we are for most of our waking life is maddening.
Also, few of us are in high status positions at work (simply because of the typical hierarchical structure) even if the job or company is prestigious. Being in a low status role creates significant fatigue, stress, and anxiety, and is often the hardest to shake off at the end of the day when we are around true equals such as friends or loved ones.
So the best thing to do is to find work that feels more like play. But if you can't manage to do that, at least force yourself to play a bit after work to take the edge off. I recommend against making it about food or drink, since indulging provides a psychological salve that mutes the stress but does not truly evict it from your consciousness the way play does.
All this helps me "recover" from a day of work and to feel good at home, knowing that I won't be suddenly interrupted for work reasons.
Again, it might depend on your specific case. If a work was making me angry I would simply quit, but maybe it's not an option for you.
However, I need to ask you a very serious question. You don't have to answer in public because it is a very personal thing. But, what do you mean by moments when you want to snap? And, when you say 'the edge point', what are you on the edge of?
If it's anger, have you ever thought of anger management therapy?
Or, if you are thinking of hurting yourself, please don't.
If you need someone to talk to, my email address is in my profile. I doubt that I know you in person and I am open to listening to anything you need to say.
Be safe and peaceful.
Anger is not a primary emotion. It is a secondary emotion. It cannot exist without thought. This is fact.
Anger is a response to unmet expectations. You expect and feel you deserve some "state of the universe" whether it is success, recognition, remuneration, respect, or basic human treatment. You then do not receive that thing you expected and believed you deserved, had a right to, earned, or very much wanted. That mismatch is where anger comes from.
The first way to stop anger, is to stop it from growing. If you know where it comes from, then you can change your circumstances or your expectations. Your body is presumed to have overcome an invasive bacteria when it can stop the invader from net growth. The same thing works for anger.
Anger cannot remain unless you replenish it. If you do not feed it, it does not grow. Do not review the thing that "made you angry" over and over. There is an brain hijack where you get a short-term emotional high, and find it harder and harder to resist replenishing the anger. You can't tell yourself "don't think of pink elephant". Instead you can say think very hard of "a". Read "how to live on 24 hours a day" for a good guide on focus mind on single topic.
If you don't like living in a world that makes you angry, try to make it a world that does not make others angry. If even a small majority has this as their process, then you get to live in a world where others help you to be less angry, less unfulfilled, less disappointed. You might find that fulfilling.
After you have the mental and emotional roots resolved, then you can look elsewhere.
Also, stay away from prescribed hormones. They hack the wetware. They make your biology fight your mind, instead of being its servant.
Best of luck.
Anger is caused by frustration is caused by desire.
People who dont give a damn about their jobs clock out at 4:56 and rest easy. The people who burn out or 'snap' are the ones whom take the most pride in their work. Learn to care less about your job.
If you already have the emotions built up, then simply recognize that fact and take them apart. Writing letters you dont send works pretty well.
I paid accident claims for over five years and a lot of my coworkers found this to be disturbing work. But, among other things, I had been a military wife and raised two special needs kids. It was rare that I took any of the emotional stress home with me. I stressed about making quota every day, but most of the run of the mill accidents did not get a rise out of me. Once in a while, I would read something particularly gruesome and have trouble with that. But I think this was on the order of once a year or so.
Neither choice is necessarily better. It's extraordinarily difficult to prioritize both - the entire point of a priority is to tell you what isn't important. I'm personally biased towards friends and family, but if you have an important mission to accomplish, go for it.
It's just a psychological agitation. Even normal friction, etc. can agitate a physically sore spot, and you should just let up off it to let the agitation subside. Same idea, works great for me.
I actually pretty much do that every day after work to some extent or another, but I'm only really serious about not reacting to anything when I really have some anger/agitation/whatever that needs to dissipate.
> The Irritability Cure: How To Stop Being Angry, Anxious and Frustrated All The Time
It does a good job covering various reasons you might be upset, e.g.:
1. Someone did something they shouldnt have done.
2. Someone was hurt, harmed, humiliated, embarrassed, offended, disappointed, or otherwise inconvenienced by what was done.
3. Some person or persons (other than myself) were unilaterally responsible (i.e. to blame) for #1 and #2.
4. The offending person or persons should acknowledge what they did wrong, offer to make amends, and/or be punished.
Then various things you can try to think about to short circuit being upset:
A) Failing to recognize how your own judgments, evaluations, and standards might not be valid for other people.
B) Failing to recognize how your own actions, past and present, may have contributed to what happened.
C) Justifying your anger, instead of looking within yourself for its internal causes.
D) Retaliating or seeking revenge, instead of openly and honestly dealing with what happened.
I know lots of advice in this realm ends up being things like stop and breath, exercise, use religion and forgiveness, but none of those things really do anything for me. If you can make a chain of logic to the bad result of being upset and then break the chain somewhere with one of those, I find that quite effective.
The fact that you are reaching out to people is good. Don't stop. Find the people willing to listen and keep talking until you figure it out. Some people can't handle it and they will naturally peel away. Don't panic when this happens and don't blame yourself (or them) for having a real issue that you need to work out.
Keep reaching out to people, not chatbots. Soon enough, you will have sorted out your true friends (and you will also make new friends). The work you need to do lies in finding out who you are through the eyes of other people.
One more thing, don't do this on the internet. Go meet people in person.
Finally, we all need human touch. If you are not getting that, you will be angry because it is a need we all share. When you get touch, chemicals are released in your brain and you feel better. If you can't get this through other means, book a legal massage once a week. Thai massages are good if you are experiencing anger. I hope this helps!
Having an enjoyable commute helps me a lot. A long walk or pleasant bus ride (with optional music) is time to process emotions and to create a mental break between work and home.
Meditation can also help -- not as a solution at the moment when you're angry, but as a habit that can improve your mindfulness and ability to deal with your own emotions.
My last resort is distraction - reading a book or watching a movie or TV show I know will be engrossing. An hour or two later, the frustration has usually dissipated.
That said, if you're experiencing rage that you can't control, or are on the edge of "snapping" - whether into rage or depression or whatever - I agree with the previous poster who suggested you seek mental health services.
A good therapist can help you come up with better outlets and coping mechanisms, or help you identify what in your life you need to change to avoid circumstances that trigger such frustration. It may take a few tries to find someone who works well with you, so don't get discouraged if the first person you try isn't a good fit.
Other folks have mentioned therapy / counseling -- which I highly recommend as well. I've gone to a marriage counselor with my wife for years and plan on doing it for the rest of my life (albeit only every 2-3 months now). You can take your notes to a therapist and make your sessions more productive.
Other folks have suggested switching jobs -- which might be a good idea. If you do have to switch jobs, you'll be able to make a more informed decision about what works (and doesn't work) for you in a work environment.
try convincing yourself that you're not your code, you're not your work. You as a person is much more than just what you're paid to do. Perhaps consider going to the gym after work for 30-60 minutes, exercising helps improve your mood. I also think hobbies that are completely unrelated to your job helps keep your personal life separate from your work life. Personal belief the tech industry overall has a not-so-good culture where people expect your job to be your passion, and they expect you to be live and breath code outside of work. Try leaving that mentality behind, as long as you perform well at your job, as long as you have the desire to improve, it doesn't have to be your passion. I typically do calligraphy and music compositions after work, which are btw very meditative hobbies.
Hope that helps.
Otherwise, think of stress like your email inbox; a stressbox. You can zero this out on a daily basis by being honest with yourself about what is important in your life.
If it's not important, delete it.
If it is important, archive it and come back tomorrow, wait for your brain to detach the emotion from the event. Anger is a symptom; you need clarity to figure out the cause of the symptom (the event).
If it's someone else's anger causing you stress, mark it as spam and unsubscribe; sometimes this requires telling someone to stop being negative around you.
If I am angry or upset in any way I first think about it. If I cannot understand the anger I let people know what I am feeling and that I might need to be alone or just need some silence.
If, then later, still aren't any wiser about what I am feeling I start analysing my emotions. For me it helps to read philosophy or art (movies, music books etc). It is a way of looking at things from a different perspective and this can help me reflect on what is going on.
However, I never have the intention of getting rid of my emotions. Rather, I have an interest in my existence and metaphysics in general. So whatever comes of it I am fine with.
So, my advice is to let people, including yourself, know that you are about to "snap" don't try to not feel whatever you feel. Not everything has to or can be resolved.
1) Make sure there's a buffer before you get home from work, or if you work from home, create a buffer. During that time (could be as short as a half hour), do something that's not super stressful and not related to work that gets you thinking about stuff you're interested in. For awhile this was listening to audio books on the train ride home or doing crossword puzzles - as long as it decompresses you a bit.
2) Make sure you're sleeping enough. Fuses get short when you don't sleep and this fixes a lot of things.
3) If you're not working out or moving around, find something that you can do. If it's competitive maybe that helps. Squash, tennis, soccer league? Something that makes you run like crazy and gets your heart rate up.
4) Start work on that thing that's screaming at you from the inside because you're not doing whatever "it" is. Maybe something there - an idea, a project, a thing. What's been keeping you from working on it? Maybe life or your job seems to be preventing you from doing it? Start small. Talk to a few people and keep the fire burning. Learn more about it so you can start to think more strategically about approaches (or rule it out)
If you wrote it all down, do you think it would make logical sense?
Sometimes I'm just over emotional. Sometimes the place I'm working isn't a good fit. If it's not a good fit, I also find that my emotions get out of control as well.
If things are building, figure out what is building them and try to change that. Little things can make someone crazy for a few days, but if it's every day, it might be depression or burnout. If your stress never goes away and just keeps building on itself, it's likely depression or burnout.
Talking to a professional might help, very least it feels like you are taking action to make it better. They might be able to help you frame and understand what is bothering you.
What varies, in my experience, is whether and how much it is acceptable to discuss (and thus process) these emotions in the workplace itself. Being able to say "I'm sad / angry / joyful about X" makes a world of difference.
Once I became aware of that I started being able to remedy it. To start with I actively sought and encouraged discussions of the emotional components of whatever work I was a part of. Retrospectives were a great way of having a structured framework for these discussions (as opposed to giving the impression that I wanted to psychoanalyze my colleagues or vice versa).
After a while I noticed, too, that management in some places actively preferred the dehumanizing effect of making emotions undiscussable, because it afforded easier control over people. I started avoiding these places and selecting jobs that accepted and expected me to behave as a human adult.
I think unless you're in a field where lives are at stake, it's well warranted, and it's noble what you're doing. For the vast majority of us, it's a job. You have one, you don't. Most of us are smart enough to get a new one. You do your best, you do it at work, and keep it there. Note down things on a notebook, things that you can continue on the following morning.
Trying to be as honest, upfront, easy-going and helpful, the kind of person you are at home, also helps bridge things better. That way, you don't need to be a different person, and switch between them.
Generally, just take it easy, you're not out saving the world. Do your best and carry your bag home, not your baggage.
I don't think music will be particularly helpful, but meditation, specifically mindfulness meditation, will be most effective when you are at the edge. Try practicing for 10 minutes a day, and then when you are on the edge try your best to really feel the stress and experience it. Your goal is to build your tolerance to it, which you can only do by not running from it. It's just like working out: you need to practice and you'll get stronger. The 10 minutes a day of practice when you're not on the edge will help you build up to being able to be truly present when you are on the edge.
My short answer would be to find a new job. I've never had a job that caused me so much stress it caused issues at home. Sure, there have been times when my boss did something to really piss me off and I got angry, but those are isolated incidents.
At one of my jobs I was promised something that never came (I should have gotten it in writing). I asked about it every year, until it bothered me so much I gave them an ultimatum. They refused, I quit and moved on, and am much happier in the end.
My wife have annoying co-workers and customers that piss her off too sometimes. So when we get home we ask each other how the day has been. It usually takes 30 - 45 min to cover everything while we're cooking dinner. We aren't trying to solve problems for each other, unless asked to, we just listen.
It really helps to be allow to be vocal about the emotions of work, and it helps the other person to understand where any anger is coming from and where it's directed. If we didn't talk about our day, my wife could easily assume that I'm mad at her and vice versa.
At a point where I was having a rather bad period at work, my wife insisted that I listed three good things that happened at work that day, that remove the focus from the negative things.
I like rock climbing as a workout. I specifically prefer that because it requires me to be 100% mentally engaged in it while climbing. It is a combination of meditative ways of thinking as well as physical exercise and blocks everything else out. Anger during climbing is utterly counterproductive. It doesn't de-escalate as much as it distracts and focuses.
And most importantly, it doesn't rely on transferring my frustration and anger to others...which is a bad habit of mine.
Look for the clenching of your emotional fist. It happens before you say or do anything, and if you can recognize that and decide to delay a response until after you have time to think about an appropriate response, then you will be much better off.
It takes practice. For me, the positive outcomes from waiting reinforced the waiting behavior. I just know if I wait, it will always be better and I can respond in a way that won't make the situation worse.
For emotional health, it seems rather arbitrary to draw a line between 'at work' and 'at home'. The only real difference may be in what those environments consider acceptable, but you can't just switch between intensity levels. Emotion is, kind of by definition, not fully within your control.
2. Quit your job and work at a place(s) where you don't have to think. In fact where you are supposed to not think. Deliver things. Be a cashier. Rinse. Repeat.
Mike Rowe of dirty jobs said the happiest people he ever knew were those he featured on DJ.
Struggle financially. Earn your vacations and personal purchases. Make your time not idle like retired/unemployed do.
These eliminated my anger.
Tango is rather slow, salsa is more active. Capoeira is more like a fighting dance. Street dance is similar. Show dance is top sport. Ballroom or latin dance styles like salsa have a strict format. There are so many different styles like Lindyhop, real fun, but I recommend that you start with the more popular ones.
If you don't like that, there are more expressionist type of dances, like biodanza or five rythms. These are more like workshops, guided by a teacher. It's not about doing the right moves, and anyone can join, even those with no rythm-feeling. And you can dance in your own place, curtains closed, music loud. Dance like nobody can see you, or dance when nobody can see you if you're too embarrassed.
Another tip is improv or theatersport. You can put a lot of agression and energy in it. In general it's great fun and it has helped me overcome several anxieties.
For me, when I dance or do improv, after five minutes I've forgotten all about the day.
Since you've been working for many years, practice this exercise when you start feeling angry - think of a time in the past where you were also angry and think of the outcome of that episode. You'll find that the emotion really doesn't help the situation and have to assume that it won't help the current situation either.
I'm not saying that you should be a Borg at work - it's good to feel emotions. But you're going overboard and eventually it will harm you (or already has).
The two main practical steps I'm taking right now are (YMMV):
1. Save/invest 50% (or as close to that as I can manage) of what I take home. This is about more than just living jobless for a month for every month I work. Barring catastrophic expenses, if I keep investing this money over ~14 years in a fund that averages 7% return a year, I will make around enough money to support my lifestyle passively, at which point a salary stops mattering and I can financially afford to leave any job, any time.
2. Build my resume with "extracurricular activities". In my case I'm earning an online master's degree on top of work (years of step 1 helps me afford this, and my program is relatively cheap). This makes it easier to find new, interesting work in advanced fields (and it's also just fun to constantly learn new things).
This is in contrast to some peers who have a professional personality (which is still gemslwves, but with restricted access to core identity) and a at-home personality.
Separating the two and turning one on/off at will is the approach I am striving towards.
Also, an hour on exercise bike at home is good.
Benefits of above activities was/is - I cared more about food and sleep.
This sounds like a bad assumption about meditation to me. In my experience, regular meditation practice helps me keep that edge further away. Negative emotions are not useful to me or those who interact with me at work or at home.
I know. I know. That might sound weird and all. But, it is the only thing that helps me. I grew up a very calm person but after many years in the military and a couple of combat deployments I seemed to develop a very strong aggression issue. I'm calm most of the time, but when something gets to me I can get into a deadly loop where it just gets worse and worse. It starts to feed on itself. Then, my wife can say something small and my internal monologue gets darker and darker and whinier and whinier.
So, yes, don't let it get to the "edge point"...that is hard. That takes a long time of understanding yourself (talking to the universe or journaling is the best way that I feel I make progress in that area too.) So, the first step when you get to the edge is to return to being happy. It doesn't matter what it takes. Watch a stupid video on YouTube. Just get back to a place of "happy" even if just for a moment.
Lighten the mood. Then, start journaling. But, the goal of the journaling shouldn't be whining: "why me, oh why me??" I've done that a lot. It is really not helpful at all. It makes it worse over the long-term.
So, what do you journal/talk-to-the-universe about? You start investigating who you are and why the current situation is making you upset. Start asking yourself: why am I angry. But ultimately, the goal is to drill down until you find the good in everything. For example: "Why am I angry that Joe is fighting me so hard with what I know is a bad direction as far as design patterns is concerned? Why do I care at all? Because I want to built software that I'm proud of. Don't we all want to build software that is well built and a meaningful creation? So, what Joe doesn't want that? Of course, Joe wants that as well. We just have different ideas about how to make the best software possible. By why am I so fired up and angry about it? Because I don't want to believe that I'm coming to work each day for nothing..."
Just keep going...even 15 minutes can make a major difference. I've had times in life where it took an hour and sometimes when it went on for over 6 hours. There isn't a goal in terms of what you are getting at. Productivity is certainly NOT the goal of the exercise. Just talking/writing is the goal of the exercise. In the end, my wife is happier and I feel that is the larger goal. I want to be kind to other people, especially my wife, rather than burdening people with negativity.
I will recommend to read just few books for a start1. Dao - Lao Tzu2.The Willpower Instinct - Kelly McGonigal 3. The Art of War by Sun Tzu
you are not going to reach self-knowing or self-control using other people's thoughts. Everything good comes from the walked path, It takes time and practice.
And the way is not only to evolve from inside but from outside too, so "workout" daily is also important part.
Every job has its ups and downs. Though I agree that if you constantly feel down time, that probably the time you take a break.
What I find hard is that no single method works for me for a very long time. (Probably because it can trigger the bad memory? ) So I need to find a new approach when I find the old one does not work any more.
On top of that ask yourself what problems do you have in your life that you aren't solving?
Being angry is a symptom of your worldview not reflecting reality. What situations are causing you to feel that anger?
Last but not least, go see a good therapist. They're paid to understand your problems and help you get better mentally.
Once that's worked out, I make sure to give the anger back to the person who's sourcing it. If I need to check myself by asking the person questions, I try to do it. But other than that, I really try my best to reflect that negative energy back at its source. And while I prefer being overt, I will be covert when the situation indicates that is necessary.
Or as another guy expressed to me, you need something like the pressure relief valve on a pressure cooker to blow off the steam a little at a time, so you don't explode.
 Sorry I can't find it anywhere
Here are a couple users who spoke about it
"I can't! I live far away from my job." Yes you can: get out on a bus/train/whatever stop before your home. 1 hour walking is ~5 Km.
"I drive home bro." So park it 5 km before your work.
But one other thing that works for me is long walks. I walk until I'm no longer angry, and then I turn around and walk back. Eventually, I get worn out, both on the topic and physically.
Nothing helps like talking to yourself. Build narratives and counter narratives and try to analyze the situation at hand. It's like taking a third person perspective for the sole reason of analyzing what happened, and why it happened.
Try to avoid getting into solutions mode. Don't even try to think about how you can improve or change the situation. Just understand and spend some time thinking about what exactly happened.
The only answer for me has been to find better jobs, or, better yet, taking long periods of time away from work entirely.
What would happen if I lost my job?
What would happen if I were to die tonight?
Sometimes it helps to realize that nothing much really, I mean really, matters - ideology, opinion, software, even my own life.
Sometimes, 'Pearls before Swine' helps to put things in perspective! 
A workout could be good. Martial arts class, intensive cardio, something allowing you to express rage and get physically exhausted in a controlled, harmless, socially acceptable way.
If not, figure out what's wrong. Could be that you need to change jobs, get extra or better sleep, vitamin-d (helped for me). It could also be that you need some professional help. There's no shame in that.
That isn't easy, but if you can forgive their action/reaction and don't focus on the person, you can start to separate those feelings out.
Take time in your responses to others - don't feel you need to respond to that email until you've had time to think it through, sleep on it if needs be. Do what you can to diffuse the situation.
But first and foremost question if this is the right company/culture for you. I've had working experiences that have upset me, but talking with people at the company actually helped to bring about great change - so I didn't need to leave (which was an option), but if it hadn't I certainly would have left, and I'm certain I would have found something new that I loved. In the end I did move on (for other reasons) and have found a position in a very supportive company - the benefits to me personally are huge and I'm sure they also positively impact my family and friends. Don't 'wear' the pain.
If all jobs make you feel like this then the problems deeper, either find something YOU want to do, like making a chatbot that would really help in this situation or maybe just forget about work, take early retirement, go see the world.
Life is too short to waste it on something making you angry.
(I'm curious if people here chime in to say this is a bad idea for some reason.)
Hope it helps, it sure has helped me!
If not, find a job that doesn't stress you out?
Shortcut - crack up a beer or two when you get back home then think about happy things.
I was at a place that paid me very well but had very low standards for hiring. The interview was incredibly easy and, in retrospective, that was a big red flag that I failed to see. After that, if I get an easy interview I will pass on the opportunity. An overly easy interview means you will work with people that don't know wtf they're doing or how to recognize your talent/contributions.
You spend a lot of time at work, try to work at a place that doesn't drain you.
My answer, when I've been in a situation like this, is to literally talk out loud to myself about what I value and what I care about.
We only get upset about things that we care about. And we only get the most upset about the things that we care about the most.
I had a much more angry, frustrated life when I was a professional violinist than I've ever had as a software developer. When I would play some bad gig for a few bucks and some clown conductor would show up and ruin this piece of music that I spent my life studying, it would make me rage. Or if one of the other violinists in the orchestra I was sitting next to was fucking up and ruining things. . . again, rage. WHY ARE YOU RUINING MY ART, YOU SICK, IRRESPONSIBLE FUCK?!
Or if I was playing a solo with an orchestra that wasn't so hot. Ugh. Why are you doing this to Brahms?
It's genuinely hard to figure this out when you really care about something.
I ended up quitting music as a profession and going into software. I care about the companies that I've worked for, and I care about my role in that and the quality of the code I write. But it's not my life. And I still play my violin with a few groups in NYC. That's not my life either.
I think it boils down to understanding the difference between the means to an end and the end itself.
If you love software the way I love Brahms, great. But don't expect to get that love expressed or respected at work. Recognize the role that work has in your life. It's a means to an end. It's not the end itself. It's a way to get to do the things you love to do with your family.
I decided a long time ago that doing the things that I love the way they should (in my opinion) be done, was up to me. For me that was music. And to a certain extent it has become writing software.
In my mind, a job is a thing that you do, and do well and passionately, for the purpose of supporting the things that you really care about. Maybe it's family, maybe it's writing a novel, maybe it's being a dancer. Who knows.
Again, I want to be careful about the way that I phrase this, but it sounds to me that you have a priority issue.
You need to decide what's really important to you. When you figure that out, I suspect everything else will fall into place.
I'm sorry you are going though this, and I hope you come out of it in a better place. I could be totally and completely wrong, but I don't think there's any little ritual that's going to fix this. You just have to make decisions about what is worth caring about.
Is it your current job, or is it your family?
Anyway yes there's a component to anger that can be caused by shortcomings in yourself. And yes it reflects a frustration, a disconnect between what you want and what the world actually is. What has to be sorted out is whether "what you want" is reasonable to expect or not. Sometimes you're asking the moon and should accept you're not going to get it. Sometimes however, anger is your tough big brother, stepping in to stick up for you in a shitty and unfair situation. In other words if "what you want" is to be treated with basic human dignity in the workplace, that is absolutely not too much to ask. And again I'm wagering, the problem traces to one or two specific people. Perhaps you need to defeat them in some sort of battle (not physical, or you're going to jail) for them to respect you. Perhaps they annoy everybody else on the team too, and should be removed. Thus I'm coming back full-circle to "maybe it's not the job per se." Maybe your job is precisely the thing you wish you could be allowed to do, if only it weren't for these one or two assholes. Deal with the assholes. Defeat them if you can (and anger probably won't help you here... we're talking straightforward but discreetly sneaky workplace maneuvering) or retreat (leave the job) if you have to. Meanwhile all the other advice still applies... deal with your parental baggage, your diet/weight problem, your expectations of life, your emotions, etc. so that you're less vulnerable to this sort of thing (being made angry).
Edit: and by the way "your diet/weight problem," if you have one (I'm baldly asserting it but I mean it to be taken as pure conjecture) may be both the cause of, and caused by, the anger. Stress makes the body store calories. And then carrying those calories around in the form of fat, subconsciously reminds you of all the other times you were angry and stressed, and increases the chance that when presented with the same or similar situation, or even a dissimilar situation, you'll react again the same way.
If this is happening regularly then it's an indication of a hostile workplace.
Work should be a pleasant experience. It's not a vacation, but it shouldn't drive you to anger on a daily basis.
Also meditation will still help but what you're taking about is a broader and deeper issue with how you process frustrations and anger.
That needs professional help. No shame in it - it's quite useful! It's not like they teach it in school is it?
But I've noticed over the years that, often, when we ask "What is the HN for XYZ," the answer often turns out to be ... HN.
The quality depends on the speaker though. Some venture into TED Talk territory, while others are more focused on a series of publications.
I have not found another talk series at Cornell (say Chemistry, Computer Science, or anywhere in the Life Sciences) that is consistently as good or broadly interesting. (ex. all of those talks would make sense to a condensed matter, astro, accelerator, elementary or bio-physicist; note that accelerator is about how do you accelerate the particles, elementary could involve what happens when they collide; Cornell has strong departments in all of the above.)
Now they do not have video and slide links for them, but peop
Anyone with a web server is of course free to just block my attempt to download their page, via a user-agent filer or any other method.
Edit: IANAL so I have zero idea how law is actually applied around the world. My view is just that "how on earth would it be possible to enforce a contract I never saw?".
My view of course also says that I'm free to download the data at
Because they exposed it at a public http endpoint. I'm not so sure everyone (including somecompany) would agree with that. I think it's still perfectly reasonable that I'm allowed to do that - and that the restrictions that may apply to material I reach that way is only related to how I use it. Them posting it publicly on the internet (even if it's not linked) is the same as them having it on a billboard. I very much doubt that's how law works though.
A scraper company, funded by magic money (Knight Foundation grants) and $1m of VC, convinced a (UK) Government department to pay them to scrape our site for some analysis the department wanted. They'd never contacted us, never asked for permission, never asked if we could supply the data. Our company was bumping along at this point and having to lay people off. Income from a nice lucrative Government contract would have kept a couple more people in work.
The scraper company's FAQ was, in my view, full-on unethical:
> "we check the robots.txt file. If the site permits robots in general to scrape their site (NOT just GoogleBot!), then we will do so. We will make no effort to look for other terms and conditions as well."
You will ostentatiously "make no effort to look" for T&Cs in case they prohibit the significant contract you're about to sign with the Government? Whoa.
So how I feel about web scraping is simple: "don't be evil". If you're diverting income or traffic from the original site, don't do it. If you're genuinely adding value, go for it, but be open, be prepared to work with the original site, and be prepared to accede to their wishes.
The simple formula is: "Create more value than you take." - read it as "Create more value for those whom you take from than the value you actually take from them."
If you scrap sport results from a sports page and create a competing product, as#hole move, don't do it and you will sued anyway.
Scrap sport results from a sport page, aggregate them into nice charts, but for detailed inspection the user has to go to the source (which you link to and want the user to use), you are good to go (from a product point of view, legally i.a.n.a.l).
The internet is not a zero-sum-game. Building on top of each other, even on data on top of each other, will lead to a better ecosystem, to more value for every participant.
My own take on it in general is that for personal/research use I'm not morally opposed to scraping, even when it's in violation of the ToS, with two conditions: that it doesn't place an unreasonable burden on the server, and that it doesn't invade people's privacy. The legal significance of the ToS is murky at best (disclaimer: I'm not a lawyer) but if the site asks you specifically to stop scraping them or puts up a technical barrier you should stop (morally and, in the US at least, legally: see craigslist v 3taps)
Instead of violating the ToS we have business contracts with each company, that give us the permission to scrape. We use this as a way to take control of integrations, and put the ball in our court, as most of these companies have little to no technical expertise or resource. By doing this we can create an integration as quickly as we want, instead of waiting months or even never managing to get one if it were to be done through an API.
Scraping can be a powerful tool in this respect, make sure you have permission, but ToS saying no scraping doesn't necessarily mean you can't get special permission.
You don't really get to decide how somebody else's data gets used.
Using your sports stastics example, this will become a grey area as writing becomse more automated, but at the moment, a writer gets a 'statistic' like a score which is made publicly available. There are no limits on using that statistic. But you didn't automate the process of spreading the stats, you, in theory found a fact and wrote about it.
This is different from just giving a feed of stats, or linking through a bunch of services.
Technically, sites can do anything they want to make scraping more difficult. But from the moral (and, I hope, legal at least in the future) standpoint, scraping should be your right.
* many good products/websites are based on scraped content
* many good products/websites are not feasible because of scraping limitations and limited access to data, even publicly funded data (e.g. no real estate ads with noise overlay despite the EU mandating noise maps in all member states; member states have prohibitive access rules for these maps)
* "rogue" scraping causes problems for many websites; blocking it creates problems for legitimate users of various proxy/anonymization services like Tor. Captchas are not a long-term solution, good programming defeats them.
I'd welcome a simple technical solution for scraping that takes into account the interests of site owners, other publishers, the public. The sooner publishers get together and build one, the better for them.
Data yearns to be free, stop fighting it!
It's what you actually do with the information that matters. For example, republishing or otherwise distributing information when you have no right to do so may be an ethical and legal issue.
Doesn't really matter how we all feel about it. If you hit their radar, they'll go after you. Can be expensive, whether you're in the right or not.
You're more likely to hit their radar if you're trying to make money. I suspect you're using affiliate links, right?
There are some websites whose primary business model is providing content in exchange for something: a subscription fee, or advertising eyeballs. They have a very strong financial interest in your not scraping their content and providing it to others on different terms.
There are other websites who make some content available and explicitly authorize people to use it: various datasets and RSS feeds and such.
And then there is a wide swath of websites that have adopted generic TOS that prohibit scraping, or they prohibit it because they haven't given it much thought and can't think of any particular reason off the top of their heads to permit it.
So what you really want to know is what sites in the third category would consider a sensible scraping policy, if they had to give it sufficient thought.
In other words, if they don't just default to a prohibition because it's already in a TOS template or because they haven't thought it through, what's the rationale for either blocking or not blocking scrapers?
But in general, I'm sympathetic to all scrapping efforts that provide benefit to people for free.
But I do have a problem with scraping other sites to detract traffic away from them. Perhaps if its for data analysis. Also, I would be very careful as some governments have very strict privacy laws (EU, for example) and you never know what you are scraping.
But one of the other problems is that web scrapers can be used for very nefarious purposes see this article on web scraping attacks: https://www.incapsula.com/web-application-security/web-scrap...
Of course there are people building services that scrape certain sites that appear to be off limits to you.
Those people scraping sites that are explicitly prohibited either:
a. are breaking the rules, potentially the law if it's explicitly prohibited in a ToS, and will eventually have to deal with getting banned, or sued. It's quite a gray area legally but here are some laws that could be used against you:
Violation of the Computer Fraud and Abuse Act (CFAA).Violation of California Penal Code.Violation of the Digital Millennium Copyright Act (DMCA).Breach of contract.Trespass.Misappropriation.Source: Linkedin v. Doe Defendants
b. have an agreement with the website owners allowing them to scrape certain portions of their site.
c. scraping data with no rules concerning it.
For example, Facebook. has a ToS for scraping:https://www.facebook.com/apps/site_scraping_tos_terms.phpAt the bottom there is a form for those that want to get permission to scrape the site.And their robots.txt is heavily used to control crawlers with User-Agents they know. http://facebook.com/robots.txt
It's rare you would run into legal issues, but possible. The question is whether it's morally okay for you to scrape any data you want.
Though legally it might be punished, so you better don't reveal yourself.
And if you scrape, just don't be a dick about it. Don't hammer the site with your buggy scraper doing 1k hits per second. And don't resell the data.
Chloe has expended effort/energy/resources to gather and collate information which provides value in some way to Sam.
Sam has invested nothing, risked nothing, and expended no effort with regard to that information.
Chloe decides, in her own interest, to give the public access to the information.
Does Chloe have a moral right to try and impose conditions on that access?
Does Sam have a moral duty to make a good-faith effort to abide by those conditions?
My answer to both of these questions is yes.
Not happening. Sports data is too much valuable. High sale value.
Don't give away for free what you could charge a lot of money for.
That does not say that one has the right to publish the exact same content. Then it becomes a copyright issue. But remixing it into another site, like yours? You have every right.
Note: That might depend where you live. Legislation might differ, US' fair use is a different concept than germanys public data concept, for example.
We were--at the time, scraping for lead information to add to our marketing database, and this isn't the thing I'm exactly the most proud of in my career. But we all make mistakes. I wouldn't do that again.
At the same time, we rotated things so that we weren't killing the websites in the niche market that we were trying to scrape for leads.
The algorithm was that we would seed Google, Yahoo, and Bing with certain keyword searches that were relevant. Then we'd take the search results from the APIs and stuff them into an array. Then we would sort them proportionally. If we (like we did) most often get the most hits from google, followed by yahoo, and then by Bing, we'd stuff the results into an array and intersperse them.
So if we had 3x google results and 2x yahoo, and 1x bing, we wouldn't hit the google results first. We'd hit a google result 3x then a yahoo 2x, then a bing 1x and cycle.
It was a decent way of doing things.
We never broke anyone's stuff. Even if it should have been.
So to answer your questions:
> Are comments on sites like this public data or private? > Does the purpose of your scraping make a difference, if one use is just a project but another would be selling the data?
The history is littered with people who took a bet, and ended up succeeding or failing upwards.
Finally ignorance is actually preferable to knowledge. By writing this question or say having this conversation over an email you are simply creating a paper trail that can only harm you if you get sued tomorrow. 
Can you be a bit more specific?
Web scraping is going the way webbots work now. Have to scrape data to automate stuff.
A so-called "productivity tool" will save you 15 minutes a day. Asking questions and thinking will save you weeks of work.
More on productivity here: https://codewithoutrules.com/2016/08/25/the-01x-programmer/
That is probably my number one productivity tool.
The next most important tool is moving everyone to an established process where all requests/bugs/tasks have to come through a single channel. In this case, the channel is Jira for me. Before this, things could come from many different channels. Having things all in one place ensures things do not fall through the cracks. It gives you the ability to see a big picture view of what is going on.
For smaller teams, it might not make sense to use something big like Jira, but none the less, having a process in place really helps.
People get told a few hours ahead (internal eMail) where the short presentation is. Line manager says a few words, hands over card and present. If they've been there quite a while, someone bigger than the line manager may also say some words. Leaver says a few words, everyone claps. Leaver says when they will be in the pub (repeated in leaver's final internal eMail to the department) and leaver buys the first drink for everyone who turns up.
That's how it's been in every company I've left. It's pretty much the UK standard. It's near perfect; everyone knows exactly what's expected and how it will work. No uncertainty, no mistakes, opportunity to chuck in a few pounds or not.
Let my manager know, beginning of the 2nd year that I would like to transition out and my reasons for leaving. One thing the manager made me clarify is that if I was going to be working for competition. In that case, he felt it wouldn't be wise to have an extended transition. (I was not and considering starting my own startup)
He let me keep my sign on bonus (clue: enough to buy a model-3 Tesla) that I was supposed to pay back if I left before end of 3 years and I agreed to stay until end of 2nd year so that we could have a smooth transition and handover.
The departure was only announced to the wider team, 2 months prior to actual departure.
Allowed the company to have a non-disruptive transition, know exactly why someone was leaving (not some bulls*t reasons) and me to validate and get started on my company right after I left.
Of course, I had a going away party and the good folks even pooled some Swiss francs to put towards my startup too :-).
1. Focus on transition asap. Give the leaving employee plenty of time to document knowledge.
2. Make sure to treat all parties involved with respect.
3. Have an exit interview with the founder where you can give final feedback (with the understanding that it may be ignored).
4. Treat everyone like you might work with them again.
I've searched for the article of the years, but never could find it.
Anyone know the piece I'm talking about?
Now you might think hey.. that is an exit interview. But exit interviews are formal form filling exercised done by a HR person that may or may not have a positive effect and there is not much incentive to be brutally honest. In fact the opposite.
When I was in college (I went to law school) I wrote a lot. I learned two things from this. First, as a dyslexic I can practice spelling and writing just as I practice my coding skills and improve on my skills. Second, if something, like a legal document, matters a lot, have it proof read by a lawyer. Most documents, emails, etc, do not need a massive amount of proof reading. Even non-dylexic people make mistakes when writing!
Also, if they are customer facing, try and have them use templates when possible to minimize the amount of text to write.
If they misspell things, just try to let it slide and focus on the bigger issue.
In such case they want to appear bigger than they are and if you could google their address and find out it's a virtual office with 200 companies registered there you might decide to look for a bigger / more established company instead of going with them.
But even if your company's address is just a virtual office, you should list it visibly on your website in my opinion. It doesn't look good when you appear to be hiding it. There's nothing wrong with small business or new startup not having a proper office from beginning.
Logically, it makes sense as websites usually get updated only once in a while and it would foolish to dedicate a resource to it. But, it also adds a great difficulty in building a tiny thing, even if something like a contact page.
I guess big companies have more organised processes and teams to handle this. But, in startups, everyone is already working on the core product and everything else seems like a distraction.
But I agree that not telling prospective employees where they're located will deter people from applying. For example, two places within a few miles of each other in NYC can have drastically different commutes (time, comfort and/or safety), so there's no way I'd consider applying for a job if I didn't know the company's location.
I can understand small companies, trying to cover up the fact that they are still operating out of their garage or spare room. But when large corporations do it, I am just flummoxed. For example if you look up Apple in the Sydney (AU) whitepages, there is no address given just a free call number. I just checked, Google now show their address, but in the past they didn't either.
For would-be competitors who want to send in spies, it's easier to move on to other companies that publish addresses.
In the big 5 companies, the more hush-hush the R&D activities, the harder the particular site is to find.
* "Compilers: Principles, Techniques, & Tools" by Aho et al. (i.e., "the dragon book")
* "Data Flow Analysis: Theory and Practice" by Khedker et al.
* "Understanding MySQL Internals" by Sasha Pachev.
* "Transaction Processing: Concepts and Techniques" by Gray and Reuter.
* "Fundamentals of Wireless Communication" by Tse and Viswanath.
* "Genetic Programming: An Intrduction" by Banzhaf et al.
* "Applied Crytography" by Schneier.
EDIT: A few additional comments:
(1) Although these books are problem-domain specific, some of them had benefits outside of their problem domains:
* The Dataflow book has some great coverage of fixpoint algorithms. It's really helpful to recognize when some problems are best solved by fixpoint analysis.
* The "dragon book" takes a lot of the mystery out of compilers. That's somewhat helpful when writing code that needs to be fast. It's super helpful if you want to work with compiler-related technologies such as LLVM.
* Understanding the fundamental challenges of transaction processing helps you avoid massive misadventures when dealing with databases or concurrent / multithreaded systems.
(2) YMMV, but I've found it hard to soldier through these books unless I had a need to for my job or for school.
Definitely the best book I've read on programming.
I'd also recommend The Linux Programming Interface by Michael Kerrisk as it teaches so much about what makes modern Unix what it is but.. it's arguably quite oriented around C by necessity. It's not a "C book" by any means though.
- Code Complete by Steve McConnell
- The Effective Engineer by Edmond Lau
- The Pragmatic Programmer by Andrew Hunt and David Thomas
It's about software engineering but also about hardware and some different kinds of design outside of IT.
From an interview about the book :
> Eoin: Your new book does talk about software design in places, but its really about design generally, and the case studies span buildings, organizations, hardware and software. Who is the book aimed at? Are you still writing primarily for people who design software or are you writing for a broader audience?
> Fred: Definitely for a broader audience. I have been surprised that The Mythical Man-Month, aimed at software engineers, seems to have resonated with a broader audience. Even doctors and lawyers find it speaks to some of their team problems. So I aimed this one more broadly.
Brooks is also the author of The Mythical Man-Month which is often mentioned on HN.
- Excellent book that gets into the internals of what developers need to know about SQL and covers each part as it relates to the 4 major SQL databases (Oracle, SQL Server, Postgres, MySQL)
- Also has an online version: http://use-the-index-luke.com/sql/table-of-contents
The Code Book - Simon Singh
- It's just a good read that covers cryptography and message hiding throughout history. Probably a solid book for somebody around high school age.
- Advanced Programming in the Unix Environment by Stevens - Operating Systems: Design and Implementation by Tanenbaum - The Art of Unix Programming by ESR - Parsing Techniques by Grune and Jacobs - Applied Cryptography by Schneier
'Facts and Fallacies of Software Engineering', Robert Glass. Glass presents a list of things everybody knows, or ought to know, and gives both academic and opinionated support and/or critique for why they are and aren't so.
'Making Software', Oram and Wilson. An edited collection of papers on evidence-based software engineering.
'The Deadline', Tom DeMarco. A thinly disguised commercial for his advice on how to organize software development teams and organizations, packaged as light, light novel.
Unless you have some understanding of your system's architecture, how it's run in production, and why a production environment is Really Different and a Big Freaking Deal, and how operations is supposed to look like, you'll never be an effective programmer, no matter whether you run your own operations in a small start-up or work for a large enterprise with dedicated operations teams.
I have attempted some of the problems in Lua, Python, Erlang and Ada. It is very doable. So not just for Scheme.
```Complexity is the single major difficulty in the successful developmentof large-scale software systems. Following Brooks we distinguishaccidental from essential difficulty, but disagree with his premise thatmost complexity remaining in contemporary systems is essential. Weidentify common causes of complexity and discuss general approacheswhich can be taken to eliminate them where they are accidental innature. To make things more concrete we then give an outline fora potential complexity-minimizing approach based on functional programmingand Codds relational model of data.```
Great short book to get you thinking creatively and how to dissect algorithmic problems, language agnostic with pseudocode examples.
Non-programming but still highly relevant for a professional programmer: Mythical Man Month, and Peopleware.
One of the most influential programming books I've ever read. The code is in Java, but it's east to follow even for a non-Java developer, and the truths are universal. Learn the most fundamental design and encapsulation patterns. Uncle Bob Martin is a legend. This book has probably made me tens of thousands of dollars.
Teaches you to think simple and elegant.
* The Architecture of Open Source Applications (volumes I and II) * The Performance of Open Source Applications * 500 lines or less
Any language worth learning has this property of influencing the way you think forever. TDD, Code Complete &co are all very integrated into mainstream industry and are no longer novel. If you find yourself needing to recommend your colleagues to read Code Complete you might consider working on the skills to get a better job.
It's a collection of programming exercises I used when I taught introduction to programming. They start out incredibly trivial, ("prompt for a name, print "hello [name]" back to the screen. But the trivial part is, in my opinion, the fun part when you work with a new language.
That program is a two line program in Ruby. But it might be much more complicated if you implemented that as your first GUI app in Swift for iOS.
I wrote the book to teach beginners, but I and others use those exercises to learn new languages. The book has no answers, just the problem statements.
The Unix Programming Environment was published in 1984. I read it over 20 years later and was astonished at how well it had aged. For a technical book from the 80's, it is amazingly lucid and well-written. It pre-dates modern unix, so things have changed but much that goes unstated in newer books (for brevity) is explicit in UPE. (Plus, the history itself is illuminating.) It gave me a much deeper understanding of how programs actually run over computer hardware. Examples in C are old-school and take a bit of close reading but oh so rewarding. https://www.amazon.com/Unix-Programming-Environment-Prentice...
Mastering Algorithms in C. Another fantastically well-written book that shows (with practical examples) how to implement common algorithms. This is just such a great book!https://www.amazon.com/Mastering-Algorithms-Techniques-Sorti...
Code (Petzold). This one is truly language-agnostic. Others have mentioned it already. Can't recommend enough if you're iffy on the internals of computers and programming.https://www.amazon.com/Code-Language-Computer-Hardware-Softw...
Write Great Code (Volumes I and II). Randall Hyde's books are fantastic explications of the underlying computer operations. Examples are in assembly or pseudo-code but easy to understand.https://www.amazon.com/Write-Great-Code-Understanding-Machin...
-How to make friends and influence people. Anyone who works collaboratively with people needs to be able to communicate effectively.
-The Elements of style. Writing understandable code is similar to any other type of writing.
Edit: Written in a question-answer style, its geared toward luring you into recursion and functional programming.
Even if you don't adopt formal methods in your day-to-day work (often we're not building sky-scrapers) it's a useful book to give you insight into the kinds of questions one should be asking and thinking about when designing software systems.
I've seen the "dragon book" mentioned several times, and I think it (and similar books) are good if you really do plan to (re-)invent a real world, large scale, programming language. If you really just want to get a feel for what's going on under the hood, the language presented in Nand2Tetris is specifically designed to have the necessary complexity to cover most of the details, but not so many special cases that you end up "chasing dragons". And the course is modular enough that you can jump right in and just implement the compiler if you want.
The algorithms are explained, and demonstrated (in java). But with the knowledge of how the algorithm works you should be able to use them in another language.
(And even though henrik_w already mentioned it, Code Complete2 is a really good book to read!)
Lot's good suggestions in this thread, here's one I didn't see:
"Software Runaways - lessons learned from massive software project failures," by Robert L. Glass.
After I complete this book, I think I'll read his other book: Crafting Interpreters. This one teaches about implementing a programming language from scratch, once in Java and a second time in C.
"Introduction to algorithms : a creative approach" by Udi Manber. ". Great book to learn algorithm design.
It's an old book but the most eye-opening one to me.
* "Refactoring: Improving the Design of Existing Code" Martin Fowler (978-0201485677)
* "Computer Systems: A Programmers Perspective" Randal E. Bryant (978-0134092669)
Robert C. Martin introduces the disciplines, techniques, tools, and practices of true software craftsmanship. This book is packed with practical adviceabout everything from estimating and coding to refactoring and testing. It covers much more than technique: It is about attitude.
I here assume your source code will be read by others; or by yourself after more than three months has passed.
"The underachievers manifesto" - a short book that does wonders for your mental health in a world that values productivity and superficial, short-sighted goals over everything else.
Even if you never intend to program in D, I encourage you to read this book to get a different view on metaprogramming, memory safety, and concurrency.
Implementing Domain Driven Design by Vaughn Vernon
Clean Code by Robert Martin
I think you will find some code in all of the books but the ideas are applicable almost everywhere.
"Algorithms and Data Structures" from Niklaus Wirth.
"Introduction to Algorithms, 3rd Edition" from Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein.
"The Garbage Collection Handbook: The Art of Automatic Memory Management" from Richard Jones and Antony Hosking
"Code Complete" from Steve McConnell
"From Mathematics to Generic Programming" from Alexander Stepanov and Daniel Rose
Learning more and more about imperative programming, OOP, design patterns, etc is good, but branching out into declarative programming and the functional and logic paradigms will stretch your mind for the better.
The great thing, I think, about The Reasoned Schemer is that it tackles a complex topic with almost no prose. The whole book is basically one code example after another, in a Q/A style. "What does this do?" <allow you to think about it> "Here is what it does, and here's why." Rinse and repeat. I think more technical books should try this.
- Code complete
- Pragmatic programmer
- Design patterns
- Programming pearls
- If you're going for hardcore programming: the dragon book, something on modern hardware and something on OS internals.
If at first sight my may think that they are outdated and superficial, but you can't be more wrong.
- Code Complete 2nd Ed.
- Quality Software Management Vol 1-4, by Gerald M. Weinberg
I'd also throw in: Code Reading - The Open Source Perspective
- The Practice of Programming
- The Mythical Man Month
- The Cathedral and the Bazaar
- The Art of Motorcycle Maintenance
- Introduction to Algorithms
- Hackers and Painters
Some of these do contain mixed language code examples, but they are expressed in a way to be agnostic. A problem is a problem; in any language.
I would then look for language specific options as well, because programming for security can vary a lot amongst languages. Writing securely for native applications running on a system is much different than writing secure web apps.
Being an ebook, it peaked in the first 5 days and by December it was bombing as expected.
I did a "holiday sale" with discounted prices as planned, and announced it for 12/24 till 12/31. Sales immediately went up and right like there was no tomorrow.
Then I purposely forgot to restore the original prices until 01/20 and people just kept buying it, thinking they were oh-so-smart for taking advantage of me.
On 01/21 I restored the original prices and went back to close to no-sales at all.
Given the cost to produce another copy of what I was selling is zero, I'd say that was a very big win.
She found out that all of our neighbors got a postcard inviting them to Nextdoor and it said something like "[So and So] just joined Nextdoor and invites you to join!"
She never opted into this knowingly but I'm assuming it was in the terms somewhere. I thought it was brilliant for acquisition; maybe one of the best strategies I've seen.
Asking right people the right questions help. I asked my favorite game-designer about Buddhist meditation (I noticed she's into that as am I), she retweeted it to her 100000 followers.
My Twitter account has 0 followers (or 1) and back then it didn't even have a profile picture.
So asking the right questions :)
He made it opensource! And got 2000+ stars on github in one month. 6 month leter he has 7000 stars on github that turn into 2 big clients and a lot of $$$
Take for example Buffer. They created 2 Free relevant products for their field to create buzz around Buffer, ex pablo.buffer.com
(1) Started aggregating and rebroadcasting relevant news and media with our Twitter account. We also addded thousands of people who we thought would be relevant as about 10-20% of people at that time would follow back.
(2) Admittedly a bit of a dark pattern even in 2013 (and certainly has been done independsntly), but when we launched our site we needed distribution. So in desperation I did domain targeted keyword searches on LinkedIn and added about 5,000 people (with about a 30% accept rate). I was shocked to find that LinkedIn didn't really rate limit (I had one warning, but upgraddd my account which seemed to placate them). I then exported this list for our first email distribution list (We were getting a respectable 20% open rate).
(2.1) I then repeated, adding speakers from relevant conferences.
(2.2) Realizing that I couldn't add many more people to LinkedIn without getting flagged and worrying about the hygiene of our domain name to spam filters, we went to the library to use their Reuters accounts and combed financial databases for investor emails, parsed those lists. Rather than uploading the raw list to our email list we instead added this list to my contact list and then synced with LinkedIn, using LinkedIn as a filter to identify people who might be interested in what we were doing. LinkedIn will not flag you if you mport a contact list if those people do not accept the request.
(3) Next we produced a great easy-to-scan weekly newsletter, originally just aggregating top content we were retweeting. Today we have a 30-35% open rate with 60% opening in the last month and 90% in the last year.
(4) That same year we started publishing www.agfundernews.com which we dubbed the TechCrunch for food and ag. Since then we've published over 1,000 articles and have had over 100 expert contributors. At this point all roads lead to AgFunder.
(4.1) We decided to give this a unique URL because we were hoping we could get into Google News (never accepted after multiple attempts and all the while becoming the industries main news blog) and also because it was easier to get interviews when we pitched it as AgFunderNews.com rather than AgFunder.com/news which feels more like a blog. If you spend 15 minutes searching for ag/foodtech you're bound to come across us.
(5) As interviews started to trickle in, each time I would faithfully update my LinkedIn profile knowing that journalists are going to respond to social proof as they're looking for sources. I've been interviewed for TechCrunch, Bloomberg TV, CNBC, WSJ, Forbes and more. Lot's of people discover us from the media.
(6) In 2014 we did a short investment overview of the sector and then in 2015 we spent a month aggregating and curating data for a full 60 page industry report. This report has been a magnet for startups, investors, and media. It's a proof of work quality that builds trust over time. Our research pages are the second most visited pages on our site (top of the funnel).
(7) In 2015 we also added a pop up email newsletter subscription form. Say what you like, but top of the funnel registrations quadrupled in a week and have been growing ever since.
The other problem I have is anxiety, procrastination, and similar issues.
If you're asking this to fish for product ideas, I would love to see a managed task-master assistant service.
Remember that story of a guy that used to pay someone to sit next to him and hit him whenever he was procrastinating? Something similar could be set up where when your day starts, you connect with your assistant via video chat. They can watch everything happening on your screen.
At the start of the day, they should spend some time asking what you want to get done and break it down into a task list for you and feed you pomodoro-like chunks. An assistant could monitor 4 to 8 people at the same time with the right software (screenshots and list of open window titles).
A paid task-master or accountability-buddy. Maybe $3 or $4 an hour for the service.
2) Dying before having children or proving my worth. Living in poverty.
3) Losing face. I don't want to disappoint my family anymore.
4) The fear of diabetes and other illnesses.
5) The cultural and demographic destruction of Europe.
* Unemployed for 2 years * 35, single due to unemployment * I feel lucky; no kids to torture with this misery * Mortgage ~= 209K euros * Thinking of ways to make a living * Companies avoid hiring me for some reason and they simply reply back with an "overqualified" email. * If I was given the opportunity to change profession, what would be the ideal job for me? * OCD, Highly Sensitive Person (HSP), introvert by nature. Now that's a deadly cocktail! * Have zero friends to go out, plus living in the mountains with parents (thank you financial recession) * Bloody vampires (mosquitoes) around the room, they are everywhere! * Remembering things I did when I was 6 or 7 years old and feel embarrassed now. It happens all the time...
I try and not think too much about it.
Outside of the family/health stuff, I'd say my biggest worry is actually getting something meaningful done in my life. Don't get me wrong, I've got a good job with a well-paid salary and benefits, good family life and financially comfortable, I'm happy and grateful for all that as well.
However, I know I'm technically capable of doing or building something interesting, and ideally profitable to a point that it could be a business to support me. But I always seem to be stuck in the somewhat cliche spiral of pointless procrastination, browsing HN under the false pretence of fishing for ideas and inspiration, which is really just fueling the procrastinating.
I'm not sure if my head is just wired differently to others, but I really struggle to find ideas that aren't a blatant copy of others, and the original ones I can tell are flawed by design or the market is so small that it'll never me more than a little bit of Adsense revenue etc. Similarly, I'm envious of others people's focus to actually get something built, shipped and profitable.
I worry about my health. My sleep time is decrease. I have to wake up in the morning and then go to office. When my sleep time is not enough, I wouldn't focus. I lose my valuable time for starting my day, like exercise and meditation. I heard that would be a problem if you don't have enough sleep.
I see a therapist regularly, but I've always had this sense of being a broken individual who is always a few steps behind everyone else. It feels hopeless and definitely keeps me up at night.
Also, not being able to build a family later if I fail in my next venture. I'm 31 and feel the pressure to build a family somehow.
I worry about being 40 or 50 or 60 and having as much money as a man could dream about and yet finding no peace or having no memories. I worry about looking back to when i was 25 and all i can remember is sitting infront of a computer hitting a keyboard with all my strength and watching that time pass away, never to be regained.
That I even accumulated $40k worth of credit card debt in the first place. This wasn't one of my proudest decisions.
That I'll never be happy with what I have and will always strive for more.
That I'll lose my fiancee/wife in the process.
My country turning into either a theocracy or an autocracy (or maybe both at once). Whether there's any way to stem the tide or get out before it slides any further.
Those are the big ones.
& I don't know what to do about it!
I doubt it. I've hired two 18 year olds to work remotely for me, one of whom does excellent quantitative analysis I've yet to see out of anyone I've employed with an advanced degree.
Companies are by and large very stupid. Don't devalue yourself or your skills.
Craigslist is decent.
One of the best things you can do is invest in a Github or open source portfolio where you demonstrate proficiency with various technologies, methods, and algorithms. It'll be easy for me (or other hiring managers) to look at it, ring you up, ask you questions to make sure you didn't fully steal all the work, and task you with some basic contract work to see if it's a good fit. Then we go from there.
I got a lot of recruiting requests after I contributed a pretty solid amount of documentation and debugging work towards Facebook's HipHop (now hhvm, sort of anyway) repository and project.
You won't get paid upfront, obviously, but consider it a good investment. Hiring managers are more increasingly wanting to see proof that you can do work, especially independently.
Good luck. And if you're handy with R-stats, quant work, machine learning, and maybe even some Python/shell programming (have an application that could use some freelance work), hit me up. Info in my bio.
The best projects and rates are through your network.
Family friends, businesses your family uses like you mention.
So start asking around who needs a website or web application. Those will be your best gigs, projects and clients.
Look for ways to setup recurring revenue. Maybe a business needs a website offer to build them a basic website, maintenance, hosting, backups and updates for $99/mo set it up with Stripe or Paypal recurring payments. Increase the cost as pages grow. Offer to include once monthly limited updates, usually clients will only update a page every month or so but you can adjust pricing accordingly.
Or if you build a web application for a client offer a maintenance plan that includes hosting, maintenance, database backups, etc.
This podcast has some great information to start building your own products and apps.
And like others have mentioned patio11 has tons of great info.
So, first and foremost, look for projects/companies/organisations where the work is both maximally interesting and maximally personally challenging. There's a lot of living-on-the-edge startups and NGOs that can't pay very much, but wouldn't care about your age if you've got the skills they need. The monthly Hacker News "who's hiring" threads are littered with such companies. The best hire I ever made was via a "who's hiring" post -- I had a scrappy but exciting startup, and was thrilled to find an incredibly talented developer who wanted to work on it at way below market rate. Took me almost a year to find out that he was 19. Really didn't matter, given his competence. He's now accumulating a co-founder's worth of equity, so hopefully the investment will ultimately pay off for him.
Tl;dr, here's your sort algorithm, in order of priority:
1. They don't ask and/or care about your age. (You don't need that BS.)
2. Company/organisation/product is something you actually feel quite passionate about.
3. The role you'd be given is very challenging and would do a lot to develop your skills.
4. Last and least: salary.
I started on Upwork with a very low rate (~$20/h) and applied to as many jobs as the platform allowed me to, with a custom cover letter for every single one. It was time intensive, but without any reviews it's your only way to stand out.
After I got my first project, I made sure that my client was blown away by everything: communication, turnaround time, code quality, etc. When I was sure the client was happy with the result, I asked him if he could leave me a review describing the process of working with me. By asking, you're letting him know that his review matters, and he'll probably put some extra effort instead of just writing something for the sake of it.
I kept (slowly) increasing my rate and continued sending custom proposals for clients. This is your advantage over all the low bids you can be sure they're getting.
After a few projects under my belt, I've built my personal portfolio, making sure Upwork reviews were there, along with a small description of the projects I completed. I've published my portfolio around in a few relevant websites and this has brought me client work directly to me a bunch of times.
After a while, you'll notice you're getting more proposals than you can handle, mostly uninteresting and low pay. That's when I've set my Upwork rate to something high enough that clients that weren't serious just wouldn't contact me.
I was 20 when I started doing this. I'm 23 now, with my MSc almost complete (just delivered my thesis this week) and a remote job working full-time at a startup with a great salary.
This is not a fool-proof plan, I may have gotten lucky here and there, but it is absolutely viable to do this without a resume. I've never had a resume to this day.
Also, unless this is your full time work, make sure you concentrate on other aspects of your acads. I lost out a lot in my regular college trying to freelance(gain experience) with little to show for at the end both money and projects wise. It's quite hard for me to find work locally as well as internationally now that I am about to graduate(non CS degree) and most of the companies are skeptical about hiring an Indian without a relevant degree to do work that matters. I want to work on low level stuff/networking and all I could find are web development profiles.
So again, not sure how well the advice translates to your area -- but try looking for places that ask for coding samples or projects instead of resumes.
My biggest advice: get involved into local meetups. Talk to people, try to make a good impression. Try to get friends with the organizers, so you can become a coorganizer eventually.
I'm getting a lot of job offers, but really, the only worth looking at, are those you get offered by other programmers you get to talk with.
Try to read a lot of development blog posts/be active on chats as this way you get knowledge to make up for your lack of experience when discussing technical topics.
EDIT: Addition: Nobody cares about your age if you can deliver.
I have a bunch of side projects and had some college kids that were interested in a paid internship kind of thing. I spent time and money getting them set up and explaining the project, etc. They totally flaked out and just didn't follow through. You have to understand that time and energy is expended on the other side. I've always taken a "prove myself" perspective. "Yeah, I'll do a little work at $10/hr but then we need to reevaluate things based on my value". You aren't locked in to a bad contract and have the ability to move up. I'm sure there are people on here who will give you a chance, including me if you have any web experience.
I was in the exact same situation as you a few years back. I started freelancing on my 19th birthday (literally) after finding out eLance existed. At the time, I had advanced HTML/CSS skills and could barely build a WordPress theme.
My first 2 projects on eLance were the worst. Effectively doing copy and paste work for what ended up being less than $5/hr. I did get some good reviews though. From there I actually got some good clients, some of which I still work with today. My focus was getting projects the final 20% of the way when hiring cheap work overseas didn't work out for them. Clients were more willing to hire a local (USA) contractor and at higher rates to solve their problem, remember this.
After about 6 months, I stopped using eLance. The model is skewed against high quality work and creates a race to the bottom pricing wise. I was able to find enough work to sustain me through local networking (Meetups are awesome) and a coworking space and I haven't looked back.
I'm 24 now, and I have grown a small freelance gig to my full time income. I have multiple Fortune 1000 companies relying on my services for their performance on search engines, and I have the luxury of working on projects/clients that are a good fit (rather than taking on bad clients because I need to).
My best recommendations:- Focus on what problem you can solve for a business rather then what technologies you use (you're an artisan, not a tool). - Network. Network. Network. This can be in-person or virtual.- Don't focus on your age, clients care about your ability to get work done. - Keep honing in /learning new skills that can make you better serve your clients more efficiently. - Don't be afraid to ask for the sale, or to ask clients for referrals to others
If you'd like email me (in my bio) and i'd be more than happy to pass your resume along to some people in my network.
After 4-5 months, I've decided to become a freelancer and searched for contract work. I've never used Fiverr or other platforms and I'm convinced that neither should you, because this work will only lead you down the wage path where no one really values what you do.
Try to find small local software companies in the range 1-30 employees, go to local meet-ups for software developers (or even organize your own ones) and get to know those people who can give you a job. I'm currently 19yo and I'm meeting executives at my local chamber of commerce. It's not that hard. But first, you have to lose the attitude described in this sentence:
> software companies are not willing to hire people my age for good reason
This is simply not true. Maybe there are some, but not all. I've get paid the same amount of money as other freelance senior developers. They don't care about my age. They just care that
- I can what I say
- I can do what they need (I'm doing web applications & app development)
- I do it professionally and communicate properly
Just go out, drink coffee with other software developers, tell them that you would love to have a meeting with their executives and you're ready to go.
Be confident in your skills (but never ever make the mistake of overestimating yourself), be calm, show your expertise and that you can and will do the job.
Connect with people, this is the most important part for freelancing work - every time you go out and eat something, go with some project managers who happen to be there, too.
Maybe this sounds too easy to be true, but this is what I did. And I'm sure you can do it, too.
For self-taught programmers, before you find work with good pay, there seems to be a phase of self-validation. In a way, you have to pave your road somehow to demonstrate your value. For me, this meant freelancing for individuals and small businesses to gain work to which to refer to when later interviewing. I had done five of these gigs before landing a job opportunity which paid going rates for university graduates. Before that, I had worked three years and made the equivalent of two-month salary in my new job. I had been underpaid. My boss even implied that I had been a bargain, but working for under the minimum wage besides studies was what it required to me to gain some experience.
After the aforementioned job experience, I turned my twenties and at the same time the "age discrimination" I had experienced before turned upside-down. To me, this seemed like I had reached the point of self-validation, after which I was seen as an equivalent of a university graduate.
So, if possible, do not give up because of the low pay as long as you are able to learn. In my opinion, investing in yourself when you are still young is one of the best investments one can do.
In a way, people here talk about product-market fit. To me, it seems like you as a freelancer have been able to a figure that out already by finding businesses which have ordered applications from you. I think that if you are able to continue whatever you are doing now and also learn new (to increase your social capital), have some fun (to avoid burnout) and to make some money (for ramen profitability or to justify your family that you are doing something of value on the computer) then you will eventually land the job opportunity by "chance" (recruiters) or then you are able to justify your skills once you apply to a job which interests you.
* Upwork (well, Elance back then) worked out pretty well for me. The skill test are a nice way of showing that you can do the work without having much history.
* You don't have to tell everyone that you're a teen - don't lie about it, but don't shout it from the rooftops.
* As other folks have mentioned, a GitHub and/or personal website can help you.
* Create a couple of side projects - they don't have to be that original or full-featured, make a simple game or something. Just put something out there that you can point to and say "I built that".
I do some mentoring and also occasionally hire folks for contract work. Email is in my profile if you're interested in either.
A few decades later I still rely on the approach I learned back then. While many of my peers have a mentality that they are at the mercy of the job market, and need people to create & define work for them, I can create customers wherever I meet people. I have a number of small business customers who would likely never have done development if I hadn't sought them out.
While this isn't the top way to earn a lot of money as a software developer, I continue to work heavily with small businesses because I like it, and because it eliminates a lot of the factors that others seem to dislike about a programming career. Regardless it's a great way to get your foot in the door... companies who can't afford $80,000 programmer salaries -- or the contract equivalent -- can't afford to be prejudiced against your youth and inexperience.
Two previous threads about starting to freelance:https://news.ycombinator.com/item?id=8761088https://news.ycombinator.com/item?id=14424699
I'd pick a technology to focus on, and present yourself as a person who specializes in it. Put your skills and work first and foremost online / on your resume. Choose something you can use quickly, and fully build the projects you have or are about to have. Whatever it is. Start with the HTML/CSS/basic JS. Or Wordpress, Drupal. Or React or Rails or Flask. Practice most for the job you have. Second most for the job you want.
Work with the businesses you built things for to be references, and if at all possible get a good looking project one to be publicly accessible. At least as a few screen shots. Clients want to see what you've done.
1. Use your age as a strategic advantage not a limiting factor.
Seriously, I wish I'd appreciated this a little more because it changes the day you graduate high school and become a college student. You have a unique ability to talk to just about anyone right now as a virtue of being young and curious. Reach out to people you admire, not specifically asking for work, but for mentorship and advice. The returns will be high. People in this industry love young ambitious developers.
2. Get involved in the community.
All the work I got before college was through personal connections. Show up at hackathons (big one), go to technical meetups if there are ones in your area, get to know people on a personal level. Forget "networking" start making friends with other people in the field, you'll start getting calls about work.
3. Code a ton
Seriously, open source, personal projects, whatever. Just improve as a developer. My first steady contributions were doing volunteer web development for a local non-profit and that kickstarted all the professional stuff I was able to do pre-college.
4. Understand your value
Unless you're truly an outlier - you aren't going to be getting paid what a CS grad with 10 years experience is. That's just a reality of your experience level. That said I see way too many younger developers accept gross underpayment. Do not work for someone paying you $10/hour. Your time would be much better spent contributing to meaningful open source work.
5. Get into the best school you can
A good CS program will be a game changer for you, or at least it was for me. Get the grades and exam scores you need to do that. A resume of relevant experience is also massively helpful.
Companies are much more interested in your skills than your age. Startups in particular are very willing to hire teenagers if they can see that you will provide value. Keep learning. If you want to chat more email me (in bio).
The idea is that Google chooses several open-source projects for the program each year, and then students can apply to the projects with their own ideas (or by taking one of the ideas proposed by the project's contributors). The project chooses the best proposals, pairs the students with mentors, and has them work on the chosen topics for about 3 months. Reviews are submitted to Google at multiple times during that period, and the student is expected to both deliver code and engage in the project's community. Also, the student gets a nice payment from Google for each completed milestone. (I think it comes out at about 4000 dollars or so.)
So in the end, you have a small pile of money, some code to put in your portfolio, actual work experience, and the "Google Summer of Code" checkmark for your resume.
Disclaimer: I have served as a mentor for KDE in GSoC 2009.
I'd also caution you not to focus on freelancing to the extent that it hurts your schoolwork. If you want to program as a career, graduating from a top 10 CS school will open a lot of doors for you, and I would make laying the groundwork for that your primary goal.
I see someone also mentioned Patrick (patio11), you would do very well to follow his advice. TONS of value in his stuff.
Check out Simple Programmer.
As others have said, this is more an investment than a direct payment... but it will pay off.
I'd say start contributing patches to open-source projects you like. You'll have to fork them, which will make your Github page less empty (but no one will be fooled into thinking they are yours), and you'll learn how the open-source world (and therefore some teams) works.
If you don't like any particular open-source projects, start finding some to like because it's a big part of the culture (unless you absolutely want a corporate soul-sucking job).
So work on becoming very good. Choose a platform and a problem domain, and become very good at it.
I was in charge of a software development departament inside a company and i never took the ages of the applicants into account. Only their skills and how nice/approachable/good-humored they were. I got people ranging in age from 19 to about 34, no problem within the team.
In this business what matters is not how mature you look. What matters is to get the job done on time and keeping the customer happy.
Go for it!
I've not used it, but seen projects I keep an eye on put down some good rewards (even users / companies do as well) so maybe worth checking out.
I dont know if thats an option in your country but people so hire younger coders, perhaps start approaching local companies that are smaller in size?
Search for people problems and build an app to solve it. Apps are hot.
Github portfolios, open source projects, etc... may make you look important but it does not generate direct income. Try to avoid the ego trap there.
Step 2: collect money
The small business world is filled with unsolved problems. Get out there and find 'em.
Sure you will be too tired when you get home to do all that wonderful programming, but this is not a forever job, it is a job that gets you solid experience that may be more useful than you think.
For instance, imagine some fantastic Tesla gig comes to town. You want to be programming that centre console with some Tensorflow coolness. You are up against some other guy that wants to do the same. You just so happen to know how to sell a car because you have done it, you have also done it as part of a team and appreciate the nuances of it. Your idea of what shows on the centre console will be better than the other guys because you have seen how customers behave on the showroom floor. So for you it is not just a programming job, it is about customer satisfaction and the bigger dream.
I provide an automotive analogy here, I recommend any 'normal job' and that can be in retail or in factories or an office, it matters not. Specialist sales is true retail, stacking shelves or sitting at a till is not what you want.
Essentially all software is for someone or some industry, clearly there is 'plan9' exceptionalism, but the general deal is that software solves a real world problem. So you can do normal jobs in this real world, to therefore understand the world of the problems that the software is trying to solve. So if you work in retail and learn how to put the customer first, that will come in handy if you have to do online sales stuff. Will they want the guy that sat in the basement programming, or the guy that spent time hard at work learning the core thing the hard way? I suspect the latter.
With this strategy you can keep programming fun. By that I mean not patching some legacy system that needs a complete rewrite but that is organisationally impossible. It means not being micro-managed. Also, with 'normal' jobs, the hours may be long but you don't take your work home. With software there is none of that, it is as bad as studying for always having more one can do.
With a lot of normal work there is an aspect of where you are making the world a better place and making a difference. If you find your work is valued by customers or the local community then there is job satisfaction that is quite hard to find if sat behind a screen.
Every business has pinch points, these can often be automated by someone who can code. So in that apparently mundane factory you might see an opportunity to solve a problem or two, in code. It is for you to see these opportunities, however they are everywhere and you can develop a niche new product for your company, if you polish it beyond MVP you might be able to sell that across the sector. For instance, returning to the car analogy, you might find that a common problem in a particular dealership where a product puts you through a hoop or two more than needed. You could be bright and fresh to the problem and get it right for those too encultured in the old ways to see that better is possible.Having solved the problem for your original employer you could then put a 'v 2' version of your software out in a specialist marketplace, then learn how to support and sell a full commercial version of what you originally built. You can also do this whilst keeping the original normal day job. In making such a creative solution out of thin air you have got on with the job and not stood around waiting chicken and egg style for someone to hire you.
Regarding creativity, there is a lot to be said for getting programming gigs in fiercely competitive creative industries. Here technical talent can be hard to find, particularly those willing to cross the line of being actually creative. It is easy to hide in the programming world and to be a 'dunno' with creative decision making. But if you can straddle the both then there are plenty of non-technical types wanting to give you work.
I would not target "software companies" but rather ordinary companies that lack IT talent. Lots of businesses out there need simple edits to their web pages, or SQL queries from their ETL or CRM (systems they buy but don't know how to work with "under the hood"), and could use your h elp.
Do you need to make money, or are you looking for a validating project to work on/experience? If so I have some other ideas but first things first
1. Make sure you stay focused on grades and definitely do Computer Science/Computer Systems Engineering one or the other. Find a school that welcomes the geek like mentality. While I have heard Harvard and such has good Compsci programs, going to a geekier school might be helpful. For me, going to an Engineering school where 80% of the majors were engineers was kind of awesome, it was like everything was a programming club. If you are into that stuff it's fun. You will get a great education elsewhere, but not the same sense of community and experience. It's really fun.
So in the midst of everything, dont forget to make going to a good college a priority. Theres going to be lots of downvotes and explorations of whether college it worth it or not, but I say its worth it because of my following theme: the people
2. Like many have said "oh I did that once at your age and worked for some mind numbing job somewhere etc"
Don't do that here are some ideas
3. Do you live in a big city? If so, places like LA, Bay Area and NYC WILL hire you for projects if you go to the startup scene.
4. In big cities there are hacker houses, reddit meetup groups etc dedicated to programmers. Find and do all of those things and begin to meet other people in your community who program. Going to a hacker house and meeting college kids doing the same thing as you will give you unprecedented advice, let you work on projects with them and you may get an internship to one of the companies they work with.
I dont' want this to sound like political networking stuff, I'm saying that in this field the quality of your work matters, but so do the people. Real programmers will be impressed with you and find places for you meeting them in person you would not be able to find elsehwere.
In San Francisco there are hacker houses dedicated to highschool dropouts starting companies and the little sister of the 17yr old female Russian now woman who started Wanelo I think was the one who started it. In big cities you will find open minded things like this. I would focus on finding communities like this ALONGSIDE your search but you may find these communities find you more venues for work/interesting projects for pay/stock options than you initially anticipated.
I dated a guy who by the time he was a freshman in college had worked for multiple startups because of his programming abilities. He grew up in Boston, his dad worked at Oracle and he went to things like MIT startup bootcamp. Sure he was well connected but also motivated, and in big cities like that you have access to things like that.
5. Continue to beef up your github
For you, learn this lesson now, don't sell yourself short, every great aunt, manager, passerby on the street will want you to code their next unicorn app for them and say theyll pay you later once they "figure out the profit" stuff and its no uncommon for people in your position to get caught being overworked and underpaid on less than stellar ideas.
I would say your best bet is to find projects you like, dive into an area of expertise, VR, AI, compression, graphics, whatever you like and find people working on projects like that whether startups, bootcamps, hacker houses, etc and find those people and work with them and don't settle for working on anythign that youre not interested in and getting valuable learnign experience in.
This is why finding other people who can code is important, otherwise youll be treated as a gruntwork engineer doing data entry or writing someones "app"
7. You can always make your own stuff opensource and host on a website, even if it doesn't make money. I would say at your age unless you really need the money to get buy and have to choose between working shifts at a restaurant or coding, to focus on your knowledge/interests and produce your own projects in areas you are interested in.
8. Again, if money is not number one priority, you can also use community service as a venue. There are probably businesses in your community, clubs or charities at your school etc who could benefit from some development, and then you can not have to spend time on extracurriculars at school just to impress a college, and turn them into real world experience for you.
First of all, many people have not been through this and are unable to relate. I'll tell you now, yes, as a teen, it will be incredibly difficult regardless of your capability, to have buy-in from the wallet holders of these companies. However, there are ways to mitigate this while not lying:
- Differentiate yourself from your competition. Sure, everyone can code, sure everyone can talk and say they can deliver, that they're meticulous and detailed-oriented. Everyone sounds the same, so how do you sound different? Think about what's important to the business owner. Truly understand why they are pursuing a certain project. Most likely, someone didn't just dream up a project and decide to dump money into it; it's an investment, they want to gain something from this effort. Speak to their hopes, address their fears, and demonstrate an understanding of their business. This insight is sorely lacking in our industry, especially amongst developers who are often too stuck in the mental map of their software architecture, and miss the bigger picture.
- Do not draw attention to your age. I don't want to get in your head that older people, business people have a prejudice against you simply because of age. But it's there, it's incredibly noticeable, and invites questions. Sure, most people will not take issue with your age, but subconsciously, all sorts of questions arrive in their heads. Trust me when I say there is little you can do to ease most of these concerns, no matter how reputable you are, how amazing your past work has been, or how mature you seem. The answer is simple: don't make mention of your age or anything that may indicate you're a teenager. If possible, avoid phone calls and in-person meets; be sure to mention early on that email communication is preferred, and that you are more accessible via email. Over time, if people notice you are more responsive via email, that's how they will reach out to you.
- If they're not going to buy, they're not going to buy, learn to accept it. You will invariably face a lot of rejections, and it may be because of your age, it may not. Either way, accept it and move on. If someone tries to lowball you "because you lack experience", "you're too young", you do not need to beg and chase them to "give you a chance". Don't start off on the wrong foot, it'll cause more headaches than it's worth.
- Avoid bidding sites. It's a rat race to the bottom. You're at the whim of these sites, and whenever they feel like it, they'll increase their cut while offering you nothing more of value (see: Upwork changing their fees from 10% to 20%). If you absolutely have/want to, charge your standard rate, don't lowball just so you can get contracts.
That said, all of this is assuming that you have a lot to offer and are good at what you do. Focus on your personal growth and learning, try to take projects that further that mission, and focus on providing value.
Which country are you from in Europe? The government is responsible for immigration related stuff, I doubt they can guaranty any transfer from Europe. It's out of their reach.
Look at J1 visa's, maybe you can join a company on an J1 (no quota, no deadline), then in April next year they can apply for an H1B. You'll be under J1 for about 18 months until October 2018, which will allow you to stay and start working in the US right now. Usually J1 visa's are for internships, etc.
I see ping pong tables and free beer as a red flag of sorts and seek workplace that is more formal. The idea is that the less it attempts to be personal/cool/cultural the less personal things (e.g. gender or peoples attitudes/biases or who-likes-who) matters and the more actual work matters. I have no stats to support this, just my guess and some experience.
I also try to find what exactly am I going to do, whether there are clear responsibilities etc. It is easier to prove what you can do if responsibilities are clear and if you can work autonomously so your work is clearly your work. (I don't like true agile partly because then too much depends on impressions and politics and assumptions.) Moreover, clear responsibilities mean people have harder time to act on "women are not technical" assumption. Plus, fluid team structure pretty much guarantees a random collegue will try to micromanage me (like when they have ambition to be leader they tend to think I am good place to start) - then I had to fight for having normal work. Although I am usually able to get rid of that collegue, it is way more pleasant when I dont have to go through it.
On interviews: if it is technically and business oriented, then it is good flag. If they are too cool or personal or seem to be reacting to my gender (includes also being more friendly then I would expect on interview) then it is bad flag.
First, the most important person is your direct manager. Ask recruiters specifically "did I meet with the person I'd be reporting to? If not I would like to meet them." This is the most key person, and if they are not your ally, no matter what the rest of the company thinks, you are sunk.
Ask about other women at the company, or if the team has had women but they've left. If they think that question is stupid, that is one of the biggest red flags.
Of course, try to get a good vibe from everyone you talk to, and if they like you as a candidate, they are likely to be willing to spend extra social time after extending an offer, such as a lunch with the team or something like that.
In the end, I'm sad to report that because good people leave faster, that most likely if you have a great manager that respects you, it's likely if you stay more than a couple years that they might be replaced. You may or may not have a say in that, and they may not be supportive. Always be on the watch.
Wanted to comment because there are a lot of posts on here that seem to promote some idea that the company has to really push for women-friendly policies/activities to be a great place for women to work, which I happen to completely disagree with (save for policies that could be classified as human-friendly such as leave and flexible hours).
I work at a mediocre startup (first engineering job, don't judge!) and therefore we have some trouble hiring people. We've got the ping pong and kegs, which I couldn't care less about, and plenty of brogrammers and other bromployees, but day to day those really are irrelevant if you're getting interesting work and have a good manager.
We absolutely have a diversity issue - I'm the only female engineer on a team of about 20, the company as a whole has maybe 1/3 women, it took the company about 6 years before they had their first woman go on maternity leave (many men are fathers, though their paternity leaves were short), and I don't work with anyone who would be considered underrepresented in tech.
Because we have trouble hiring, we've tended to get people who are super green but excellent coworkers, or who are great programmers with mediocre-to-awful people skills. Of the latter, 2 had very clear misogynist tendencies, and both were fired after complaints made by men. One of the two made my life really uncomfortable when I surpassed his skill level, but only for about a week and then he was fired. I didn't even have to complain - my manager saw it and acted immediately.
We don't have a very active diversity group, though we tried to at one point and it fizzled out. But honestly, my boyfriend works at a company with a diversity group and they do the most ridiculous, cringe-worthy activities that really do not make women look very sensible, unfortunately (arts and crafts, etc).
Basically, my company looks like the exact type of place you might want to avoid if you want a female-friendly workplace, but it's been a wonderful place for me to grow as an engineer. It has some major problems, but is really trying to take concrete steps to improve. I'd love to have some female role models and a more diverse group of coworkers, so please don't discount companies like mine for looking like the stereotype!
From the perspective that I work for a large, old company:
* Get a sense of how the company embraces (or doesn't embrace) flexible work arrangements. Can an employee leave early to run errands or pick up kids and make up the hours that night or on a different day without having to jump through hoops and/or get looked at like they have two heads?
My theory is that, in having a mindset that can accommodate different working arrangements, this can extend to accommodating different kinds of people. I'm suggesting that an employee might be less likely to be ostracized as 'other' at a place like that.
* Do they have the resources to encourage your growth by supporting you taking classes, going to conferences, buying you books, etc?
My theory here is that this supports a belief that people are capable of growing and improving, which is at conflict with the belief of anyone not being "technical" enough or somesuch.
If you want to be around fewer ego-inflated tech bros I recommend a place where the leadership is not comprised of ego-inflated tech bros. This combined with what I mention above probably eliminates most startups right off the bat... anyway thank you for listening to my theories
I'm female, I've been the first and the only woman on teams. I don't give a crap about it. I do my job and expect my colleagues to do the same.
Any place with crap culture is crap culture for almost everyone, no matter gender-identity or race.
I look for places where the employees are passionate and care about what they're doing. Somewhere where code reviews are neither combative nor do they roll over and let things through. Basically somewhere I'll be working to be better for both me and for my colleagues.
Maybe that's something you could ask about. How are code reviews handled, how are implementation disagreements handled. Ask for stories about the last time something fell over. How do they handle call outs, all those stressful situations that people often like to brag about. How someone brags can tell you if you want to work with them or not.
I don't think work environments are singular entities that should be read as a whole. They consist of stories, experiences, individuals and the like. I apologize if this comes across as condescending. But I think you are feeding a personal bias or fear, and that you may limit yourself by thinking too broadly about the topic.
Think of your goal from the contrary. Even if during an interview, someone you are getting along with -- or someone you get "good vibes" from -- says exactly what you want to hear and you leave feeling awesome and respected, that cannot guarantee an absence of toxicity in the future.
So why even have a formal vetting process, I wonder? What more depth can you possibly get from a process like this? People come and go. People change. People make mistakes. People project their own insecurities. People have differing opinions and cultures. Unfortunately, that includes differing treatment of minorities in some cases.
I'm not trying to be a sympathizer to anyone who is bigoted, but human nature is unavoidable. Instead of trying to protect myself indefinitely (impossible, imo) I empower myself by reminding myself that I have a choice too.
If I'm uncomfortable or if I feel something is toxic to the extent that my personal life is going into shambles, I don't need to defend myself. I just make changes that are good for me. I'll turn down the job offer where I got 'bad vibes' or, if I'm already employed and going through discrimination that can't be solved by civil conversation or HR, I'll seek employment elsewhere -- I don't mean to imply jumping from job-to-job is easy, though. But if I'm really that miserable, it's probably worth it. Then -- I'll try to be wary of the things that made me miserable, and be mindful of them in future interviews/jobs, with the full expectation that things may change for better or worse.
It all comes down to compromise; and everyone has their limits.
I could use my own experiences to try and tell you how to read people or vet them but... it simply wouldn't be relevant to you as an individual. Ultimately, there are far too many subjective variables at play. If I rattle on and on about "red flags I learned from being sexually harassed", I'd be worried I'd give you irrelevant things to be biased about.
It sounds like you know which things you want to avoid. So I'd suggest to be candid, and initiate conversations such as "How does your team deal with discrimination? Have you ever had to deal with toxicity against a certain minority?" You have every right to want to discuss these things, but only YOU can determine what a 'non BS' answer is.
tl;dr ... YMMV. Be wary of personal biases. Try to be pragmatic, and maybe determine a list of "deal-breakers" for your workplace's social life / experience.
> I feel like I keep getting the same canned PR response of how great the culture is (for assumedly white dudes)
I am not sure what being white has to do with anything -- I find it a bit worrying that you're concerned about discrimination but are placing blame on one race and sex so easily. Don't play the same game you are expressing distaste for. That is not fair to yourself or anyone else.
Hopefully my perspective helps. Again sorry if this comes off as condescending, I mean the best, I'm just not super great with compassion in text. Good luck out there.
1.) If it's really a huge concern to you, the best thing to do is probably go to a women's coding group in your local area (try looking on Meetup.com) and talking to the women there. You can ask them pretty candidly how it is at their companies. Only downside is you might miss out on a totally fine company that doesn't have any females yet.
To those saying check if there's a woman on the team already as a metric---eh, if there is that's nice but if there isn't that's not necessarily bad. There are far more men in our field than women. I wouldn't write a company off for just that provided it's a smallish team. I was the first woman and minority on our team. It's fine.
2.) Google the company and maybe also your close team mates. Glassdoor is a good place to check. A bad review or two isn't the end of the world, but if you see a lot stay away. Again downside, a lot of smaller companies don't have many reviews.
3.) You're gonna know if they're lowballing your salary right off the bat when you discuss it during interviews. Make sure you get offers from multiple companies.
4.) You generally can tell a lot from the interview and sometimes you'll have lunch with the team too. Seriously if it's that bad they'll probably show their true colors pretty early on with snide remarks, talking down to you, flirting, etc. I know on a day-to-day basis we women have to brush this off a lot because the world has a lot of creeps. This is not the time to brush it off. Go somewhere else.
5.) No matter how much you try to research ahead of time, sometimes the work environment is just bad. Just as most jobs will have you under a probationary period, you need to do the same to them. Be prepared to leave if it just isn't right. I've seen some people (men and women) just get really wrapped up in the "ideal" of a certain job. Don't fall into that trap.
But it seems to me that an environment that is toxic for women is also an environment that I would find at least somewhat toxic - not because the crap is hitting me, but because there's a bunch of crap. So what I look for might be useful to you.
I'm older - 55 - and some of what I have is just "hey, this feels like that place that I worked, and it was pretty crummy". But I think there are some specific things you can try to look for.
Look for ego in the interviewing process. If the interviewer (even one of them) is trying to show how smart he/she is, that's a red flag. If one of them can't handle it if you disagree, that's a red flag.
Look for what they say about their culture. Or maybe, look for how they say it. It's fine if they have a ping pong table. At least, it's fine if that's an "oh, by the way". If it's a big part of what they have to say about themselves, that's more of a red flag.
Beer is a bigger red flag. The more their description of their culture sounds like a recruiting pitch for a frat house, the more it's probably toxic to someone who doesn't want to live in a frat house. ("We like to party together after work" is also a red flag.)
I don't know your age. I don't know how much of this is just "Get off my lawn!" But you might find some of it useful.
I think some things good to look out for during the interview are:- when you ask about their culture, what's their response? Beer and ping pong are not culture, they're at best fun stuff that young, hip bros like to do. If beer and ping pong is all they give you as an answer there might be a redflag there, it's possible that they'd discriminate against people who are not like them (people who don't drink etc.) Good answers to hear are how they want their people to succeed, what's their plan on taking their product and company up a level, what do they value and how do they carry out those values on a day to day basis? Do they provide any opportunities for employees to learn? - look at your to-be direct manager, from talking to him do you feel a sense of huge ego? do they think they know everything and is better than you at everything? or do they show a sign of humility and genuinely want to learn about your background and what you can bring to the table? - everybody else that interview you, are they behaving appropriately throughout the interview? ask them what they like and dislike about their job, that usually tells a lot. Again, if answer is "I love the free beer and pizza" something's wrong. They should be telling you what kind of opportunities they're getting at this company. Ask about work-life balance, during one of my interviews someone actually told me "the work life balance here is pretty good, some people have young children, it's not really fair to ask them to stay late everyday", and that's how I got a feel that the employer does encourage life outside of work.- I'd also watch out for companies that hire women for the sake of filling the quota, they're hiring you based on your gender, not your skills. Can you really expect that they'd value your skills enough to be supportive in your career development when you actually work there? Someone that hired you based on gender, would they really want you to get promotions in the future?
I wish I could explain better, but I think if someone is ego inflated it's fairly easy to tell just from some simple conversations, and I tend to avoid those people (I think even if I were not a woman, I'd still avoid those people).
One suggestion: Search for events and meet-ups where people gather that are driven by a higher-goal idealism depending on your interests this could e.g. be privacy and hacker's events, the sciences, NGOs, environment, political movements. Talk to the men and women there and find out where they are working. It is far more likely to meet people there that are intelligent and work in interesting jobs, and their idealism and progressiveness usually affects other areas of life, too (i.e. they are less likely to be racist or misogynist). Of course I am talking about probabilities here, not guarantees.
And these, from Lara Hoganhttps://twitter.com/lara_hogan/status/852204796941660160
Now I split my time 30:30:30 on contracting, developing my edtech baby and reading/ art/ learning. The 10% is allocated for family and the blue days.
At the risk of misleading others, please remember that every person has a unique pattern. It seems a lot like retiring but believe me it's not haha. I have to work extra hard in finding and maintaining my contracts, just so I can support my edtech project with enough cash and time.
And, although flexibility is what I was looking for, it's very easy to become idle. In the first few months, I struggled - but this I suppose is a much needed exercise in taming my short attention span (!) It's still too early to tell - it's been ten months now - but as an individual, learner and founder, I think I'm happier and made far more progress than before. And at last my baby is growing! ;)
Hmm. So I ran away rather than deal with toxic/ mediocre environments ... but perhaps this is the best!
The only team I've ever felt "normal" at was one where one of the interviewers was gay. My boss there had hired a bunch of really talented queer developers from his network, so half the team was queer. I guess I really liked the personalities of the people I interviewed with (it was a full-day pairing interview, which is a lot better for getting a feel for a company than just whiteboarding), so I figured it'd be a good group of people to work with.
The challenge is that if you're interviewing for a larger company, you might not know which team you'll end up in if you accept an offer. Try to avoid this situation, and get a feel for the people you'd be working closely with.
I think if I were to interview for a new company now, I'd reach through my network and try to work with a friend (or former co-worker). I still have never had another woman on my team (after about 5 years in tech), so in the future I'd probably look for a company that has female engineers and high-ranking women within the company.
I've also found that companies that use pair programming tend to value empathy and teamwork, because when you're working that closely with your coworkers every day, no one wants to work with a jerk.
There are some bad companies here in the sf bay area, but there are also some really great places to work. Glassdoor has saved me a few times early in the interview process.
You are a minority and assume your environment will be hostile for that reason. And due to confirmation bias, it will probably appear to look like it. The problem is that you might not be able to see the forest for the trees.
Toxic environments are usually toxic for everyone. And the cause is usually dishonesty, poor management, unrealistic demands, etc... High turnover, poor treatment of customers, etc... is a big red flag. Forget about your status as a minority for now and look at the big picture. Poor treatment of minorities usually go with it.
There are multiple online resources, like women's only whispernetworks. I don't feel safe posting details of these groups on a wesbite like this, but a google search/asking around will probably do. If I'm interviewing at a new place, I usually post on said whisper networks to ask if anyone has heard anything (positive or negative). InHerSight.com <--- glass door for womenhttp://goodforpocin.tech/ <--- I have heard mixed reviews, but the fact that something like this exists is great. The best way to find out about good companies is of course by word of mouth, talking to people who have worked there and getting input on pros and cons
Questions I ask:"What percentage of women, PoC, etc is on the dev team? <---I never expect high numbers, I'm more asking this to see how they respond and if they even know the answer"Are there women in leadership?"*One of my mentors refuses to move forward in the interview process if there were no women on her interviewing panel, which she says is a red flag that they are pretty clueless of how important inclusivity in tech is to her.
Ask about their core values, but ask for examples of how employees embody those values in their daily interactions and their work. How are those values reflected in a manager's leadership style? Ask if they have a public harassment policy. Ask if staff has gone through bias and/or harassment training, or has there been any company-wide discussion around such things. Also ask if you'd be able to speak to other women at the company (someone who is not interviewing you) about their experience working at the company. Equally as important, ask to meet other members of the team you will be working with and see how they are with you (especially male colleagues) to get a sense of if they speak to you or treat with you respect. Have a technical conversation with them (outside interview so the power dynamic is equalized). Remember, you are interviewing them just as much as they are interviewing you. A good recruiter will treat this like a two way sell, because that's what it is.
When I was there in the early 90's, all the NASA contractors were pretty progressive compared to the stories you read about Silicon Valley today (where I am currently living.)
Recently on a phone screen she asked the manager this and his response was "that's something you need to bring up with HR". That's a giant red flag and she saved everyone's time by not pursing the job further.
They are here for a job, not to supply you with intimacy. It's even more sad to think about how much these women are not viewed as great additions to the team, but how likely you are to get a date with them. It's very frustrating.
As for culture, I'd say just ask. Ask what the team does for fun. That will more or less tell you if you will fit in or not.
I remember one candidate who received an offer, then insisted on meeting with the CEO a second time and asking him a few more questions. She never got that meeting; the offer was rescinded. The CEO saw her demand as a bad sign.
Any weird question you ask during this sensitive phase will get analyzed and raise concerns. In other words, you have to gather your info via other means.
Second (and I kind of hate to give this one away), I ask "what do you sacrifice when recruiting to ensure diversity?" The answer should be either "it takes us longer to recruit, because we ensure a balanced pool" or "we have changed our process to allow many types of candidates to shine". If the answer is just "we spend lots of money on sending people to Grace Hopper!" it means they aren't willing to inconvenience or piss off overrepresented engineers. You can't fix culture problems by spending money, and when "diversity" is seen as separate from "recruiting" in general it's a clear sign of a problem.
I also use the Internet: I look on LinkedIn for people who have left the company, see how long women stayed and reach out to find out why they left if they did. Backchannel mailing lists are great ways to find a vouch. I check the social media profiles of their prominent engineers and search with keywords like "feminism", "women" and "she". See how they talk about women in the field, whether they follow women on Twitter, whether they posted angry anti-Hillary memes. I've found that a lot more effective than relying on direct questioning, because there are companies out there that will say whatever they think will let them add you as a shield against the accusations of sexism they are facing. Especially my boss: if my boss is going to be a white dude, he had better have publicly condemned sexism in a way that feels constructive and genuine to me.
One other internet trick is to look at where the women you respect are working and apply there. At the very least, you would get to work with technical mentors you admire and can learn from.
You can find good spots here. Seriously, though, trust your instincts, don't be afraid to walk away and don't be afraid to take an "unsexy" job at an old-school company with an HR department.
You couldn't do anything within earshot of it. Nobody could just tap the ball back and forth. Noooo. It's serve, back, SLAM! always followed by groans and whoops as loud as possible.
I wouldn't join any company with a prominent ping pong table.
If you can't stand the environment this creates then it seems like trying to find a remote job would be ideal. That way, aside from the occasional off-topic meeting, work is work.
Emphasis on in the IT teams, because from my personal limited experience, gender diversity in non-technical roles doesn't correlate in any way with environment toxicity/rigidity, while IMO it totally does correlate in tech roles.
Ping-pong tables aren't a red flag at all for me, the company I'm in has them, beer dispensers, nerf guns and all, and the culture is very friendly and welcoming to any kind of people. Our tech team ticks literally every diversity checkbox and everybody can integrate well, yet without being forced to, and despite a few "toxic" elements that don't ruin it for everyone (without being oppressed themselves). The key was that from the start, the first few engineers were already "diverse".
Disclaimer: I'm a while male and I'm leaving for an all-white-dudes startup in one month, so no agenda here.
Five years ago, I would have said that the percentage of women in an office isn't necessarily a good indicator of anything. Nowadays, this would be my first advice: ask how many women work there.
With maybe one exception, all the places I've worked in that had very few women were terrible places to work in. Most of them were unpleasant to work in even for men who think "bro" is not a word to be uttered after you turn 19.
Teams that have a strong bias against women act on it almost universally: they drive candidates away with shitty and/or unenthusiastic interviews and they make life hard for those candidates who do get through. They don't end up with all-male teams just because reputation preceeds them and no woman wants to work there -- they end up with all-male teams because prejudice and insecurity tend to tip the balance of their hiring decisions, too.
It's not a universal predictor, but I definitely consider it a red flag. Frankly, it's one that I look at, too. I'm not the SJW type, but when I got into this whole programming thing, hacker communities used to be inclusive and diverse, and I kind of like to keep that going.
* Check glassdoor.com to see what current and former employees have said about the company and how they rate it. While the feedback may not be specific to gender / diversity concerns, you can probably get a good feel for whether or not it's a happy place or a disgruntled place.
* Ask how many women work there in developer roles.
* Try to find a publicly traded company to work at verses a startup. A publicly traded company has a real HR department and potentially a lot to lose if they get sued. In a startup, there typically is no HR department. There might be one person who is in charge of some HR-related things like benefit administration, but that person is not equipped to deal with things like handling sexual harassment allegations. That person is also likely be friends with the founders.
(for the record I'm coming from the perspective of cisgender black male in case it matters)
They came up with two big questions that have surprising predictive power:
1.) Do you have daughters?
2.) Does your wife work outside the home? (Probably couched in more neutral language like "Oh, what does your wife do for a living?")
[The women in question were director/VP level, and so were directing this toward CEOs and C-level execs. Presumably they'd be asked of your direct boss. Both questions can be easily worked into basic rapport-building smalltalk, i.e. you don't directly ask them this in the interview, you just casually inquire about their family. Also, this assumes a male boss; the conversation mostly ignored the question of female bosses, other than to note that women who had to fight hard to get where they are during the 70s and 80s can be surprisingly tyrannical towards younger women coming up.]
The daughter effect has been pretty well-documented in the media ; it appears that even the most sexist men want their daughters to succeed, and that rubs off in how they treat women in the workplace. (See eg. Ivanna vs. Ivanka Trump.) The reason for asking about whether the wife works outside the home is that in two-career couples, the husband necessarily needs to take on a larger share of the housework & childcare, which makes them more sympathetic to the constraints & sacrifices that a working mother has to make.
Maybe it'd work best asked in an abstract, impersonal way: "I've had friends whose contributions have been dismissed because of their gender; what kinds of strategies can combat bias and create a positive environment for all employees?" Ideally this would lead into a nice 5 minute discussion where you could get a feel for their thinking.
Another anecdote would be bring your kids to work day. Everyone went out of the way to make sure the few of us with kids brought them in and that we had a nice event. It's funny, I told the founders my wife was pregnant with twins while I was interviewing. I had kept this a secret from the job I was leaving because I didn't want them to have leverage over me.
We also have women on the leadership team, etc... but I don't really think that's the key (after all, 3 dudes founded the company and they hired women for key positions). I think it all boils down to not being jerks and really caring about the people you work with and the people your product helps (yeah, we've got an actual mission and not the usual silicon valley bs about trying to change the world).
And, our sales team has already hit their numbers ... for the year so we're hiring engineers to try to keep up with the growth. PM me if you're interested in learning more about the team :)
If you don't like the answers, then it might not be a good fit for you.
If you're willing work with Republicans and/or non-drug users (most tech people are super far left and absolutely will not) then working for an ex-mil manager or with ex-mil coworkers will likely be an extremely pleasant experience as they're very comfortable around people of color and women. On the other hand, if weed smoking on duty and membership in Antifa is also required (why?), the ex-mil department might not be as good of a fit.
On a larger scale piece of advice, even if you don't apply this specific match, it is useful to consider that its highly unlikely that your definition of the progressive stack perfectly and precisely matches everyone else on the planets individual definition of the progressive stack, so hopefully inspired by this post, you'll pay close attention to variations in progressive stack composition, assuming you pick your next job solely on political compatibility.
Every programmer should read the (presumably open source) code they depend on, but almost nobody does it. Some look at documentation, but not everyone even does that. What you may find is that some of the code you depend on is garbage, and may even motivate improvements.
This may be less feasible for giant messes such as most front-end tooling and frameworks that exist today.
Reading this code is probably most enlightening if you have already written networking protocols.
NB: this has nothing to do with OCaml, other comparable languages with ADTs (Scala, Rust, Haskell, F#) would be similarly suitable.
I just can't recommend it enough. All the projects are open source, so you can review the source code and still be walked through the code by book. You'd learn why the programmers made certain trade offs and how the applications became better of for it
ACM Code of Ethics and Professional Conduct:
The later book is "Artificial Intelligence A Modern Approach" which is written with pseudocode examples. The site includes other languages than lisp; python, java, js, scala, and c#.
PAIP lisp code: http://www.norvig.com/paip/README.html
AIAMA code: https://github.com/aimacode
These are very detailed, very well written articles from well-acknowledged developers about their OSS project.
Realistically this is because it is in fact a big messy pile of 'at least it works'.
Still, it is worth studying as an example of a work that was architected to support open source contribution from thousands of developers.
Plenty of tricks to be learned there, as well as fantastic structure.
Fang is a utility program for UNIVAC 1108 computers, written in 1972. UNIVAC's EXEC 8 had threads and async I/O for user programs, decades before UNIX. The machines were shared-memory multiprocessors. FANG uses those capabilities to parallelize copying jobs. The UNIVAC mainframes had plenty of I/O parallelism and many I/O devices, so this was a significant performance win.
See especially "schprocs". Those are the classic primitives from Dijkstra: P, V, and bounded buffers. That technology predates Go by 40 years. Here's Dijkstra's P function:
. . . DIJKSTRA P FUNCTION . . . LA,U A0,<QUEUE> . LMJ X11,P . <RETURN> X5 DESTROYED . P* TS QHEAD,A0 LOCK THE QUEUE LX X5,QN,A0 LOAD QUEUE COUNT (note: load) ANX,U X5,1 BACK UP THE COUNT (note: Add Negative, i.e. subtract) SX X5,QN,A0 REPLACE THE COUNT IN THE QUEUE (note: store) TN X5 DO WE NEED TO DEACTIVATE HIM ? (note: Test Negative) J PDONE NO. SKIP DEACTIVATION (note: Jump, i.e. branch) ON TSQ=0 (note: this is an assembly-time ifdef) LX X5,QHL,A0 LOAD BACK LINK OF QUEUE SX X5,QHL,X4 PUT INTO BACK LINK OF ACTIVITY SX X4,QFL,X5 CHAIN ACTIVITY TO LAST ACTIVITY SA A0,QFL,X4 CHAIN HEAD TO NEW ACTIVITY SX X4,QHL,A0 MAKE THE NEW ACTIVITY LAST ON QUEUE CTS QHEAD,A0 RELEASE PROTECTION ON QUEUE HEAD SCHDACT* DACT$ . DEACTIVATE PROCESS (note: system call) OFF ON TSQ (note: for later version of OS with alt wait fn) C$TSQ QHEAD,A0 WAIT FOR C$TSA (note: system call) OFF J 0,X11 RETURN AFTER ACTIVATION . PDONE CTS QHEAD,A0 UNLOCK THE QUEUE (note: not a system call, just a macro. Stores 0.) J 0,X11 RETURN
Instruction format is
X4 is the "switch list", the local data for the thread.)
In that regard Donald Knuth's work in the fictional assembler MIX for TAOCP is worth reading - it's at one remove from any real system. Knuth's TeX source is also quite unique.
One source code I look into from time to time is Three.js: https://github.com/mrdoob/three.js/ to discover more details over the documentation.
Even if you hate c#/java an amazing book on how to write solid clean code.
It would be nice to have an aggregator. This is something I have thought of building myself, but I have no experience making web apps.
They allow you to do some UI mocks/basic design with very little effort.
You can find and import in them Boostrap templates providing you with all the elements you need. Then the next step I suggest to do is to pick the basic colors you want to use for normal text, action buttons ... This way you will make sure that in your app you will use only those colors providing a consistent color scheme.
And then you can start to design your interface. Both apps provide simple tools to use and with very little learning curve for doing simple design.
For me (even if I am not a designer) doing this helps me focus on understanding how the elements that I want to build integrate with each other on UI side. And also forces me to focus on using the same elements and the same colors.
For both apps you can also find a lot of free designs provided by various authors from which you can inspire.
You can also browse https://dribbble.com or https://www.behance.net to be inspired by designs that you like.
That being said, the little things that you can do make a huge difference between a site that looks like its made with bootstrap vs a site that has a bit more going on under the design hood. Pay a bit of attention to your fonts and line heights, add in -webkit-font-smoothing, and lock down your colors before you start (e.g. black, white, brand colors, grays, etc.) Consistency will make your life so much easier to get that UI looking amazing, and it takes about 15 minutes or less to write down some variables (assuming you're using a CSS preprocessor). Also, optimize your assets (images, etc) and make sure you have fallbacks if something doesn't load fast.
Lastly, make sure you know what you (roughly) want your app to look like on mobile, tablet and desktop before just diving in to Bootstrap- even just roughly sketching out boxes on paper helps me sometimes with that. I like to use the Chrome emulator for a rough idea of any device as I work on phone, tablet and desktop in either orientation as well.
All in all, what I've described you can easily implement in a a few hours to a few days (depending on the complexity of your site) and makes a huge difference. Once you're making millions, you can hire a great designer to push your site to the next level!
"How to Win Friends and Influence People" by Dale Carnegie, because it changed my understanding of people for the better.
"Surely You're Joking, Mr. Feynman!" by Richard Feynman, because it gave me a model for how to enjoy life.
"Models" by Mark Manson, because it helped shape my understanding of heterosexual relationships.
"An Introduction to General Systems Thinking" by Gerald Weinberg, because it illuminates the general laws underlying all systems.
"Stranger in a Strange Land" by Robert A Heinlein, because it showed me a philosophy and "spirituality", for lack of a better word, that I could agree with.
"The Fountainhead" and "Atlas Shrugged" by Ayn Rand, because they showed me how human systems break, and they provided human models for how to see and live in, through, and past those broken systems.
"Harry Potter and the Methods of Rationality" by Eliezer Yudkowsky, because it set the bar (high) for all future fiction, especially when it comes to the insightful portrayal of the struggle between good and evil.
I constantly see places where an idea from the book is relevant and I want to make people read a chapter of it. Examples include insights into evolution, artificial intelligence, morality, and philosophy. There's a short section on how people tend to argue about the definitions of words and how unproductive this is, that I always find relevant. There's a lot of discussion on various human biases and how they affect our thinking. My favorite is hindsight bias, where people overestimate how obvious events were after they know the outcome. Or the planning fallacy, which explains why so many big projects fail or go over budget.
The author's writing style is somewhat polarizing. Some people love it and some people hate it, with fewer in between. He definitely has a lot of controversial ideas. Although in the 10 years since he started writing, a lot of his controversial opinions on AI have gone mainstream and become a lot more accepted than they were back then.
On Writing by Stephen King. This a biography masquerading as a book on writing advice... Or its the other way around. Whichever it is, I think it's a great book for any aspiring writer to read. King explains the basics on how to get started, how to persevere and through his experiences, how not to handle success. Full of honesty and simple, effective advice.
Chasing the Scream by Johann Hari. Most people agree that the War on Drugs is lost and has been lost for decades now. But why did we fight it in the first place? Why do some continue to believe it's the correct approach? How has it distorted outcomes in society and how can we recognise and prevent such grotesque policies in the future? This book offers some of those answers.
Only if you're Indian - India After Gandhi by Ramachandra Guha. Sadly almost every Indian I've met isn't well informed about anything that happened in India after 1947, the year India became independent. History stops there because that's the final page of high school history textbooks. An uninformed electorate leads to uninformed policy, like "encouraging" the use of a single language throughout the country. If I were dictator, I'd require every Indian to read this book.
Don Quixote (Cervantes): unanimously considered the best work of fiction in the Spanish-speaking world and on many lists, even #1 of world literature, ever (!). Often overlooked (at least in Spain) by young folks as it is long, the language is archaic, and its themes appear quaint and silly today at first sight. But there's a reason it has been praised for centuries. It's funny and tender. Themes are also modern, and Cervantes' style is playful and innovative, making use of devices such as meta-references, alternative pasts, removal of the fourth wall, etc. I'm not sure how much non-native audiences can enjoy translations, though.
The Lord of the Rings (Tolkien) for the original epic and touching fantasy. (I know many people devour it in their teens, or in their early youth But I read it as an adult; quite late. Mainly because it seemed to be the only difficult book that many of my friends bothered to read, and that predisposed me negatively towards it. Also, my family hadn't read it, and there was no copy of it in our house.)
Brief History of Time (Stephen Hawking): mind-boggling introduction to (astro-)physics, modern cosmogony, etc.
You will become a pessimist for a while after reading this, just because it feels like there's no meaning in all this since everything repeats itself and nothing is forever, but when you recover from it you'll find yourself much more insightful about the industry and can make better decisions.
I love all the answers in here but please, please answer with more than just a title! I want to know why I should care about a book -- sell it to me, don't just throw it out there and ask me to do the work.
Karen Armstrong's A Short History of Myth is a very nice guide into mythology and what that and religion are. It's like a vaccine for any sort of fundamentalism or bigotry, if read with some accompanying knowledge of mythological traditions.
Technically this book is about how humans interact with things, but actually it covers a lot more topics that one can think: how humans act, err, how they make descisions, how memory works, what are the responsibilities of conscious/subconscious. Also you'll start to dislike doors, kitchen stoves and their disigners)
You hear 'ancient wisdom' on how to lead the good life all the time. These ancient aphorisms came from a time before the scientific method and the idea of testing your hypotheses. Tradition has acted a sort of pre-conscious filter on the advice we get, so we can expect it to hold some value. But now, we can do better.
Haidt is a psychologist who read a large collection of the ancient texts of Western and Eastern religion and philosophy, highlighting all the 'psychological' statements. He organized a list of 'happiness hypotheses' from the ancients and then looked at the modern scientific literature to see if they hold water.
What he finds is they were often partially right, but that we know more. By the end of the book, you have some concrete suggestions on how to lead a happier life and you'll know to the studies that will convince you they work.
Haidt writes with that pop science long windedness that these books always have. Within that structure, he's an entertaining writer so I didn't mind.
"More Money Than God: Hedge Funds and the Making of a New Elite" https://www.amazon.com/More-Money-Than-God-Relations/dp/0143...
Market Wizards, Updated: Interviews With Top Traders https://www.amazon.com/Market-Wizards-Updated-Interviews-Tra...
The New Market Wizards: Conversations with America's Top Traders https://www.amazon.com/New-Market-Wizards-Conversations-Amer...
Hedge Fund Market Wizards: How Winning Traders Win https://www.amazon.com/Hedge-Fund-Market-Wizards-Winning/dp/...
I don't want to duplicate a lot of text, so I'll link to my Amazon review of it:
TL;DR it's the only bit of literature I've found that's got the real talk, and in data-and-comparison driven ways hackers will appreciate.
Yeah, obviously I'm going through a divorce, but I really think this book should be required reading for anyone before they get married in the US. I don't say that lightly or confer that kind of veneration unto books at the drop of a hat.
The origin of consciousness in the breakdown of the bicameral mind, / Julian Jaynes. Hard to tell if crazy or genius, but well worth a read. Read at 38, wish I had read this at 20 or so. Most of us take our inner voice for granted, but should we really? And what if there was evidence supporting the idea that there's another inner voice, but our modern upbringing suppresses it (but it does reappear with some illnesses, under duress, etc)?
Different Seasons / Stephen King. A collection of four stories, NOT your usuall King horror genre; one of which became the movie "Stand By Me". another became "The Shawshank Redemption", the third became "An Apt Pupil", and the fourth will likely never become a movie. All are excellent. I actually read it at 16, which was the right time, but I'll list it here anyway; if you've seen the movies and liked them, it's worth reading - the stories are (a) much more detailed than the movies, in a good way, and (b) related in small ways that make them into a bigger whole than the individual stories.
Management (software/hardware oriented):
Peopleware / Demarco & Lister - read after I was already managing dozens of people. Wish I had read it long before. This book is basically a list of observations (with some supporting evidence and conclusion) about what works and what doesn't when running a software team. Well written, and insightful.
The mythical man month / Fred Brooks - wish I had read this before first working in a team larger than 2 people. Written ages ago, just as true today; A tour-de-force of the idea that "man month" is a unit of cost, not a unit of productivity.
"Science et Mthode" (Henri Poincar, 1908)
"The Conquest of Happiness" (Bertrand Russell, 1930)
"The Revolt of the Masses" (Jos Ortega y Gasset, 1930)
"Brave New World" (Aldous Huxley, 1932)
"Reason" (Isaac Asimov, 1941, short story)
"Animal Farm" (George Orwell, 1945)
"Nineteen Eighty-Four" (George Orwell, 1949)
"Starship Troopers" (Robert A. Heinlein, 1959)
"The Gods Themselves" (Isaac Asimov, 1972)
"Time Enough for Love" (Robert A. Heinlein, 1973)
IMO you won't really understand the nature and limitations of fiction until you've read JLB. His work won't change your life, as such, but it will divide it into two parts: the part that took place before you read him, and the part that comes after. You'll always be conscious of that division.
I have developed several habits:
a. Writing a Gratitude Journal
b. Going to Gym in the morning
c. Programming in the morning
d. Reading in the morning
I copied some of my highlights here:
It's about tidying up, but also about making your living space harmonious without clutter. It's not one of those get a box and put your pencils in it and then label it.
The Fountainhead by Ayn Rand. One of the most inspirational stories I've ever read. A strong reminder to remain true to yourself in the face of all sorts of challenges and adversity.
Mastering The Complex Sale by Jeff Thull. I don't claim to be a great, or even good, salesman. But if I ever become any good at selling, I expect I'll credit this book for a lot of that. I really like Thull's approach with is "always be leaving" mantra and focus on diagnosis as opposed to "get the sale at any cost".
The Challenger Sale by Brent Adamson and Matthew Dixon. Like Thull, these guys deviate from a lot of the standard sales wisdom of the past few decades and promote a different approach. And like Thull, a core element is realizing that your customer aren't necessarily fully equipped to diagnose their own problems and / or aren't necessarily aware of the range of possible solutions. These guys challenge you to, well, challenge, your customers pre-existing mindsets in the name of helping them create more value.
The Discipline of Market Leaders by Fred Wiersema and Michael Treacy. A good explanation of how there are other vectors for competition besides just price, or product attributes. Understanding the ideas in this book will (probably) lead you to understand why there may be room for your company even in what appears to be an already crowded market - you just have to choose a different market segment and compete on a different vector.
How to Measure Anything by Douglas Hubbard. It's pretty much what the title says. This is powerful stuff. Explains how to measure "things" that - at first blush - seem impossible (or really hard) to measure. Take something seemingly abstract like "morale". Hubbard shows how to use nth order effects, calibrated probability estimates, and monte carlo simulations, to construct rigorous models around the impact of tweaking such "immeasurable" metrics. The money quote "If it matters, it affects something. If it affects something, the something can be measured" (slightly paraphrased from memory).
I wish I'd read each of these much earlier. Each has influenced me, but I'd love to have been working of some of these ideas even longer.
On top of that, some of Tim Ferriss' stuff on accelerated learning. Learn how to learn first, then learn everything else.
High Output Managementhttps://www.amazon.com/High-Output-Management-Andrew-Grove/d...
The Master Switchhttps://www.amazon.com/Master-Switch-Rise-Information-Empire...
Thinking Fast and Slowhttps://www.amazon.com/Thinking-Fast-Slow-Daniel-Kahneman/dp...
Turns out the creator of Dilbert was at one time a mid-senior level manager in Corporate America, who attempted several failed entrepreneurial ventures over the years. He's also a brilliant writer. Totally hooked by Chapter 3: Passion is Bullshit > http://www.goodreads.com/book/show/17859574-how-to-fail-at-a...
Each one had a significant positive impact on my life. And both a free online!
Surely You're Joking, Mr. Feynman! - Richard Feynman What Do You Care What Other People Think? - Richard Feynman Crime and Guilt: Stories - Ferdinand von Schirach
The Master and Margarita - Mikhail Bulgakov
Bulldog: A Compiler for VLIW Architectures - John Ellis
_Feeling Good_ because of the tools it contains to battle self-defeating feelings that lead bouts of sadness or depression. I wish everyone would read that book so that they can build mental immunity against circular, depressing thoughts.
So now, when I hear a switching power supply whine in protest, I will think of it as the squeals of pain of the engineers whose life I turned into a living hell because of my lack of appreciation for P = IV. Im truly sorry. I wasnt thinking. (And this is just the first chapter of that book).
I did read it fairly early and it had an quite an impact on my life and thinking. It put into words a lot of my discomfort with a life focused on materialistic success. And it was inspiring seeing an intelectual combining so many of the thoughts and topics he developed during his lifetime into one coherent and approachable book.
I found it by working my way through the list of joint nebula and hugo award winners (which is a really fun project, because all of them are amazing books). It is my favorite sci-fi book. It changes the way you look at gender, especially if you haven't questioned the concept much before.
80/20 principle, while mentioned in the 4 hour work week, it really has a lot more to offer in the book. How you should go about leveraging your time. There was a real gem in there about how books are really the best way to acquire knowledge and a great way to approach reading in the university.
There was a speed readying and studying book I came across from a friend that owns a book store that really helped me. I wish I had that book before I entered high school. I can never recall the name, but I will try to find it.
The War against Women (Marilyn French) - the underlying premise is wrong, but reading it is a good way to learn how to deal with semi-rational, but insane theses. And yes, I can defend this position with quotes / paraphrases from the book, with rational explanations as to why it's insane
How the Police generate false confessions (James Trainum) - former cop explains why harsh interrogation techniques are counter-productive, and how to defend yourself
Get the Truth (Philip Houston et all) - how to tell when people are lying, via simple techniques you can remember
I read it at 18 and I wish I had read it way earlier. It taught me to be mad, to live life, to get out and see the world. But looking back at it, it also taught me how to be responsible and how to not to be a jerk.
It, above all, showed me what beautiful writing is.
-  https://www.robinwieruch.de/lessons-learned-deep-work-flow/
"Getting Things Done" by David Allen. I'm sure everyone here is familiar with bits and pieces of GTD methodology, but I encourage you to check out the full text. There are a lot of great ideas in there there that I didn't find reading online about GTD. I have been a serious GTD user for more than a year now, and I feel amazingly more in control of my life. Everything I've done in that time - from planning my wedding, to projects at work, to completely organizing my house - has gone smoother than I can remember projects going ever before.
It discusses the intrinsic characteristics of work that lead to satisfaction, growth, mastery, and ultimately happiness. The author is a PhD, worked at a think tank, and quit the white-collar life to go work on motorcycles. He discusses how white-collar work has been hollowed out, transforming "professionals" into "clerks", why so many of us "knowledge workers" feel unsatisfied with our work. The book has helped me figure out how to change my work to be more intrinsically rewarding, and as an IT developer whose technology affects other people's work, it also helps me think more about how to make the end user's life better.
Another great book along these lines is Joanne Ciulla's (2000) "The Working Life", which is a bit more academic and has less motorcycles but is nevertheless very readable.
I found this book in a library's junk pile, evidently unread. It has one of those bad 80s covers that suggest it'll be terrible, but to my great surprise, it's great! It's 80 or so one page missives/dictums/edicts that'll take barely half an hour to read through - I re-read it every time I have a job interview coming up or a some kind of major life choice. The author's tone is abrasively direct; this is how it is, not how it should be. And the advice isn't just for wannabe CEOs, it's accessible and attainable for everyone.
I would add more but I think these volumes will keep you busy for awhile ;)
Unbroken, Laura Hillenbrand. If you haven't read the book don't judge it by the (awful) movie.
The Liberators: My Life in the Soviet Army. Really opens your eyes to the problems and realities of communism. I love the author's dry sense of humor as he witnesses the absurdity of many of the things he encountered.
Sniper on the Eastern Front, Albrecht Wacker. A view of WWII through the eyes of a German sniper.
Auschwitz: A Doctor's Eyewitness Account, Miklos Nyiszli. A view of the holocaust through the eyes of a Jewish doctor in the Auschwitz concentration camp.
No more Mr. Nice Guy -- Robert Glover
If my younger self had read this, I think my course of life would be very much different than it is right now. Just a caution that it might come off as misogynistic ramblings for some readers.
In high school I was assigned this book but I didn't read it all, it seemed like a waste of time to read 1000+ pages about a silly knight.
A few years ago I got into reading a lot of fiction translated from Spanish and Don Quixote got back on my radar so I decided to give it another try. I was blown away. It's astounding that a book from 500 years ago is still so funny and engaging today. Grossman's translation makes the book accessible and very enjoyable. If you didn't know the history you'd believe it had been published in the last few decades.
I recommend this because it's the best example of how literature can be time travel. When I smile at one of the adventures in the book I know that I'm sharing an experience with readers across centuries. There's almost no other way to get that feeling.
Morris uses his background as a zoologist to examine human beings as a regular animal; many books have come out of this approach. In this one he draws parallels between the city-dwelling human and the caged animal. This sort of perspective gives you self-awareness about your own tribalism and how we as a species deal with the opposing forces of individuality and longing to belong to a group. Also some ideas on the urban-rural divide that has consequences that leave people on either side puzzled (Brexit, Trump etc.)
A highly imaginative, original, and underrated, world setting.
Also had the distinction of having a sequel in the form of a video game, with the game's story written by the book author herself. 
The game (for the PC, Apple II and Commodore 64) was way ahead of its time in 1984:  and I only just heard of it and the books last month! It definitely needs more recognition.
Ctrl+F these names in this page for rationale.
Is there an "awesome books" repo on Github? I wonder.
It opened my mind to understand metaphors and analogies in literature. It allowed me to peek under the surface of text. Seriously, every written piece I read after that was different for me than before.
It also gave me more insight in the human mind and psyche.
Being able to read and understand more literature also gave me more perspectives and deeper understanding of the world and place of mankind in it.
Some other nice reads:
"The Way of Zen" - Alan Watts
"The Book" (On the Taboo Against Knowing Who You Are) - Alan Watts
"Demian" - Hermann Hesse; but I wouldn't want to read it earlier. I think I read at the exact best time for me (in my late 20s).
The fifth discipline (Peter Senge): This book is one of the systems thinking references and it helped me to learn more about hidden dynamics in the world around me. I truly wish I've read this when I was junior in college.
Similarly, On Intelligence is an absolutely brilliant book on what 'intelligence' is, how it works, and how to define it.
2) Hooked. Although it's very formulaic, Hooked provides a lot of good ideas and approaches on building a product.
3) REWORK. If you're a fan of 37 Signals and/or DHH, this is a succinct and enjoyable read about their principles on building and running a business.
Currently I'm reading SmartCuts and The Everything Store - both of which are great so far.
Should be called How Minds Evolve as Heirarchies of Darwinian Turing Machines ( analagously to Deep Neural Nets (Dennet cites Geoff Hinton and Edinburgh's Andy Clarke).
"working computer models have been developed that can do a good job identifying handwrittenscribbled, reallydigits, involving a cascade of layers in which the higher layers make Bayesian predictions about what the next layer down in the system will see next; when the predictions prove false, they then generate error signals in response that lead to Bayesian revisions, which are then fed back down toward the input again and again, until the system settles on an identification (Hinton 2007). Practice makes perfect, and over time these systems get better and better at the job, the same way we doonly better" p.178 
"Hierarchical, Bayesian predictive coding is a method for generating affordances galore: we expect solid objects to have backs that will come into view as we walk around them; we expect doors to open, stairs to afford climbing, and cups to hold liquid. These and all manner of other anticipations fall out of a network that doesnt sit passively waiting to be informed but constantly makes probabilistic guesses about what it is about to receive in the way of input from the level below it, based on what it has just received, and then treating feedback about the errors in its guesses as the chief source of new information, as a way to adjust its prior expectations for the next round of guessing."
Which echoes Richard Gregory's concept of vision (or perception) as a hypothesis continually tested against input.
This is Paradigm shifting; weltanschauung shattering stuff. Dennet very clearly lays out a methodology for how all aspects of minds can evolve using heirarchical compositions of wetware robots or :
"Si, abbiamo un anima. Ma fatta di tanti piccoli robot!(Yes, we have a soul, but its made of lots of tiny robots!)" p.24 
For me the reason is simple - it's just the daunting number of pages and it is a shame that I have not read/finished these books.
Despite the title it is useful for learning how to learn in general (not just math). Simple techniques supported by the research. I wish I didn't had to reinvent them in high school, college.
I'm 30 now. I wish I had read this when I was 20. It would've made dating in my 20s so much easier. I came across it last year and it's probably the single most important book I'll ever read in my entire life, for the sole reason that understanding women will allow me to have a successful marriage one day. I cannot recommend this enough.
 Free online: https://www.scribd.com/doc/33421576/How-To-Be-A-3-Man
!For inspiration:! 1. Loosing my virginity (Richard Branson)- Richard Branson's Autobiography. From student magazine to Virgin to crazy ballooning adventures and space! I keep coming back to this when I feel like I need a morale boost. There isn't an audible version for this book, but there is a summary-type version on Audible "Screw it, Let's do it"- does a good job curating the exciting parts.
2. The Everything Store (Brad Stone)
3. Steve Jobs (Walter Isaacson)
4. Elon Musk (Ashlee Vance)
5. iWoz (Steve Wozniak)
6. How Google Works (Eric Schmidt, Alan Eagle & Jonathan Rosenberg)
7. Dreams from My Father (Barack Obama)
!Business & Management:!
1. The Upstarts (Brad Stone)
2. Zero to One (Peter Thiel)
3. The power of Habit (Charles Duhigg)
4. How to win friends & Influence people (Dale Carnegi)
5. How to win at the Sport of Business (Mark Cuban)
6. Finding the next Steve Jobs (Nolan Bushnell)
7. The hard thing about hard things (Ben Horowitz)
8. Start with the Why (Simon Sinek)
9. Art of the Start (Guy Kawasaki)
!Escaping Reality! 1. Hatching Twitter (Nick Bilton)-Sooooo much drama! Definitely learnt what not to do! Very interesting read.
2. The accidental Billionaires (Ben Mezrcih)
3. The Martian (Andy Weir)
4. Harry Potter Series.
5. Jurassic Park || The Lost world (Michael Crichton)
6. Ender's Game (Orson Scott Card)
7. Ready Player One (Ernest Cline)
!Other honorable mentions:! Actionable Gamification (Yu-Kai Chou) I invented the Modern Age (Richard Snow) Inside the tornado (Geoffrey Moore) Jony Ive (Leander Kahney) Sprint (Jake Knapp) The lean startup (Eric Ries) The selfish Gene (Richard Dawkins) Titan (Ron Chernow) The inevitable (Kevin Kelly) The Innovators (Walter Isaacson) Scrum (Jeff Sutherland)
!Most if not all have an audio-book version!
If you are in a startup or plan to start one soon, reading/listening to books should become a routine. I try to get through at least one book a week, sometimes two.
1. Flowers for Algernon - Daniel Keyesbecause it's so beautifully written and made me experience a flood of emotions.
2. The Little Prince - Antoine de Saint-ExupryAgain, a very touching, charming book about a little kid's world(universe?) view, told through his adventures.
1. The subtle art of not giving a F*ck - Mark MansonOpened my eyes to what I was possibly doing wrong with my life.
2. Radical Acceptance - Tara BrachStill currently reading it, but I wish I'd found it earlier.
This book is a detailed research on what's wrong with the world and what can be still done. The chapter II brings inputs from various culture on approaches that could improve from ground up. Must read book for us and future generations.
Can someone suggest something similar to this book?
I've collated the ones with interesting reasons for reading them here --> http://shelfjoy.com/sia_steel/books-hn-wished-they-had-read-...
- So Good They Can't Ignore You- Deep Work- Hackers by Steven Levy (perhaps my favorite book)- Learning How To Learn- The Person and the Situation- The Art of Money Getting- Make It Stick- The Algorithm Design Manual- Moonwalking With Einstein- Extreme Ownership
It was the first time I read someone who was thinking about the mind like I am and was able to put into words some of my own more vague thoughts.
It's definitely going to leave you thinking.
The Mythical Man Month && Design Of Design by Fred Brooks
Hitchhikers Guide (Existentialism does not have to be edgy)The Foundation Series (Bureaucracy and Institutionalization will never undermine Ingenuity)Dune Series (Plans within plans)
We live in a world of thieves masqueraded as leaders.
Saving the Appearances: A study in Idoltary by Owen Barfields
You won't regret it.
Germs guns and steel. Jared Diamond
Influence, the psychology of persuasion. Cialdini
Justice: what's the right thing to do. Sandel
All of Feynman lectures on physics
The hard thing about hard things. Horowitz
Al muqqadimah. Ibn khaldun
This is a very interesting book that emphasises how small persistent things matter in life. Changed my worldview for good.
Start With Why
The Subtle Art of Not Giving a F*ck
Think Like a Freak
How to Win Friends and Influence People.
Think and Grow Rich.
The E-Myth Revisited.
The Science of Selling.
(stuff about stoicism)
Remembrance of Things Past -- I'm still reading this, as it's a massive stream of consciousness book, but I wish I'd started it when I was younger so that I'd be done with it by now. It's just so weird to read it and experience the writing that I enjoy it for simply being different. As you read it just remember that every ; is really a . and every . is really \n\n.
Van Gogh: The Life -- I absolutely hate the authors. They're great at research, but I feel they had a vendetta against Van Gogh of some kind. Throughout the book, at times when Van Gogh should be praised for an invention, they make him seem like a clueless dork. Ironically, their attempt to portray him as a dork who deserves his treatment ends up demonstrating more concretely how terrible his life was because he was different. I think if this book were around when I was younger I might have become an artist instead of a programmer.
A Confederacy of Dunces -- Absolutely brilliant book, and probably one of the greatest examples of comedic writing there is. It's also nearly impossible to explain to people except to say it's the greatest example of "and then hilarity ensues".
Mickey Baker's Complete Course in Jazz Guitar -- After a terrible guitar teacher damaged my left thumb I thought I'd never play guitar again. I found this book and was able to use it to learn to retrain how my left hand works and finally get back to playing. Mickey Baker's album also brought me to the Bass VI, which got me thinking I could build one, and then I did and now I've built 6 guitars. I play really weird because of this book and I love it. This book also inspired how I wrote my own books teaching programming and without it I'd still be a cube drone writing Python code for assholes. If I'd found this book when I was younger it most likely would have changed my life then too.
Reflections on A Pond -- It's just a book of this guy painting the same scene 365 times, one for each "day of the year" even though it took him many years to do it. All tiny little 6x8 impressions of the same scene. I learned so much about how little paint you need to do so much, and it's also impressive he was able to do it. I can't really think about anything I've done repetitively for every day of a year. I've attempted the same idea with self-portraits but the best I could do was about 3 month's worth before I went insane and started hating my own face.
Alla Prima: Everything I Know About Painting -- Instructionally this book isn't as good as How To See Color, but as a reference guide it is about the most thorough book on painting there is. It's so huge it's almost impossible to absorb all of it in one reading, so I've read it maybe 5 times over the years.
Talk to the content managers and people that will be using it every day. Ease of use is key in a CMS. Most enterprise CMS will have functional parity but vastly different UX/UI.
1. See if it has to integrate with any software. Find out what marketing really really needs to still have, and what they could switch out if necessary.
2. See what they do. What kind of changes they need to make and how often. Find out what sorts of changes cannot wait weeks for an IT ticket.
This could narrow it down, and then you can get input from the other departments and iterate toward a decision.
Then have them play with it. They'll probably say oh shit, why can't I just do _____.
In the end, the company is now using several: SugarCRM enterprise, Alfresco, Target Process, Github, etc., based on solving different needs and goals.
That said, everybody seems to move to Wordpress these days. Its not nearly as diverse as it used to be.
I'm part of a team that spent the last two years organizing job fairs. The thing we've noticed is that while they're a great way for recruiters to reach out to candidates looking for jobs, these type of events didn't get the digital love they should deserve.
We want to make organizing job fairs as easy as drinking water. We've recently launched a GitHub org and intend to make everything out in the open (https://github.com/fairplanner for more details) because we believe that open-sourcing our ideas will lead to a better product for our end costumers.
As you know, launching a start-up can be hard at the beginning, and we desperately lack marketing/branding skills. It would be awesome if you could help us out ;).
UI, Make sure after you get the changes green lighted you stay and implement them as well.
It usually isn't sustainable, but can be helpful during launch of a new game to make sure it gets attention. I think it was easier than cracking the Top Free list, since fewer apps have IAP.
The ad team at my previous game company would do this and not tell the rest of the rank-and-file employees. We'd be psyched to see our app in the top grossing list... meanwhile the ad team would be spending more money than we were earning.
As for the calculations, Apple updates roughly every six hours and I think (the algorithms not being public for a good reason, I have no real proof), they take into account the total sum revenue during the last period, but also use the relative delta revenue as a factor, so even with slightly lower revenue a suddenly popular app can appear higher in the rankings.
They also seem to change the algorithms every once in a while, we've seen pretty drastic changes overnight a few times, eventually though the top apps always normalize around the usual suspects, so it's possible that they just do some sort of reset of historical data that also affect rankings.
EDIT: some research later indicates that it's possible allowing a user to sign up outside the app (and outside a webview initiated by the app) skirts around the policy , since the user can return to the app and log in, then use their account for payments.
It includes both in app purchases and cost to buy.
If you contact idaireland @ ida .ie, they may have some relocation help available to avail off.
PS, there is an update at the bottom of that register article about backdoors. The EU is NOT requiring them.
"A spokesperson from the EC got in touch to say that Jourov's words had been misinterpreted and there is no plan to introduce legislation covering encryption. The proposed laws will instead cover faster access to material held in the cloud in different jurisdictions. Material that, presumably, they expect to be unencrypted"
This is the key point, there is quite a lot of scaremongering on the internet and in the media. To me it looks extremely unlikely we will get anything that will result in damage to our ability to do business from within the UK.
So far there are no encryption laws in Canada, and nothing on the horizon, although you never know what could happen in future (if we get another idiot like Stephen Harper in power).
However, it also has plenty of challenges, from population/talent size, costs, weather, etc. From a cursory look, immigration looks relatively easy if you have a job.
Why don't you start a new political party ?
I specialize in managing small, early-stage software teams. Contact me via the email in my profile if you want to discuss the specifics at your company.
How many are planing on using mongo... Zero (and one "why the fuck would you even ask this)
How many have used mongo 2 out of 20.
Why would you today pick mongo when there are so many better choices out there?
Trying to get in right before the IPO means that most of the money is already on the table and that will be priced into your options. If you think this is a method to get quick-cash, you're very wrong. Instead look to join a company ~1.5 years out. Why? 1.5 years = 1 year vest cliff, purchase shares. You then have to sit on them for 1 year to get capital gains tax instead of income tax.
You're also barred from selling options usually the first 6 months of the IPO. Thus, 1.5 years is perfect.