7 ms·
Things I Wish I’d Learned Sooner After Being a Developer for 10 Years
- corytheboyd 6y agoNot medium link: https://alexlakatos.com/coding/2020/11/17/ten-things-learned-ten-years-developer/ https://alexlakatos.com/coding/2020/11/17/ten-things-learned...
- swyx 6y ago@dang could we swap this link for the medium one? its faster and no login wall
- montenegrohugo 6y agoGood read, especially the part about soft skills. Sometimes it seems to me like it's almost impossible to change them. It's "easy" to learn something hard and defined, like coding. But changing how you communicate? How you react to conflict? Your body language? It's even harder if you're trying to change these soft behaviors of someone else, like a partner. Not sure what the takeaway is here, just wanted to express my thoughts on it. Soft behaviors seem both like some enormous formless cloud that you can't really define and a rock-solid mountain you have little hope of moving. Also, reading this on his own website instead of on medium is a much better experience, definitely recommend.
- ericmcer 6y agoJust get a controlling gf/bf who will tirelessly analyze your verbal and non-verbal communication. Soon you will be very aware of any weak areas in your communication and conflict management.
- throwaway98797 6y agoPick one reaction you consistently have that you want to change. Every time you have the “wrong” action think about the “right” reaction. Over years your “natural” reaction will change.
- scns 6y agoGet a coach, worked for me.
- mrits 6y agoGoogling how to bubble sort seems a bit extreme. I'm not much for Cracking the Code Interview type questions but this would certainly be a red flag.
- Moodles 6y agoA lot of people would google FizzBuzz unfortunately.
- zikzak 6y agoI'm about to do some interviewing and I am much more interested in how they would handle a credit card provider being down when processing a transaction. Or if they can articulate that solution verbally. Or if they handle me taking an opposite position as devil's advocate well, etc.
- benbristow 6y agoUsing a resilience library like Polly, if the transaction still fails after a few attempts then handle it according to business requirements. https://github.com/App-vNext/Polly https://github.com/App-vNext/Polly
- Moodles 6y agoAbsolutely. You want both but I would also value what you’re talking about a lot more.
- deleted 6y ago[deleted]
- throwhypothetic 6y agoI'd have to google "bubble sort" to even remember what it is; but I don't think that has any bearing on whether I'd understand it once I remembered what it was.
- mrits 6y ago
- bjornjajayaja 6y agoI tend to disagree with many of the sentiments. In particular, many software folks don’t know the most rudimentary data structures and algorithms. Those should be memorized, frankly. Lately I have been exploring old programming books on archive.org and realize how downhill the industry has gone from fundamental principles, which leads to “language-z” zealots to satisfy some business need. The author mentions COBOL as being antiquated and irrelevant but in all honesty, modern languages don’t improve upon much. Underneath all the layers people add to modern languages (so the rest of the developer community can push buttons without even the faintest idea) lies assembly language and the machine. Knowledge of the systems is abstracted away so much that people are focusing on mastering the wrong thing. One should be able to implement algorithms in C or COBOL or even assembly. Otherwise, it’s like learning to google the notes of a concerto without understanding the chords, scales, harmony, melody, etc.
- mewpmewp2 6y agoI forget what I don't use. Should I rememorize those things every 6 months?
- leetcrew 6y ago99% of the data structure decisions I make at work are whether I should use a vector, a tree, a hashmap, or (very rarely) a list. the standard library implementation of whatever I choose is almost always sufficient. I wouldn't expect the average programmer to be able to implement all of these on the spot, but if you don't use them enough to understand the basic trade-offs, I have to wonder wtf you are doing all day?
- saberience 6y agoEvery programming job is different. I worked for 6 years at a well known videogames company and never had to use a vector or a tree ever. I was mostly using lists and dictionaries and occasionally an array, and that’s about it. I never had to do anything more complex data structure wise than that and I never really had to write my own data structure nor anything approaching an algorithm.
- soneca 6y agoOff-topic comment: I was having some trouble understanding the text. The author would start explaining some advice and I didn’t know which advice he was referring to. Like ”This is one I struggle with the most”, “this” what? I would go back to the previous paragraph and there was no reference, worst, apparently it was another topic! Then it hit me, the images with words on it every few paragraphs were the pieces of advice! They were not ads or merely unimportant illustrations, they were the titles! I unconsciously ignored them all on first read, banner-blindness or something like that. I actually scanned the post for bullet points the moment I opened the page and couldn’t find them. Because the bullet points were designed as images. Important to notice that now, looking at them as bullet points, I like the design. They useful mini-posters. But they had this side-effect on me of magically becoming invisible.
- franciscop 6y agoI had exactly the same problem, I was trying to scan for the titles and was confused I didn't find any title and TBH a bit annoyed at how many "ads" there were getting in the way of finding the important information.
- quentinp 6y agoThis is called the banner blindness effect: https://en.wikipedia.org/wiki/Banner_blindness https://en.wikipedia.org/wiki/Banner_blindness
- ajarmst 6y agoAn observation: a lot of these---especially 'soft skills'---can't be properly learned earlier. They're a side effect of experience, and the 10 years doing the job is the only way to properly get them. The things I most often hear from potential employers when we ask what we should focus on more in teaching them are "soft skills" and "troubleshooting". My response is now to ask which of the long list of technical skills we teach we should drop or reduce in favour of more soft skills (none) and to remind them that when they say they need employees who are good with team-mates and clients and good troubleshooters, what they're describing is an employee with experience and I simply can't generate that in a two-year program. Fundamentally, that part of the education is the on-the-job part, and it can't be skipped. We do work at those, but fundamentally, skills at (1) working well with a variety of people and (2) understanding systems and their interactions well enough to hypothesize and test for causes of faults are both things you can have more or less talent in, but they're fundamentally skills that come as the result of substantial experience working with different people and working with complicated systems. You probably can't properly learn these without spending the ten years, but you can choose jobs and colleagues and experiences that will help you learn them better. Better to focus on emulating how people learned these skills than trying to skip the hard part.
- xiphias2 6y agoThis is the good type of soft skill, and there is the bad type: soft skill when a person can just talk very nicely, and suck it up to his upper management, do the very simple things (like fixing all lint errors and following 30 other recommendations inside the company) instead of providing real value to the company and the users to get promoted. I had a manager like that, and I made the mistake of confronting him for ,,safe'' and bad technical decisions (in which case the higher level person always wins), instead of just nicely switch teams without confrontation.
- ajarmst 6y agoAn aphorism I occasionally use (I can be tedious): "the only way to make a twenty-year old comfortable leading a meeting is to wait until they're a thirty-year old." Doesn't stop us from forcing the poor bastards to do public-speaking assignments or dropping them into "teams" of completely inexperienced people they've never met with no leaders in the name of ephemeral "soft-skills."
- mgkimsal 6y ago> "Sure, I could make an extra 10% every year, but would that make me happier than working from home, on my own terms?" If it allows you to provide more ('stuff', or security, or stability) for a family, then yes, it might make you happier. I read articles like this and they mostly tend to be from the perspective of younger people and/or folks without families to support. An extra 10% pay increase, over just a few years, provides more general savings, perhaps buys solid life insurance, helps pad savings for future education, or moving expenses to fund a job/life change, etc. Another nugget - "Know your worth". It's not bad advice, but something the author didn't mention was understanding how your worth is determined. You can do the exact same work for company A and company B. Company A may be able to extract huge value from your work, and company B may struggle to keep the lights on. When working for someone else, "your worth" is directly related to how capable they are at operating their business profitably. I've no doubt the author's views work for him, and probably many people like him, but as with most posts like this, they're not universal.
- davzie 6y agoAs someone with a family, my preference is that I can work from home to be around my family more. I feel this is more valuable to them than some more money in our savings account but that’s just me. To each their own!
- mgkimsal 6y agoHad a colleague die a few years ago. He'd lost some project work, and let his life insurance lapse. Had a heart attack just a few weeks later, and left a wife and 3 kids with very little. He worked from home and spent time with them, but had hit a point where money was a problem. The story sticks with me because he'd contacted me just a couple months before he died asking if I had any work/referrals, and I had nothing at that time. The older I get, the more I see less the great outcomes when adversity hit people I know (whether death or illness or some other big hit). Money isn't everything, but in many of those cases, having an extra $k saved up would indeed help smooth people through those rough patches. I'm actually amazed at how many folks work for decades, then something happens, and there's a gofundme set up for the family to help with day to day bills. If you have all your financial ducks in a row, everyone is comfortable, and you have the life you want, that's great. To each their own, indeed! :)
- mlthoughts2018 6y ago> “ Don’t like your new boss? Just quit. Enough people do it, and their boss will fix it. You don’t like your company’s policies around privacy, diversity, inclusion, human rights? Quit.” This is psycho advice. It ranks up there with the crazy myths about just being able to instantly get new software jobs (when the actual time of job searches is usually longer than 6 months, despite the tone deaf wave of gainsaying comments this is sure to incite). Voting with your feet rarely leads to organizational changes, especially if you don’t give clear feedback or spend sincere effort trying to fix the issues you’re having prior to quitting. More likely, you quitting is just tacitly reinforcing power and control by the shitty people who made your experience shitty. When you need to quit, by all means, absolutely do it. But don’t kid yourself that there’s any “voting” going on. Do yourself and others a favor: give feedback and take responsibility for your own job satisfaction. Nobody can help you if you won’t try to get help. And don’t count on a fast job search. This topic is so tone dead on HN. Some cacophony of commenters will swear you can get a million jobs from all your spam LinkedIn headhunters and be re-employed in weeks, but it is emphatically not true and the selection bias of those examples has to imply just ignoring them as inapplicable to the vast majority of software engineers. Interview prep, finding a good fit and getting what you want in a position and in compensation is really hard and takes a long time in software.
- leetcrew 6y agorecruiter: based on your impressive linkedin profile, I think you'd be a great fit for a full-stack role with my client! let me know if you have some time to discuss opportunities this week. my linkedin profile: literally just desktop c++ work in a completely different domain. yeah, something tells me these messages are not likely to lead to a real job.
- emteycz 6y agoActually, I tried, and it does.
- otagekki 6y agoBut have you ever tried? Back in 2018, less than 6 months into my new job I tried and got a solid offer (and found a client) that could be bumping my salary from €41,000 to €47,000. For reasons unknown I turned down the offer, and I retrospectively kind of regret it.
- bsenftner 6y agoTell us again in 20 more years. In this industry, YOU ARE JUST STARTING. I've been coding since '78 and reading this list is like a high school journal.
- mpurham 6y agoIt wasn't mentioned in the article but I'd say as developers, we often underestimate the amount of time a task/project would take. Learning how to properly estimate a given task and delivering it on or before your proposed time-frame will make your life as a developer much better.
- leshow 6y ago> I come from a culture that values memorisation over creativity and problem-solving. Fuck that. To this day, I still Google how to bubble sort. I really hope this is hyperbole, but you should never use bubble sort. I can't think of a single legitimate reason you'd want to use it. Insertion sort, is a good O(n^2) sort to know.
- Smaug123 6y agoInsertion sort is probably the one you'd come up with anyway, if you didn't know any sorting algorithms. If asked to sort a deck of cards, guess which algorithm almost anyone would naively use. If there are instead two people to sort the deck of cards, they'll probably invent some variant on a merge sort!
- scarmig 6y agoIf you're working with rotating drum memory, bubble sort provides the best real world performance for any kind of data set that would fit on it.
- leshow 6y agoDo I need to specify that I'm talking about modern computers? That's an interesting bit of trivia though.
- scarmig 6y agoI think it's a useful way to keep in mind that algorithmic complexity isn't everything in the real world, which also applies to today. When would bubble sort be ideal? When it's relatively cheap to read data sequentially compared to backwards or randomly, and resetting to the initial read position isn't too costly. Now I've nerd sniped myself, and am brainstorming how that situation might arise with modern systems...
- LeifCarrotson 6y agoRegarding "Learning to say no", I agree that's an under-emphasized skill. Too often, the answer I give when asked "Could the software be made to do X?" is "Yes, it could, but no, it should not." The exported data is in CSV. Excel can import it. Yes, I could import an Office library and write XLSX files natively, but while the person making the request screwed up by making the wrong selection after marking up the data with colors and saving it as a CSV, dropping those features, the right thing to do is not screw that up, not to add complexity to the software.
- forinti 6y agoEven if you know how to say no, there are probably a few people up the chain who are paid to say yes.
- vvanders 6y ago> If you’re not familiar with the concept of T-shaped skills, or T-shaped people, don’t worry, most people are not. It’s an HR metaphor used to describe the skills of candidates. So if you think of your skills as plotted on a graph, you’ll notice you’ve got different levels in each. And if you unite those levels, you’d want them to create a T-shape instead of anything else. I've always been a fan of 'pi' shaped skillset where you're deep in 2-ish+ areas rather than one core skill. It also means that you don't become known for just one singular thing. This becomes even better when the your deep areas complement each other and you'll find the sum greater than the parts.
- rightbyte 6y agoQuite broad advice that just seems bad for new programmers. Like, ask for help? You need to learn to solve stuff without disturbing the team. Vote with your feet? Juniors are not in the position to do that. People can't read your mind? Actually people are quite good at reading your mind and alot of things are supposed to be said by indirect hints to save face. Soft skills? Way overrated - just don't be toxic and avoid obvoius trouble. Know your worth? Build a brand? Say no? This guy is just listing stuff he gets away with by not being new to the field. The advice would be worthless to himself when he bagan ... Edit: The one advice I would like to have had is "no-one will notice if you give 110% or keep a 60% substainable pace. Relax and keep grinding".
- khendron 6y agoI would reword "Vote with you feet" to be "It's OK to change jobs", so as to give it a broader meaning. There is no obligation for you to stay in a job you don't like, or to pursue a different opportunity. You don't have to explain your reasons for leaving. Your employer and your team will probably be fine without you, and if they are not it is not your problem. To often I've stayed in a job I didn't like because "I'd be letting my team down" or "we're too busy, now is not a good time." Screw that. If you are not liking it, find something else and leave. I'd also add one more: "Take your vacation". You are no good to anybody (you, your friends, your family, or your employer) if you work self to burn out. It's not worth it, and the world won't end while you are away.