Don't do that.
Most companies go with the mode don't hire unless the candidate is a great fit, because they don't want to bear the cost of a mistake. I have failed a decent number of interviews, some on technical ground, some on personal ground. I still think I am not a bad programmer, despite the failed interviews.
Like you I also have doubts about my abilities despite 12 years of work history in the Valley. Impostor syndrome.
Realize that most people are not as smart as Zuckerberg, and that they don't have to be. Don't use geniuses as a measuring stick of yourself.
The most important question is whether you like coding. If you do, pursue it. Whatever deficiencies you have, you will mend as you get more experienced.
As you build it you will learn a) best practices and b) what "good" code looks like.
Your code will begin to merge with the style of the good during this project and will rub off on the next project you choose. Eventually you can do a green field project where there is no good example code of. Still, there will be examples of the building blocks, and how you architect other kinds of building blocks together, so you can then learn how to properly architect a project. Now you will be better than a huge amount of programmers because a) you care and b) you have built a few real world projects.
Speak to your strengths in the interviews, reference successful projects and what you did on them. Remove any absolutely terrible code from your GitHub etc. If that means starting from scratch, that's fine, because none is better than terrible, and most people agree a GitHub is not a prerequisite for most jobs. That being said, casual hack projects and attempts on your GitHub is not bad. It means you are interested.
Besides practical projects, be sure you have "completed your education" of classic comp sci topics -- just because you graduated from uni doesn't mean you know all of the classical topics and common interview questions. We all need refreshers. Try to focus on the parts that apply to real world projects, sure, but be sure to have the fundamentals down.
Good luck and stay hungry to find good solutions and take those hacker rank style challenges one a time. You will be great eventually, and able to get a good job soon.
HackerRank/Codility is a very narrow specialization of computer science - dynamic programming. Pity that such narrow domain has become the benchmark in evaluating the skillset of a software professional.
But aside from that avenue, It sounds like you may have been burned by interviewing for coding roles too early. In my experience CS degrees are great for computing fundamentals, but not so great for the real-life project experience that they'll be looking for. Building a few reasonable sized projects from start to finish is where you'll start to get the hang of design patterns, data structures and pretty code. You have to work through building a bunch of crummy projects at first before you start to realize where you can improve for the next ones, and where design patterns will start to make sense.
One thing to be aware of is sometimes the interviewer is totally into tech stack X and if you're not into tech stack X you're going to have a bad time, no matter how good you are, so don't take it too personally (but I know that's hard!).
For example, I work in bioinformatics and the coding problems I face day-to-day are by no means insanely difficult. If you have a decent grasp of biology, many people would love to employ you as a bioinformatician (pay is low however).
That's subjective and is up to you. I don't see any reason anything you've mentioned necessarily disqualifies you from a programming job.
It seems like you are taking the rejection from the VP to heart. Consider something else -- they decided to interview you knowing that Python was in the req and wasn't on your resume. Either the VP is disappointed at HR wasting his time or he was willing to give you a chance. If it was the latter, what could you have done to impress him / show some competency in the required field? Could you have offered to study the language and do an interview homework assignment? Could you have played up your current programming skills? Did you have enough time to learn the basics of the language before the interview?
> I spent a year working on an ecommerce site ... I never had to use design patterns nor data structures. I just pieced it together.
You built a project! Focus on the positive. Even better if you did it by yourself and on your own initiative (not as part of a class project). Unless you installed turn-key software, it certainly did require data structures (arrays, queues, hash tables / associative arrays / dicts) and algorithms (sorting, database lookups). Most basic web work only uses a very few vanilla ones. Unless you've already optimized it, you can probably find a way to do multiple things in parallel or batch some DB queries and then highlight that. Web sites frequently can benefit from memoization or caching. There are TONS of tricks for serving web pages faster.
There's a world of security-related topics surrounding ecommerce / web sites (XSS, SQLi, clickjacking, etc). There's also web fundamentals that I question interviewees (http protocol, auth, sessions, cookies).
> I passed all the shown test cases, the final results showed that I got the following scores 13%/95%/0%
Would you feel more or less competent if that 0% score was a bug on their end? Consider both forks of the decision tree. Consider the likelihood of each. Do something about it. Try to tweak your submission and iterate. Or focus on a different tool. Try "code golf" on HackerRank or try math problems on Project Euler.
So, maybe you are just not passionate about programming? Realizing this is not a bad thing.
I'm able to get a job most anywhere these days.
One more thing - it'd help to include how long you've been out of school, how many interviews you've been on, where, etc.
Right now you're in crybaby mode, masked as 'give me advice'. What you're really asking for is some sympathy from strangers.
Software dev is one of the easiest fields to get a job - try being a psychology graduate. Wipe them tears, figure out what information you actually need to get a job, ask, learn, apply, work hard.
This is not optimal. At the very least having knowledge of usual data structures and some common design patterns is kind of a requirement to get any decent development job. But I think you might actually know more about data structures/patterns than you think.
When working on the ecommerce site, you must have had come across some of these. Let's say the site was written in a high level language. For sure you have used/seen classes, array (or some higher level wrapper like lists in Python or slices in Go), hash maps. When fetching products to be displayed in the "storefront" part of the site, you might have used array/list/slice to store these.
I assume the ecommerce site used database to store data. So perhaps there was singleton pattern used to get a database connection (although this one is not the best example). What about dependency injection? How was configuration passed to objects?
Did some classes inherit from other classes? Did you see interfaces? E.g. a classic example is a payment method interface and then specific implementations for different payment methods (card, direct debit). If there are interfaces it's quite likely you will find a factory to get instance of a specific object implementing the interface?
>>> 2) I have a lot of trouble with "HackerRank" style problems. I just finished one, an hour ago, called Codility. Even though I passed all the shown test cases, the final results showed that I got the following scores 13%/95%/0%. The 0% was a debugging problem that required a max of 2 line changes. I have absolutely no clue how I got a 0% there.
Try more of these courses, with practice you will get better. It's very likely you have missed something very obvious with the problem where you got 0% although you thought you got it right. Perhaps you haven't tried it with all example input values?
Anyways, I would start by taking small steps. Whatever job you currently have, try to become a better programmer by using new or better techniques while in your 9-5 job. Perhaps refactor some old part of codebase and use more effective data structures to make the code more efficient. Use objects and composition to make the code easier to read and understand. When working on a new feature, write unit tests alongside the code.
Also, when it comes to interviewing, you will also get better at it with experience. I have had quite a lot interviews in my career and I can definitely say I was pretty bad at interviewing 7 years ago. Today I am noticeably better and do very well in most interviews and whiteboard exercises.
Do an online exercise or two, study up on data structures and patterns, maybe create some small project to keep some fresh programming footprint in memory. Then go try more interviews, you'll do much better.
Remember that interviewing is both a negotiation and is highly subjective. If you do well, but aren't a great fit for the open req, you may find a new req is created for you. Follow up with HR if you get rejected for a position to see if there are any other positions that might be a good fit. Ask HR if they have any constructive criticism from the interviews.
Some interviewers will suck. Walk it off. I've been berated and given backhanded compliments by interviewers. You need to evaluate what you did in the interview and what you could have done better. Sometimes your effort will simply not make a difference -- you will need to learn to accept that. A mentor in the industry and your college employment office should be able to help you hone these skills and develop some new soft skills (the things that employers look for but don't show up as line items on resumes). Sometimes you just need confidence and you can get that by practice. Nobody likes rejections, but at least they come with practice.
Ask your interviewer what you could have done better. You may not get a satisfactory answer (interviewers and companies may create liabilities or violate policies by answering those kinds of questions), but it can't hurt to ask. I will spend a little more time than most interviewers to try and coax out anecdotes which show initiative and grit. These don't necessarily have to be coding related -- they are attributes of people, not only of coders. If those anecdotes aren't prepared by the interviewer, I politely suggest that those things are great to open with.
Programming is largely about learning on the job and less about memorizing APIs. I want someone who truly wants to work at the same company (is at least somewhat passionate about what we do), wants to row in mostly the same direction (or at least get to the same destination), who is humble enough to want to improve their skills, and who takes the initiative to fix issues before they become problems.
If you can improve your next interview by learning from a previous mistake, do it. Certainly brush up on data structures and algos before you interview. This will require knowing which one to use in a given scenario.If you interview for a Python position, know how the language compares+contrasts to languages you know. Spend at least a little time rewriting code into Python. Open the REPL and play around. Look at Rosetta Code to compare a chunk of code in a language you know and your target language. Do some "code golf" (see HackerRank section) in the new language.
When you code on websites like HackerRank, make sure you iterate. Just because you completed a task doesn't mean that's an optimal way to solve it. Revisit tasks you have solved and try to optimize them. Try to find out how others have optimized them.
Another example of good work is Papa hiker's channel. Lately I've been thinking about getting a tarp for camping rather than a full tent, and there are a lot of videos that attempt to illustrate how to pitch a tarp in various configurations, but most are just overlong, sodden messes of rambling talk. Papa hiker's videos aren't perfect, but they're concise and well Illustrated.
Their site says:
We have one shared aspiration: democratizing access to institution-grade financial analytics. Alpha Vantage is one of our deliverables towards this purpose. It provides free JSON APIs for stock market data, augmented by a comprehensive set of technical indicators.
The more granular or quickly you want the data, the more it will cost. In addition to paying for the initial data, you are not allowed to redistribute the data, in real-time or historically, with out paying royalties to the original data providers per user.
This creates a complicated accountanting system for data delivered to end users of the data.
Aggregate market data vendors (Factset, Bloomberg, Activ) pay for the initial data and then pay per user/query/etc...
Some data becomes available for unlimited distribution based on licensing, usually this data is time delayed and not allowed to be queried for historical analysis. You'll often see things on Yahoo or Google Finance that say "market data delayed by 10 min".
One of the most common sources of this delayed data is yahoo and there are open APIs for querying it. Usually in Python or a statistically language like R.
Interactive Brokers has an API you can add to your brokerage account for programmatic access across multiple exchanges. Which provides market data and order entry.
If I miss understood you, and you are interested in a open API standard for financial data there are several FIX, ITCH and OUCH are some. But they are almost always forked per exchange and sometimes even per product.
tl;dr It's not the API or infrastructure that costs, it's the data itself.
Ultimately it's due to that APIs used to generate wealth generally cost money.
And I've only talked about static data. If you want to actually trade, it gets much, much, harder.
Besides, nothing excites me more than looking through a bunch of third-party data provider websites that look like they were made in 2002, half of which don't even list their pricesbut instead rely on sales teams to bilk the customer out of whatever they can pay.
Of course, that isn't to say you can't get your data directly from the exchange:
The only caveat is that you might need someone versed in Microsoft or Oracle enterprise licensing hell to actually decipher what's going on there.
Do you think they'd place different values on a glass of water? Do you think they'd interpret the glass of water differently?
As for reality being subjective -- do you look before crossing the road? when was the last time you jumped naked from the top of a skyscraper? would you enjoy a plate of plutonium for breakfast?
That being said, I'd just check 2-3 reputable newspapers
Consider running your authentication service as a separate node server so it can scale independent of the rest of your application.
"The Manager's Path:A Guide for Tech Leaders Navigating Growth and Change"
It's the book I wish I'd had when I was in your position 4-5 years ago.
The book is old, from IBM's heyday but most of the principles have remained unchanged.
One thing you'll find different is that they recommended offices for everyone so that each person could work in a quiet environment where they could focus as opposed to today's open area. I'd argue the open area has it's merits but everyone wears headphones so the current trend may not be all that great. Promoting a team that communicates is the goal, having an open space is merely one way to try and implement that.
I tend to use a "call to action" "Sign Up", "Register," etc. And then link to a landing page with a "Coming soon ... " message. I have also had an option to submit an email to get updates. So I could track both hits to the page and compare to how many also submit an email.
I am not sure which is better. A 404 may detract from confidence of the site, and it may also lead to a single user refreshing the page or visiting multiple times, thereby skewing the results. Though, a landing page may also be annoying for the user.
I do think it can be done in a way that can both test actual interest without abusing the user.
Bear is built on CloudKit. I'm not versed enough to know if it's the best out there, but it's better than plain text for sure.
"On the Futility of Email Regex Validation"
Meetups for same reason as above.
Also Craigslist has surprising yield, despite lack in diversity.
Open source (-ish?) Yubikey alternatives
https://sc4.us/hsm/ $75 | https://news.ycombinator.com/item?id=12053181
https://trezor.io/ $99 | https://news.ycombinator.com/item?id=10795087 (not much on HN)
https://www.floss-shop.de/en/security-privacy/smartcards/13/... 16.40 (OpenPGP Smart Card v2.1; 4096-bit keys)
https://www.fidesmo.com/fidesmo/about/privacy-card/ 15 (NFC only; recommended by the terminated SIGILANCE OpenPGP Smart Card project; 2048-bit keys)
It is also hackable: https://doc.satoshilabs.com/trezor-tech/resources.html
The device uses strong encryption (where legal), and goes beyond U2F to include password management, certificate storage, OTP/Google Auth, and plausible deniability. The hardware is teensy-based, and the firmware is open source. The devs have released fairly regular updates, and even encourage hacking on it to meet custom needs.
- Lets me store certificates and PGP keys
- Has two factor authentication (U2F)
- Has open hard and software (source-available)
Basically, a USB pen drive that allows U2F, and is can be made read only (either by a switch or only writable over a special interface). I don't really need tamper-resistance, pre-generated keys, smart cards or any other advanced features.
The alternative to Yubikey that I am aware of is NitroKey, but can't say I am aware of how they match up, feature for feature
It's fully open-source, but the only standard application currently supported is U2F.
Disclosure: this is my product.
I've been toying with the idea of building an open source replacement and fabbing it with a shuttle service but ultimately the cost is really too high to justify.
Can't vouch for it (either product or support), but it exists.
The following example security application ideas illustrate the flexibility of the USB Armory concept:
mass storage device with advanced features such as automatic encryption, virus scanning, host authentication and data self-destruct OpenSSH client and agent for untrusted hosts (e.g Internet kiosks) router for end-to-end VPN tunnelling Tor bridge [see this, for example] password manager with integrated web server electronic wallet [the Electrum Bitcoin wallet works out of the box on the USB Armory. It has been tested with X11 forwarding from Linux as well as Windows hosts.] authentication token portable penetration testing platform low level USB security testing
I've had 2 Yubikeys replaced at their cost after published security exploits highlighted shortcomings. Also haven't had one fail on me yet. Would be curious to learn what your experience was.
The problem currently is a) most sites want passwords b) I do not want to mess with cables c) NFC is not ubiquitous.
That said, I have looked for alternatives and found none.
I am most disappointed in the mediocre coverage of their RDP drivers. I need to use all the features over RDP. Some work and some don't.
AFAIK they are used at Mozilla. The Firmware is Open Source. Downside is that not all their dongles support U2F.
The gotchas I've encountered while using them on OSX:
- The pins for PIV and OpenPGP are separate as these are separate modules on the card. - You can't use the PIV or NEO GUI managers and gpg at the same time. You might have to unplug and plug the token back in when switching back and forth between GUI/cmdline Yubico tools and gpg. - Forgetting to change my environment to use gpg-agent instead of ssh-agent. - Typing in my local password instead of the PIV pin when logging into OSX while I have a token with PIV enabled plugged in.
For people asking about backing up material on OpenPGP modules: these are write only. Generate your material locally with gpg instead of generating them on the smart card itself and use the keytocard command to copy the keys to the card. You can backup your keyring prior to moving keys and restore it before copying keys to each card or ctrl c out of gpg without saving the keyring references for the material that was moved to the smart card.
I used bits and pieces from a few guides to get the setup I wanted as this was my first experience with smart cards and advanced use of pgp:
Overview of my process (on an air gapped machine):
- Configure gpg.conf. - Generate master, subkey, and revocation material on an encrypted USB drive for offline backup of materia along with revocation certificates. - Backup original .gnupg directory to another folder on the encrypted USB drive. - Copy .gnupg directory to second encrypted USB drive for offsite backup. - For each smart card I wanted the same material on: -- Change default user and admin pins. -- keytocard subkeys for (S)ign, (E)ncrypt, (A)uthenticate (without saving keyring). -- Require local touch for all material ( Yubico specific: https://developers.yubico.com/PGP/Card_edit.html ). -- move on to next card. -- save keyring after running keytocard on the last card so the subkey material no longer exists in the local keyring, only references to it (this might not be necessary, I need to test). - Generate a copy of the keyring without master key to use on daily machine(s). Might also only need to have the master material minus the key in the keyring as noted above. I haven't tested how - Copy new keyring to another USB drive for transferring to daily machine(s). - Configure gpg-agent.conf and gpg.conf on daily machine.
Not to dismiss YubiKey but companies that can afford 2 factor and take security seriously already have SecurID for a long time.
I see the personal wiki as an evolution of the commonplace book, that was kept in the past by the likes of Darwin (https://en.wikipedia.org/wiki/Commonplace_book). Here are some of my notes from the book Where Good Ideas Come From
"We know much of Darwin's thinking on the development of his ideas from his extensive notebooks, which he read, and re-read and recombined. This era was the time of the 'commonplace' notebook, in which long passages of quotes from other sources and thoughts were recorded. Reading and writing were apparently quite related. These books may have struck a balance between silo'd organization, and utter chaos, allowing the development of theories beginning with hunches which could then be further developed. The key to developing a hunch into a theory appears to be writing it down "
Set aside front-matter pages for indexes and update them whenever you review the contents.
Write the subject, date and page number on every page.
Throw the notebooks away when they're more than ten years old. You're a different person today and if you didn't use the idea then, that idea probably isn't going to be relevant today.
Bad ideas will decay. Good ideas will echo. The hard part of the experience is knowing that 99% of your ideas will never be done.
The main problem I have is the same was what the OP alludes to: I write things down, but I don't have a good system for periodically revisiting old notebooks and reviewing previously-written-down ideas.
Every day I transcribe the notebook into the text file.
Every time I start a terminal window it gives me the top line, and rotates it to the bottom. I then review that idea and either do something about it, or just delete it from the file.
1. Very easy to form a company in Germany as a foreigner2. You will need a native german speaker, it's beauracratic and you need to speak solid German to deal with it.3. Taxes are higher than the US, but they are fair. You pay more as you earn more.4. There are many taxes as an individual you can claim back, such as clothes, travel to work, space in your house etc. If you get a good accountant they can really help.5. Berlin itself is very cheap to get a great location, good tech talent but not overflowing, incredibly decent lifestyle, lots of space, lovely place to live a chilled out vibe.
I'd say if you've lived in Germany and Berlin and like it, you can do it. If you have never lived there you should move their first and see if you like the German way of life first, it's not like US or UK.
The procedures to open a startup in Germany are complex. This is the cheapest way:Go to the notary and create a "UG" after "Musterprotokoll". Create a company bank account, transfer the minimum amount of 1 (plus the costs for founding, so you better transfer ~500). This the fastest way and costs you together with an entry the commercial register (150) around 500 (300 for the notary, depending on how many founders). This is followed up by stuff like "Krperschafts Anmeldung @Finanzamt", "Gewerbeamtanmeldung" (25) and "IHK Gebhren" (80/yr) and "VBG Anmeldung" (costs vary by the amount of employed persons). Don't forget the contract for the CEO as employed person.
As already told by others: You need to have a native speaker on your side to deal with the bureaucracy. Is this a startup friendly environment? Does it sound like? Hell no.
On the other hand: You can live in Berlin really cheap if you want to. Infrastructure is great and you don't need a car. There are a lot of meetups and startup events to get around people like yourself. Programmers aren't payed that well. Fundraising is a matter of network and traction like, i'd say, everywhere else.
In recent years I have interviewed as a Software Engineer and Senior Product Manager at a couple startups in Germany. However, after receiving a couple offers, I found that the costs of living in Germany as an American (US Taxes, Visa, USD -> Euro exchange rate) were not sufficiently covered by the salaries, even on the high end.
For American companies looking to hire talent in Germany, I have heard that it is was less competitive, lower cost per engineer and the talent top notch.
Are there any good resources people have used for finding freelance work internationally or that are even specific to Berlin/ Germany?
Berlin is certainly the best place to found in startup in Germany. The ecosystem is huge and a large portion of people are from other countries, thus it is very international (and english speaking).
Of course there is a lot bureaucracy in getting the company started, but you are not the first one to do that and there are people helping you.German tax law is complicated, thus it is definitely worth hiring an accountant to do all the paper work for you (if you run a proper business with customers, not just a stealth startup). We did some price comparison, in particular for lawyers to draft some contracts, which revealed a huge difference (range between 100 - 350 euros/h) and helped us save a lot of money (we even got a fixed price). Same for tax accountants. I strongly suggest picking small offices, not the ones with fancy offices in expensive locations. You'll pay for that and the service is almost identical.
Depending on the legal entity you choose (UG, GmbH, ...) the costs vary. GmbH are most common and have a good reputation, but are expensive if you have multiple owners. Also you need to invest at least 25k upfront (therefore the good reputation). UGs are cheap and you can do business as well, it just looks cheaper on your business card. Of course there is more to take into account, but that would lead too much into details.
To get more information about founding in Berlin, there are plenty of meetups for all kinds of topics and the state Berlin as well as the board of trade (IHK) are very interested in helping founders (they are their future members). There you'll find even more fairs and events for founders.
If taxes are mostly what matter to you, then there are probably better places to relocate to.
Berliners can be very nice in certain situations, such as the people you work with, but they have a hostile service culture. Not every time, or in every service situation, but you will have enough bad experiences in shops, restaurants and trains to find it annoying, especially if you are accustomed to the more positive service culture in the US, UK and Ireland.
The other problem is that many Berliners regard young foreign workers as being the reason why rents are increasing and this became a political issue a few years ago. I'm not sure what the current situation is but, at that time, you would see graffiti around town, letting you know that you were not welcome, and you would frequently hear the same sentiment expressed in social situations. Ironically, the people who were quickest to let you know that the foreign tech workers were not welcome were the same "anti-fascist" trendies who call everyone else racist.
This hostility wasn't something I experienced when living in other German cities, it seems to be a Berlin-specific phenomenon.
2. Cypto currencies could be used as a reserve currencyhttp://btc-times.com/cryptocurrencies-will-become-reserve-cu...
3. could be used as a settlement system
I've seen a few Ophthalmologists, official diagnosis is Blepharitis but ultimately my eyes are constantly tired, floaters, sharp pains, dry from the moment I wake up and have nearly constant muscle spasms.
I've tried fish oil, antibiotics, Restasis, numerous drops and gels, various apps, changing behavior etc. I haven't found the silver bullet but I give my eye lids massages and try to drink plenty of water and try to avoid environments that make it worse. I limit computer use to work hours only and am in a role where I only really use a computer for ~4 hours a day. The last few years things haven't gotten worse but haven't gotten better either.
Best advice I can give is take breaks and have hobbies that don't require a computer.
And then about once an hour or so I get up and walk around, preferably outside and look up at the sky for a few minutes (focusing on a different distance). You could even just focus on a far wall or something instead, but I prefer nature. I've read that that helps once somewhere and it does seem to help for me.
I wear glasses and would describe my eye problems as being mostly about having dry, tired eyes. As I age, my prescription is changing so I almost need bifocals (but I'm too stubborn to get them).
With those issues, the following has worked very well for me:
1.) Eye drops. Visine is absolutely amazing and, as a bonus, whenever my daughter keeps me awake all night, my eyes aren't red the next day.
2.) Walks. Since my daughter was born, I have been putting on the pounds. So, I kill two birds with one stone and go for a walk about every two hours.
3.) Change my focal point. There's the old 20:20:20 rule (every twenty minutes, focus on an object twenty feet away for twenty seconds). I'm not that rigorous, but I do something similar.
4.) Force myself to blink. At a hackathon in December, I sat across from a developer who told me that I don't blink very often when I am deep in thought. Oops.
Of course, nothing beats spending a little less time looking at the screen, though...
I suggest first minimizing eye strain by ensuring you have proper background light, and that your screen brightness isn't too high. Beyond that, try and remember to blink. It helps to take a moment every once and a while and just close your eyes for a few seconds. Even better if you just take regular breaks, focusing on something other than your screen for a few minutes. Periodic breaks have benefits that extend far beyond just your eyes.
From what a doctor told me after a recent abrasion, your eyes move around while you sleep, and if you have dry eyes your eyelids will irritate your eyes. Obviously, if they irritate you enough it'll disrupt your sleep. After a few days of use when my eyes started to heal I slept like a baby, and felt great after waking up.
I still regularly use eye drops, but if my eyes are noticeably dry I'll use the eye gel during the night, and by the next day my eyes will feel great.
I also use f.lux as well as using saline eye drops at the beginning and end of the day.
Frankly, I don't know what do do else. I'd be curious for tips people have.
I try to couple it with short meditation breaks, 5-7 mins, to get in the habit of switching my brain off and giving my eyes a rest.
Around the same time, it was revealed that my partner who I had a formal agreement with, had known for years, trusted and considered family, had actually gone behind my back, while lying to my face, and began working with the former partners above, to make a deal for herself, to undermine my position from the inside.
Three big betrayals in as many years. By people who I had considered family and the ones I could actually trust. It has been very hard to deal with. Particularly hard was I remembered a time when I actually trusted people and I felt strong and life was good. But as soon as I showed some signs of weakness, it was like everyone I had been close to suddenly piled on to take advantage of it. It really felt like kicking me while I was down, by those whom I considered I could trust with everything.
But I still think of trust as something important, so my question is how do you handle betrayal by your inner circle, and how do you trust people, any people, not necessarily the betrayers, after you've known it?
There was an episode of some kid's show where there were two women who saw the future. The one who saw only bad outcomes was very happy because any time things went better than that, it was a pleasant surprise. The one who saw only good outcomes was miserable. She was constantly disappointed by life. It never lived up to her expectations.
So, I basically try to be the person who sees the bad outcomes in advance and then gets to be pleasantly surprised when it goes better than that. That isn't entirely accurate. I don't mean that I assume that all people are dreadful, but I do assume that people will tend to act in their own self interest, even if that means hurting me.
But I do try allow for the possibility of being pleasantly surprised. There are ways you can ruin the whole thing by hanging your crap on other people and signaling to them what rat bastards you assume them to be. So, don't go around TELLING everyone you expect them to be awful, but do be aware it is a possible outcome and account for it, to the best of your ability.
Also, trust is earned. People need to prove their trustworthiness. That is nothing you should give away too cheaply. You can observe how they act and make some inferences about how they are likely to act in the future based on past behavior. You can also "test" people by entrusting smaller things to them and see what they do with that before putting larger things on the table. It needs to be something genuine. You need to have some real skin in the game. But make sure to limit how much of your hide they can take if it goes south, until their actions show you they will protect your hide, even under difficult circumstances.
On a personal level, I find that simply accepting that people will hurt you, and deciding whether or not being an open, trusting person is worth the harm that might occur (I happen to think it is).
Limit the amount and degree of 'credit' you give people to what you can equanimously accept as a loss, expect people to occasionally violate that trust, plan for it, and understand that it is simply one of the costs of being a decent human being.
I never loan a book, I only give them away. If people later give them back, that's wonderful but not required. I don't ever let someone borrow something I wouldn't give them as a gift on the spot. In business, you either have full control, a negotiated agreement (which should cover things like how to make decisions when you disagree), or you're just a passenger along for the ride.
People minds are dynamic systems. Even if you trust a human now, you can never be sure what changes will occur in the future to make that human choose differently then expected based on previous experience - child sickness, family troubles, hormonal disturbances, environmental toxicity, parasites, whatever really ... anything can influence human behavior in radical manner.
Notice that time here is relevant. Given small enough time scale, you can definitely trust people. And vice-versa.
So, the question is not how to trust people, because you can't trust anybody given enough time, the question is how to plan things in your life so that broken trust isn't detrimental for your status.
You can find a lot of similar stories and advice on stackexchange: https://money.stackexchange.com/questions?sort=votes
I recently got fucked over by an ex-GF then long-time friend. Good Canadian girl. Daughter of a preacher. It can be hard to judge someone's character
- Friends and family don't mix with business. Their perception of what happens will be different than yours.
- Handshakes are only as valuable as mutual self-interest. If you're doing business and need to hold people accountable, you need written contracts.
A friend is someone whom you have a mutual emotional attachment with. That connection is between you as individuals, not your business. To be successful in business relationships means that you need to be willing to walk away.
And regarding your 3 unfortunate betrayals, just remember: people can justify anything.
It sounds like they regretted the verbal only, "handshake" investment, and wanted something in writing. That actually seems prudent. Is there more to that part of the story?
I don't trust anyone but my parents to put me before their financial self interest. I don't even trust my siblings to do the same, and we aren't on bad terms, either.
The only reason they wouldn't "betray" you is if they saw more long term value in being in your good graces. It's not that they hate you. It's that they love themselves more than they care about you.
A close family friend is a notary dealing in family estates. From what I can tell about human nature, whenever there is money involved, people fight. Fighting between siblings over inheritance is basically the norm, something to be expected. Same goes for business partnerships where two friends decide they will own a restaurant together. And if they manage to not end up fighting, their families will when one of them dies. Something else to keep in mind.
On a site like this most replies will take you at face value and try to comfort you. Alternative take: you are the common factor in all these supposed betrayals. If we asked the others, do you think we'd get different perspectives on what happened?
Pretend you were working at a company with a hundred engineers. Do you understand how easy it is for every single one of them to simultaneously feel like you do? The React mavens feel like they're just knocking together JS and wonder when they'll be allowed to do real engineering. The backend specialists wonder why they don't understand networking or servers better. The DevOps folks envy folks who build things. The American office wonders why they can't speak foreign languages; the German office marvels that anyone can learn Japanese; the Japanese office worries their English isn't up to the global standard.
There's nothing wrong in specialization -- it's how we stay sane. A very workable and easy to understand formula early in your career is specialize in two things; you don't have to be better at X and better at Y than everyone you meet, you have to be "better at X than anyone who is better at Y" and "better at Y than anyone who is better at X." This is very, very achievable, regardless of how highly competent your local set of peers is.
Also, unsolicted advice as a sidenote, but life is too short to spend overly much time in negative work environments. Assuming the negativity isn't coming from you, changing environments to one of the (numerous!) places where happy people do good work might be an improvement.
1. Programming chips in binary, machine code, and C. You need a variety of chips. Try to learn at least 5 from each manufacturer.
3. Learn Scala, Rust, Haskell, C, C#, Java. (Python and Ruby go without saying).
4. Learn R, machine learning, statistics (prob and regressions), linear algebra and multi-variate calculus.
5. Learn growth hacking (edit:) and lean startup, human centered design, and design thinking.
6. Learn accounting, finance (go through Markowitz, to Black Scholes, Fama, CAPM, and factor models. Read the original papers only and implement everything yourself, in 2 languages).
Now you are ready to read HN.
I'm in this for 30+ years now. (Yikes!). My resume is somewhat nice. I've got a deep store of knowledge and experiences. A large group of people considers me somebody you ask for advice.
And yet, every day, I still learn something new.
Sometimes because it's a new paper cycling about. Sometimes an HN article. Sometimes because some other senior person shares from their wealth of experience. And quite often because a junior does something in an unexpected way - knowledge comes from every corner.
I still feel like I have no idea what I'm doing. I'll probably feel that way for the rest of my life. All my colleagues do.
So, don't worry. There's always somebody who's better than you, and that's great, because you can learn from them.
Fast forward ten years and every discipline of web development now goes very deep. It's still worth it to have a broad skillset, but it's no longer practical to be upper echelon across the board in web development. This generally leads to a feeling of overwhelm and regret that I can't learn all the things I possibly might want to learn, but on the bright side the playground is bigger than ever.
My advice is don't spend too much time thinking about the big picture, instead pick one practical project at a time and spend 95% of your time making it the best you can. Even if you only read HN a couple times a month, that's all you need for basic awareness of the landscape. By giving yourself heads-down time you can replace some of the overwhelm with a feeling of accomplishment, and you'll be growing your skills to boot.
To reiterate though, pick your battles, follow your interests/employment possibilities, and make peace with the fact that you can't know everything.
Up to a short time ago, most humans never ventured farther then 5 miles from their birthplaces in their entire lives. Before printing presses, books, and finally newspapers, all news was word of mouth...a very limited bandwidth indeed.
Even newspapers really were nothing but mostly gossip and had very limited work-related information for almost everyone, so feeling totally overwhelmed by the avalanche of targeted career knowledge is not only ok but actually totally appropriate.
Usernames are de-emphasized and there is no indication of karma/reputation. A trick of perception can lead one to read this forum as if the same handful of broadly knowledgeable people are participating in every discussion.
The reality is, I believe, quite the opposite. There are hundreds of us here, and we all have depth of knowledge in vastly different areas. There are developers, DBAs, sysadmins, doctors, lawyers, writers... I think once I saw someone mention that they were a welder.
Keep that in mind when reading the comments here.
I can't design for crap. I don't understand the thought process and don't even want to put cycles in to trying. It's not time well spent.
I'm also an enterprise founder. I don't mind wearing a suit selling to folks who have obscene requirements with 6 month to year long sales cycles.I don't understand B2C companies at all. I could never run one. The idea of catering to hundreds of millions of people with none of them paying you while relying on VC to scale blows my mind. I feel similar about small business.
I like the idea of a smaller number of big name customers with large requirements. I also understand how they work: They are for profit organizations trying to make money or cut costs. I see consumers (despite doing a ton of data) as a blob of irrational behavior I don't want to deal with.
I also can't do marketing. I can kind of write when needed but my main focus is on technical content or specialized pitches.
Being on HN is very similar to being a founder, you see everything and wonder how the people around you do what they do.Don't worry about it! You hired them for a reason.
Hope that helps!
- There will always be people who are better than you, in any field. I see it as a positive and a great learning opportunity.
- There will never be time to learn everything you want to learn.
The question I try to answer is: Am I doing the best I can at the moment? Of course, this can also lead to complacency.
Fill your bowl to the brim and it will spill. Keep sharpening your knife and it will blunt. Chase after money and security and your heart will never unclench. Care about people's approval and you will be their prisoner. Do your work, then step back. The only path to serenity.
Of course, you, by comparison will seem lackluster. Realizing that a single person on here may be lacking in specific expertise may give you solace.
I often dream about building some project that would provide me passive income to no longer have to work a 9-to-5. It's not that I lack the skills to execute on it, but as a father and a husband, I struggle to find time to commit to such ideas while balancing time with my family. The only time I attempted to build my own product, I ended up getting fired from my daytime job because of performance reasons. It only discouraged me from attempting to pursue anything further.
I've learned that I just can't compare myself to others here, because it just makes me horribly depressed.
More money, better work environment, be better at computer science, etc etc.
These are all different things and require a different approach. The sooner you figure out which one you value more, and understand that you'll have to neglect some other things in order to succeed in that area, the better you'll feel.
For example you didn't mention any education - if you want to not feel like a fraud, you'll have to educate yourself on all the things a common 4 year program teaches you. There is no way around it.
You may score a nice paying job in something like web-dev or mobile where there's a lot of demand, but you'll be blindly stitching other people's code together for a long time if you continue down that route.
The solution is to take some time to go fill in the fundamentals.
The more solid your fundamentals, the smarter and more interesting the projects you can be involved in, but you'll have to sacrifice time and money to get there.
Clarifying your real intention is important.
As for not feeling overwhelmed - by being good at your area of expertise. If you know you're better than most people at one specific thing that's in demand, you don't need to worry that someone else is kicking ass in augmented reality, big data or whatever hype phrase of the year is :)
What may sound super bad-ass might just be a 20 year old intern riffing like a BOSS!
I can usually cure it by going to a Sharepoint developers' meetup, or something similar. Running into people who there who are doing consulting work and doing very, very well for themselves while working significantly less that 40 hours a week and using almost none of the cool stuff that gets mentioned on HN.
I suppose the lesson there might be to avoid a game of one-upmanship with alpha nerds. And I don't say 'alpha nerds' in a derogatory sense. It's just that on HN, you're going to encounter lots of people who will run circles around you in one domain or another. And some people love being the absolute expert in their particular technical domain.
That's okay. Good for them, actually! Everyone should do what makes them happy. You might find you're actually happier in a role that is more concerned with the business problems you're solving than with needing to be an expert in everything you see mentioned on HN. Your technical skills will be important, but not as important as your ability to use those skills to help a business 1) save money, 2) make more money, or 3) both.
Some of it is wrong, some of it will never be relevant to you, some of it could relevant to you but not knowing it will never hurt you. Some of it could possibly be relevant but will be obsolete or out of date by the time you get around to using it. Some of it is nonsubstantive self-promotion. Just focus on some area you want to improve on at a given time and do it. Read what you want to read and have time to read and ignore the rest.
Just because someone puts up a nice-looking blog post with some information doesn't mean they're right, or better than you. Not that it matters if they're better than you. You could be in the top 10% and that still leaves hundreds of thousands who are better than you.
That's assuming there's some pure linear scale of developer quality anyway, which there isn't. People are fingerprints, not points on a linear scale.
It's a fantastic book by a now tenured CS professor that provides a good framework for how to think about your career / career satisfaction. He encourages working backwards from the lifestyle you want to the skills you need to master to where you are right now. His framework provides a lot of clarity and helps you ignore the roller coaster of announcements, updates, and new "things" you FEEL like you need to stay on top of.
You can also just read some of his blog posts - calnewport.com/blog - if you don't feel like buying the book. Or check out some of his interviews, etc.
And calm down: HN users are really heterogeneous. Trying to be like everyone here is impossible. Even you find someone with the same profile as you, it is a nice thing to know that there is something new to learn. A bigger problem is when you don't have anything new to learn.
Edit: And answering your question: I feel overwhelmed when I learn somenthing new here, and there is already another article telling me that what I learned is obsolete.
No, or at least not much. Most people have a specialization or two, whether it be front-end, back-end, mobile, application, embedded, games, etc., which limits the scope of what you really need to care deeply about.
Beyond that, it's a matter of your own personal curiosity and desire to expand your abilities; my reaction to most articles is "hmm, that's interesting; I'll remember that in case I ever need it" with just a scant few meriting a "I need to dive into that because I also want to have that knowledge / skill."
Then I remember the following.
1). I'm employed, my manager is happy with the work I do, and I make enough money to pay my bills, have savings, and live in a decent place in a safe neighborhood.
2). I don't have to be better than everybody else at my workplace. I just need to find an area where I can contribute.
3). When I apply to other jobs I get some positive responses. I know people who would be happy to recommend and hire me if they can.
4). I've met more than a few people who can talk about data science like they can solve any business problem under the sun, but cannot actually do much of anything except talk.
5). There is plenty of stuff I read on HN that is clearly wrong or exaggerated.
I think the key is to focus on what you need today to stay employed and have a realistic assessment of your weaknesses and where you want to go. Then figure out what you need to get there and slowly work towards that that. I don't need to know Rust, Go, and Vue.js because they have nothing to do with my job or where I want my work direction to go. If they day comes when I do need to learn that stuff, I'll learn it.
I've found that it's not often that I need to be as intimately acquainted with a subject as those who are feature on HN appear to be. In fact, just knowing about something has been enough for me to intelligently answer an interview questions, converse with a senior engineer, or make the right decision on a project. And usually that's because what's most important is being curious and asking questions - e.g. admitting to myself that I'm not an expert.
Now, instead of being a testament to my ignorance and personal failings, HN is portal that let's me feed my curiosity.
You may want to do some research on the impostor syndrome. It's been my experience that anyone who's any good at anything is convinced they'll never "catch up."
Yes, there's so much to learn that you'll never have time for it, even if specializing in a small area. It reminds me of a Chomsky interview. He said that he has so many books left to read in his office alone that a lifetime wouldn't be enough. You're in good company.
It may sound obvious but don't forget that HN isn't one person. The guy that knows about particle physics is usually not the one that tell you about the latest type theory research. Don't compare yourself with a collective mind.
Besides, I'm sure there are people less bright than you in all positions you can imagine. Retrospectively, I realize that there are a lot of things I didn't even try for fear of failing or because I thought I wasn't smart enough. It's only a few years later that I realized I missed so many opportunities.
The irony is the more i know the lesser confident i get and i reflect it in meetings. I dont know how to avoid it. I am really looking for a mental framework on how to not look like a complete idiot in meetings although what i say is totally factual.
Eventually I just forced myself to choose one thing and focus on it. When I get to the point where I feel competent in it, whether that's a day or 3 months, then I allow myself to move onto something else.
Don't get stuck in your head. Just choose something and commit, no one knows everything, the posts are by hundreds of people, each with skills in different areas. Know one knows it all.
I think this is a perspective problem. You need to stop comparing yourself to everyone in all things. That isn't what I come here for. I just come here to gratify my intellect and enrich my life. You don't need to compare to people here. You need to compare yourself to people you are in actual competition with at work or compare yourself to the work standards you are expected to meet. Don't come here and do that. It will only lead to misery.
Try cutting the cord for a few days. It's refreshing.
- Most solutions posted here probably won't just work for your problem, you have to work it into your needs - concentrate on what works for you not necessarily whats new.
- Many really cool things took someone years to develop, you are just reading a lot of different people's long-term accomplishments not a small group. And most of those people were sticking to things that worked instead of chasing the shiniest technology.
- Theres more than one way to do anything, just because they may be currently more successful doesn't mean you can't find new solutions, don't forget to try your own thing.
Take a walk.
Do what you can.
It is ok.
I think a sense of resignation is actually useful here. Just resign yourself to the fact that you'll never be as good as them and that it will take you 10 years to be able to just follow instructions under a Google or Facebook AI scientist (, say). And continue to trod on like the tortoise in the tortoise vs. hare story :-)
Second, think about what kind of site HN is. This is a site whose DAU are mostly highly educated (either formal or otherwise) from very diverse backgrounds in tech, machine learning, etc., etc.. It should come as no surprise that for any given topic there will be a ton of high quality and interesting points of view.
As for the statement 2): "will basically feel the same as I do now." To be completely honest, you probably will. Every new opportunity in life presents you with a chance to learn and while learning most people often realize how little they actually know. But that is why you are learning in the first place!
Yes that I realize I have a lot to learn and I should keep removing distractions/bad habits and toxic people/situations out of my life. Yes that I realize there are Ivy Leaguers in here and also people who work at the world's largest companies.
No also because there is also a fair amount of hubris here. There are also a lot of people who miss the forest for the trees. There is still a lot of room for innovation in certain markets and the means of fulfilling human needs are ever evolving even if the needs themselves are still the same.
I take breaks from time to time. Also I've recently deactivated my facebook and unfollowed a lot of people on Twitter/Quora/Instagram. Feels great.
Your work situation can be remedied. Lots of companies require good engineers who're willing to learn stuff rather than pre-know stuff.
I think this is one of the (probably many) reasons feed readers failed and chat came to beat email: the feeling of something incomplete. I had to force myself to ignore unread counts to stop myself from going crazy, but Twitter, HN, Reddit, etc. did away with outward signs that there were things unread, and that's a good start.
Sounds like you need to change jobs, if you're at the point of acknowledging that your work environment is negative.
I don't worry too much about it, as long as what I'm building works and can be maintained I'm happy.
The good news about tech changing all the time is if you wait there will be some new language or framework so you didn't waste your time learning something obsolete !
"An expert is someone who knows more and more about less and less till they know everything about nothing" - from a Murphy's laws on technology poster..
Nobody explores all of them.
Figure out what's interesting to you and then go deep on that. Keep an eye on the stuff that's not interesting to you just to develop contextual knowledge, then when/if your interests/responsibilities change and you do need to go deeper on stuff you didn't need before, you can get started more easily.
(1) HN covers a lot of areas of software development; more than any one person can really be expected to know. But each reader is ignorant regarding how big a fraction of the covered technologies are well-understood by the other readers.
(2) HN stories often involve technologies related to web-development, containers, or virtualization. Those technology areas spawn inordinate numbers of tools, frameworks, etc. This exacerbates issue (1).
The thing that helped me the most was to realize that you _have_ to specialize, at least to some extent. It's impossible to know and do everything, no matter how much you would like to.
Pick "your thing", and worry about staying up-to-date on it. Everything else skim through just to understand what's going on. How broad "your thing" should be depends on how much time you're willing to spend.
Don't try to master everything all at once. Just learn what you need, or what interests you and then on to the next thing. There is no "done".
You'll never master everything. No one does. Take it easy. You say you've become an integral part of your team and that you're constantly learning. You seem to be on the right path.
Strive to be a helpful, open, honest team member, with a thorough understanding of core patterns and practices. (e.g. SOLID principles)
HN starts to fall in pattern as a lot of stuff you do. There are those new cool hip stuff, papers, a few deep inside blogposts and it repeats itself.
Enjoy HN as long as it holds :)