TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Things they didn’t teach you about software engineering

419 pointsby mikecarltonover 2 years ago

41 comments

rco8786over 2 years ago
Pretty decent article (don&#x27;t agree with everything, but for the most part)<p>&gt; Code is secondary. Business value is first.<p>I wish I could shout this from a mountaintop. If there&#x27;s one thing I could change about engineering culture it would be this. But then again I would lose my edge if everyone understood this, so maybe it&#x27;s best that they don&#x27;t<p>Engineers: If you want to stand out in your career - take this to heart. Code is not the goal. Money is the goal, code is a tool to get the money. You work in a capitalistic business, whether you like it or not. Push your colleagues to build the thing that makes the business the most money, not the thing that is the &quot;best&quot; engineering solution. You will get <i>tons</i> of pushback on this - but eventually your pushing will bubble up to someone who works in &quot;the business&quot; (directors, executives, etc) and not just other engineers and they will invariably support you. This is your contrarian view now. This is your answer to Peter Thiel&#x27;s question &quot;What important truth do very few people agree with you on?&quot;. And you will thank me in 10 years.
评论 #34287917 未加载
评论 #34287874 未加载
评论 #34287655 未加载
评论 #34288284 未加载
评论 #34292419 未加载
评论 #34291229 未加载
评论 #34292271 未加载
评论 #34298896 未加载
评论 #34299941 未加载
评论 #34289087 未加载
评论 #34303820 未加载
评论 #34294052 未加载
评论 #34324679 未加载
评论 #34291254 未加载
评论 #34288946 未加载
评论 #34289133 未加载
评论 #34287645 未加载
评论 #34290722 未加载
评论 #34293967 未加载
评论 #34290646 未加载
quanticleover 2 years ago
<p><pre><code> Rare work-life balance. In other professions, your work day ends at 18:00, and you forget about the job. Not here. You will most likely always be online and checking the code, even in the evening. </code></pre> If that&#x27;s the case, quit immediately. I&#x27;ve been in this industry for over a decade (oh god, has it been that long already?) and I have never had a job where I was &quot;always online and checking the code, even in the evening&quot;. Not even when I worked at Amazon. Yes, I&#x27;ve been on-call. And yes, I&#x27;ve been paged, but never at anything like the frequency that would imply that I&#x27;m &quot;always online&quot;.
评论 #34286630 未加载
评论 #34287829 未加载
评论 #34286218 未加载
评论 #34286516 未加载
评论 #34286324 未加载
评论 #34290879 未加载
评论 #34286133 未加载
评论 #34287431 未加载
评论 #34286171 未加载
nunezover 2 years ago
I do not at all agree with the &quot;it&#x27;s not a dream job&quot; section.<p>Please name another career that pays you six figures out of college that doesn&#x27;t involve several years of additional education, doesn&#x27;t make you wear suits, is mostly non-life-threatening, is constantly in demand, and doesn&#x27;t require special accreditations or certificates.<p>If you&#x27;re spending more than your 40 working and aren&#x27;t on call, then that is on you 90% of the time, in my experience. I have definitely worked more than 40 some weeks when I&#x27;m pushing through something, but there have been plenty of times where I worked less.<p>If you can&#x27;t find advancement in your current role, then that&#x27;s also on you. Not that this matters, as finding a new job in this industry is insanely easy relative to other professions, and they&#x27;ll usually pay more for your skills.<p>IMO, you should ALWAYS be thinking about what you need to do to get to the next level, if career advancement is a priority. Everything you do should be in service to demonstrating capability in performing above your station and providing business value&#x2F;revenue generation. Brag sheets and being vocal help a lot.<p>I am biased; I absolutely love what I do and wouldn&#x27;t trade it for anything.
评论 #34294864 未加载
invalidnameover 2 years ago
I like this list. It&#x27;s also missing &quot;debugging&quot;. That&#x27;s a skill that they don&#x27;t emphasize in college because they can&#x27;t test it and it&#x27;s hard to teach. But there are ways to teach it and techniques. There are some books on the subject:<p><a href="https:&#x2F;&#x2F;www.amazon.com&#x2F;dp&#x2F;1484290410&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.amazon.com&#x2F;dp&#x2F;1484290410&#x2F;</a><p><a href="https:&#x2F;&#x2F;www.whyprogramsfail.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.whyprogramsfail.com&#x2F;</a><p>That can mitigate that a bit.
评论 #34286211 未加载
评论 #34286242 未加载
评论 #34286209 未加载
评论 #34285840 未加载
评论 #34285722 未加载
fjfaaseover 2 years ago
Something I would like to add to the list (being in the field for 33 years):<p>Discover that your greatest struggle is with your own deep rooted sense of insecurity,<p>I think that software engineering, like no other form of engineering, has an aspect of creativity (source code), in combination with many (often hidden) single points of failures (bugs), where cooperation with others is essential, causing all your insecurities to be revealed.<p>Either you learn to hide these or they drive you on a road to soul searching, possibly resulting in various forms of burn-outs, in alienation from your family and friends outside of you work circle, in changing your world view and&#x2F;or losing your faith. But which might in the end result in a form of enlightenment.<p>I am aware that there are some other professions where this also is the case. Just this week, I watch an interview with the neurosurgeon Henry Marsh. You can watch it here (with some Dutch subtitels and advertisements): <a href="https:&#x2F;&#x2F;www.npostart.nl&#x2F;vpro-wintergasten&#x2F;04-01-2023&#x2F;VPWON_1342504" rel="nofollow">https:&#x2F;&#x2F;www.npostart.nl&#x2F;vpro-wintergasten&#x2F;04-01-2023&#x2F;VPWON_1...</a>
评论 #34294728 未加载
评论 #34302547 未加载
评论 #34291437 未加载
osigurdsonover 2 years ago
&gt;&gt; Managers like numbers, estimates, and asking for estimates with an idea written on a napkin. It&#x27;s just how the real world works — a business has some monetary goal, but before committing to it, it needs to understand how much it will cost.<p>I think everyone squirms when asked to make a prediction with too little information. If you want to see a developer squirm. ask for an estimate for how long it will take to build a given product or feature. If you want to see a PO squirm, ask for an estimate (in $) of the expected cumulative revenues for the same product or feature.
评论 #34287090 未加载
评论 #34286486 未加载
jmfldnover 2 years ago
Hard disagree with this..<p>&quot;Elegant code, best practices, smart solutions, design patterns — these are done for the sake of your fellow software engineers who will work on the codebase after you rather than helping you fulfill the purpose of bringing value&quot;<p>The fact that business is about money is a truism. The other fact is that, good engineers care about that AND know that good engineering - which requires &#x27;some&#x27; obsession with good code amongst other things - leads to faster iteration loops, less bugs, better maintenence, less incidents and SLA breaches. Do you know what they all equal? That&#x27;s right, money.<p>Believe me, crappy, inconsistent over-complex spaghetti code and poor engineering practices can really really hurt a company.<p>As ever it&#x27;s a balance of course. Every decent engineer understands the trade offs. For my part, I think about the business goals first and foremost and, to achieve those, I make sure my code is as simple, clear, testable etc as can be when realising those goals.<p>It&#x27;s often a dereliction of duty as an engineer to just get the job done without reasonable consideration of good practices. Building up tech debt? Sure, I do it all the time. But sacrificing what I know to be a good practice just to deliver? No.
randomdataover 2 years ago
<i>&gt; Meetings are there to ensure that everything is going smoothly and on schedule.</i><p>Are they? At one time in my career you just let people know when something isn&#x27;t going smoothly&#x2F;not on schedule. A quick email (or equivalent) was more than sufficient to raise awareness.<p>For various reasons I eventually fell into this meeting culture. I don&#x27;t get it. It produces this weird state where everyone saves up what they have to say for the meetings to avoid an awkward lack of participation or &quot;I have nothing&quot; in the meeting, which results in a barrage of mostly useless information, all while the nuggets of gold that the meeting would benefit from regularly get missed because everyone is too overwhelmed by the information overload.<p>And because everyone saves up what they have to say, the team seems more distant, which diminishes other beneficial outcomes that arise when everyone is regularly chatting with each other. The information lag also dramatically decreases the overall efficiency of the team, not having useful knowledge as it becomes available.<p><i>&gt; You might not like it, but the information must be shared for the system to remain efficient.</i><p>The thing is, I actually like meetings. After you&#x27;ve recognized something isn&#x27;t going smoothly, calling a meeting to formulate a plan of attack under the narrow scope of that specific problem at play can often lead to really great outcomes.<p>But I dare say that if the meeting is there simply to find out that there is a problem, you are doing something wrong.
评论 #34286586 未加载
评论 #34286199 未加载
surfsvammelover 2 years ago
Some more:<p>The worst are when you run into code that’s been around for a long time, but obviously doesn’t work, but which have stuff built on top of it relying on it not to work.<p>When two bugs manifest together in one symptom, the engineering approach that you have learned about breaking a problem down and testing one thing at a time, might not be enough to find the issues.<p>All projects are chaos, learn to accept that and to navigate it.<p>Centralising things into common classes, methods, functions, libraries, modules or services, for reusability, and for less redundancy, also increases risk, as it is now even more important that that stuff works.
评论 #34286331 未加载
fhd2over 2 years ago
&quot;Estimations will be asked even when you don&#x27;t want to give them&quot;<p>I think usually it&#x27;s not a matter of not &quot;wanting&quot; to give them. It&#x27;s a matter of not wanting to take a wild guess - which is talked down if it seems too high - and then be asked to finish the work in that time frame.<p>Time or scope, at least one of these things needs to be flexible, and stay flexible until the work is done.
评论 #34286546 未加载
gernbover 2 years ago
&gt; Remote work can lead to isolation. Depending on the company and team structure, software engineers may work in solitude (not including video calls) for long periods, leading to a lack of real social interactions.<p>Yep<p>&gt; Rarely you&#x27;re building something you love. More often than not, it&#x27;s tedious work that needs to be done<p>You should switch jobs. The majority of my jobs were building something I love<p>&gt; It&#x27;s hard work. You&#x27;re sitting behind your computer most of the day.<p>That&#x27;s not hard. That&#x27;s what I would do even if I didn&#x27;t have a job.
评论 #34291997 未加载
magicloopover 2 years ago
I&#x27;ve got a couple of life hacks that have seen me through things quite well: 1. My short term goals are: good quality sleep (8hrs), daily exercise (30 minute walk), proper healthy good meals 3 times a day. 2. Work intensely for 40 hours a week. Then switch off, and then have a could not care less attitude until you next return.<p>Most work environments will recognise the discipline and reliable work ethic and will leave you alone. Some environments will measure you by hours-attendance and will push you out or criticise your work methods. These are not healthy places.<p>Anecdote: I was learning about climbing and the instructor showed us a thin climbing rope chord (emergency back up). He explained it was plenty to carry your weight but comically thin. What might appear that it &quot;would never work&quot; sometimes can work. Hence my above advice to others.
tossaway0over 2 years ago
Even if you don&#x27;t agree with everything, or the tone, there&#x27;s a lot to be said for what is expressed in this article.<p>To the points about time spent and business value coming first, I would defend them by saying first that companies of different sizes operate with different requirements for their staff. You were hired to code, but in my experience the code is only important when it&#x27;s serving the end goal of value. It&#x27;s up to you to make sure that you&#x27;re providing value, so be fluid enough to know when not to say, &#x27;not my job&#x27;.<p>As for the grueling time expectations, I feel a lot of commenters are reacting to environments like those you hear about game devs; of course that&#x27;s not alright. But yes, if there&#x27;s systems that you work on that no one else really knows about, you&#x27;ll need to keep tabs on them pretty much all the time. It doesn&#x27;t mean you need to check in all the time, it means you need to write code to tell you on weekends when your things need to be checked out.<p>The job I have now could probably be done by some ninja coder for less, but they pay me because I know how to deal with everyone who doesn&#x27;t code while I write my code.
theteapotover 2 years ago
&gt; My god, how many times has my Linux machine crashed with a segfault? It’s crazy.<p>Zero times? It is crazy.
评论 #34286006 未加载
评论 #34286632 未加载
评论 #34287713 未加载
mikewarotover 2 years ago
Once I wrote a green-field application in Turbo Pascal for MS-DOS, did all the field editing and screen handling, help, communications, and even cooperative multi-tasking. It was amazing knowing how everything worked.<p>I&#x27;ll never experience that again. 8(
KrugerDunningsover 2 years ago
There is nothing wrong with this article in trying to paint a realistic picture of what is expected of a software engineering nowadays but man am I getting tired of this one sided culture of professional responsibility.<p>I just don&#x27;t vibe with this advice anymore, like all the same with me but I&#x27;m gonna call myself something else then, you can have it.
评论 #34285794 未加载
评论 #34285763 未加载
mypastselfover 2 years ago
Some good points here. But I also have to make some objections.<p>&gt; You’ll need to work around incompetence<p>It’s amusing that the article never suggests <i>you</i> might be incompetent. No, no, it’s the “other person” whose incompetence needs to be well-documented.<p>&gt; Rare work-life balance. In other professions, your work day ends at 18:00, and you forget about the job. Not here. You will most likely always be online and checking the code, even in the evening.<p>I’ve always tended to avoid this throughout my career, and my bosses and coworkers have always been made aware of that.<p>Wait. Would I be the incompetent the author is talking about?
评论 #34293706 未加载
cam0over 2 years ago
I had never seen that cartoon about the &quot;dream job&quot; before, but it&#x27;s something I&#x27;ve thought about so many times as I&#x27;ve listened to people talk about their dream job or dream employer. It always struck me as strange to dream of labor &#x2F; dream of being an employee - must be a cultural thing.
评论 #34286003 未加载
评论 #34285820 未加载
评论 #34286246 未加载
评论 #34293983 未加载
评论 #34289128 未加载
评论 #34285801 未加载
GuB-42over 2 years ago
As I advance in my career, I start to like the messiness of real life software engineering more and more.<p>We all like starting from scratch, from a clean slate, but that&#x27;s actually the easy part, it only becomes hard later, when the requirement have changed and you start to notice the consequences of the bad choices you made earlier, and then you try to leave, or restart from scratch. So you want the easy part and leave the hard part to others...<p>But where is the fun in that? I went to programming because I like things like problem solving, and it is not problem solving if there is no problem. Digging into code that no one understands, that is not documented, working around limitations, finding what needs rewriting and what doesn&#x27;t (with an emphasis on the &quot;doesn&#x27;t&quot;), managing technical debt and deadlines without overworking yourself, etc... Now this is a challenge, this is interesting, this is the job I signed for even if I didn&#x27;t realize at first.<p>And don&#x27;t let anyone tell you that these are not coding skills. These are totally coding skills, where code reading is as important as code writing, where you have to be able to code with any API, in any environment, in any style. Not just the narrow subset of algorithms (which is also important).
RomanPushkinover 2 years ago
This looks so bad because author mixes up &quot;happy hacking&quot; aka programming (&quot;Programming is a craft&quot; - Stallman) with industry-only experience. If you haven&#x27;t had a joy of building things on your own, just for fun, the world looks boring (and even depressing), as it&#x27;s described by the link.<p>However, the whole another universe uncovers if you remove &quot;industry&quot; concept that has been illegally attached to &quot;software engineering&quot; concept by Vadim.<p>In reality a lot of cool stuff has been built outside of corps, managers, offices, deadlines. The whole Internet works on Linux. Many successful games were built by folks who wasn&#x27;t even once employed as software engineer. Some of them earned millions and billions.
HollowManover 2 years ago
After 10 years in the industry I agreee with almost every bit.<p>Soft skills are never taught, rarely checked during interviews, but might well be themost important ones.
评论 #34285930 未加载
yamasanamaover 2 years ago
Missing from this list is that lots of the mentioned concepts are highly subjective. There is no generally agreed-upon standard of what documentation is &quot;proper&quot;. Or what &quot;clean&quot; code is. Or what &quot;competence&quot; looks like. Or what a &quot;scalable architecture&quot; is. Etc etc. Most of these words are bent by whomever using them to make a point (or to boost their ego, sadly). Two people could easily work side-by-side and claim about the other that that person is incompetent and defend this position here on HN with some horrible-sounding anecdotes.
fullstackchrisover 2 years ago
&gt; You’ll need to work around incompetence<p>This one I am truly struggling with, and probably will the rest of my life. Sadly it hinders the success of all of us as software developers. I&#x27;m currently reading &quot;How to Win Friends and Influence People&quot; by Dale Carnegie and loving it, but can&#x27;t help but thinking in the back of my mind that somehow all these rules and guidance he has for being a decent human with other humans are extremely challenging when (in some cases) you are FORCED to work with said incompetant collegue. I agree entirely with the authors wording around this point, including &quot;frustrating&quot;, &quot;exhausting&quot;, and &quot;toxic&quot;. Call me an asshole but I&#x27;m an engineer, by definition I like doing things efficiently and to the point. Working with someone who can&#x27;t be either is incredibly challenging. Would love to hear more strategies people have developed to deal with this.<p>Reading comments here, I want to be clear: I&#x27;m not talking about some ego-based notion of &quot;incompetance&quot; like &quot;I can write code better than you&quot;. I&#x27;m talking about the bigwig guy on your team with a big wallet who tells you the product should be implemented in XYZ because he read an artical about XYZ in a magazine and thought it was cool.<p>&gt; Dealing with people is hard. Dealing with uncertainty is hard. Dealing with uncertain people is harder. And that&#x27;s what you&#x27;re going to do as a software developer.<p>Also this, haha. This post is gold. Nice work!
评论 #34287832 未加载
zabzonkover 2 years ago
i thought this was pretty good, the point on aesthetics in particular - how much code have i seen and thought &quot;how could you have written something so ugly?&quot;
评论 #34286200 未加载
评论 #34286086 未加载
bjornsingover 2 years ago
Good write-up. But to me this reads more like “Everything I dislike about ‘software engineering’”, and this question pops up in my mind: isn’t there some way around all this?<p>I know this is kind of an unpopular opinion, but I think an important reason we end up with this kind of work environment is that we have no formal division of labor into separate professions.<p>Compare e.g. with healthcare: I sometimes jokingly explain the situation to friends by saying imagine if there was only a single profession called “Healthcare Worker”, and every hospital had to self organize “Hunger Games”-style. Everybody is hired as a “[Junior&#x2F;Medior&#x2F;Senior] Healthcare Worker” and then they battle it out to decide who gets to sit in the corner office, who gets to be a doctor and who gets to clean the toilets. Often it turns out everybody does a bit of everything, otherwise it’s perceived as “unfair”.<p>When there is no rigid formal power structure people make up for it with “politics”. I think that’s to a large extent what’s happening, and it’s sort of consuming our lives…
评论 #34287892 未加载
tapanjkover 2 years ago
&gt; One way I have found to be effective is to focus on being productive despite the other person. I try to find solutions&#x2F;alternatives that may be more effective and don&#x27;t require involving the ineffective person.<p>This above line may sound arrogant because it sort of implies that you are the smartest of the lot. For all you know, you may be the incompetent one for someone else.<p>However, this attitude (without being a pr*ck about it) can be very useful in navigating your way through the messy reality and becoming more productive in spite of it. It will prevent (or reduce) a lot of &quot;you should have said this before&quot;, or &quot;I should have known this before&quot;, or &quot;you cannot change that now&quot;, or &quot;who wrote this code?&quot; moments.
nitwit005over 2 years ago
&gt; Meetings are there to ensure that everything is going smoothly and on schedule.<p>Hospitals are there to provide health care. But you&#x27;ll sometimes hear a phrase in health that &quot;a hospital bed built, is a bed filled&quot; (<a href="https:&#x2F;&#x2F;en.m.wikipedia.org&#x2F;wiki&#x2F;Roemer%27s_law" rel="nofollow">https:&#x2F;&#x2F;en.m.wikipedia.org&#x2F;wiki&#x2F;Roemer%27s_law</a>). Health organizations will push patients to get extra, often unneeded, treatments if they system has extra slack.<p>Similarly, management calendars always seem to fill. It doesn&#x27;t seem to matter what the ratio of staff to management is, or what&#x27;s going on at the moment.
eikenberryover 2 years ago
&gt; Domain knowledge is more important than your coding skills<p>In the short run. In the long run the lack of coding skills will start to show and bog things down. You need both domain and design in equal amounts for the long term success of a project.
评论 #34287125 未加载
asturaover 2 years ago
&gt;It&#x27;s not a dream job<p>Its a dream job for me and would be for 90%+ of my friends. I suspect anyone saying this has very little life experience. All jobs involve work (duh) but software pays very well, is in demand, only requires a bachelor&#x27;s degree, and is very chill with a very good work-life balance.<p>If you&#x27;re working unpaid overtime then get another job. I&#x27;ve only worked about 3 hours unpaid overtime in my 16+ year career. I&#x27;ve willing worked paid overtime a few times, but not often.<p>If software isn&#x27;t close to a dream job then I&#x27;d like to know what is.
jffhnover 2 years ago
&gt;Domain knowledge is more important than your coding skills<p>It depends. For hiring I would focus much more on coding skills than domain knowledge.<p>Reminds me of a company that was getting rid of the expert&#x2F;developper communication bottleneck&#x2F;gap by having domain people who code, and said it was much easier to teach the domain to a good developper (who should end up knowing it anyway, possibly in more details than experts themselves, due to formalizing it in actually executable code (requirements often don&#x27;t even &quot;compile&quot;)), than to teach coding to a domain expert.
aryehofover 2 years ago
Touching on domain knowledge, reminds me that there are different types of software applications, yet I rarely see any differentiation. There is just “software”.<p>Much of the audience and discussion here on HN revolves around applications in computing, the computer and data sciences, and software infrastructure. For this purpose, “external” business domain knowledge and value is of little interest?
renoxover 2 years ago
One thing missed: there are two kinds of meetings, the one where nobody wrote down the points discussed==&gt;time wasted, the rare one where someone wrote a résumé of the meeting with clear action points and made sure to send the document to everyone asking for feedback, etc. These meetings are gold (provided the discussion was about concrete actions not moonshots)
lionkorover 2 years ago
&gt; Rare work-life balance. In other professions, your work day ends at 18:00, and you forget about the job. Not here. You will most likely always be online and checking the code, even in the evening.<p>Im not working a second im not being paid - its fun, sure, but its not <i>that</i> fun that i&#x27;ll work for free.
acedTrexover 2 years ago
The value section is great, code is worthless unless it DOES something.<p>I especially appreciate the aesthetic section as i constantly struggle to explain that concept to people on a line by line basis
zer00eyzover 2 years ago
One thing is missing from this list.<p>No one ever gets promoted for removing features.<p>Any code base that has had a few birthdays has stuff that needs to be removed and might not ever get removed.
评论 #34286570 未加载
flohofwoeover 2 years ago
&gt; Code is secondary. Business value is first.<p>Eh, what a predictable and boring attitude :&#x2F;<p>This advice makes sense in a company environment, but there&#x27;s so many other motivations to write code than just &#x27;business value&#x27;.<p>And from what I&#x27;ve seen, focusing on &#x27;business value&#x27; alone is the only explanation why so much software written in company settings is so user-hostile nowadays.<p>My counter-hot-take: focusing on business value makes you a worse programmer.
评论 #34286881 未加载
评论 #34287304 未加载
Existenceblinksover 2 years ago
Legit lessons but deep inside I feel bad because after 10 years in this industry I found that no one listens to anyone, it&#x27;s sort of a culture. One thing I don&#x27;t listen to anyone is &quot;clean code&quot;. When I see a job description &quot;something something .. clean code&quot; I always think &quot;by whose authority?&quot;. Of course we shouldn&#x27;t write a huge terrible function, but your a-lot-of-indirect-calls looks clean but it&#x27;s not. it&#x27;s 4 level deep to investigate something.<p>&gt; Domain knowledge is more important than your coding skills<p>This is where I wholeheartedly agree with. As I&#x27;m tired of cargo cult, playing tools, solving puzzles for fuck sake. I pick a domain knowledge first when I want to learn a new language to see what I could write some useful (to many people) thing in it. Tldr; you as you go help the others, not just learning sake.
pjmlpover 2 years ago
Pretty much to the point, interesting article.
rawoke083600over 2 years ago
Good list ! The one thing I would add or emphasise: Is <i>communication skills</i><p>I WISHED in addition to Calculus and CS that some form of &quot;effective communication course&quot; was required up to 3rd year ! Even the &quot;basics&quot; like how to &quot;Respond Vs React (the emotion)&quot;<p>If you are a coder 90% of the time it&#x27;s going to be a &quot;social&quot; or &quot;team&quot; activity. And where you find people you find people problems, egos, miscommunications, anger etc !<p>The amount of time you will have the debate about &quot;how to code something the &#x27;correct&#x27; way&quot; will be the cornerstone of your success in a team. That &#x27;debate&#x27; about the &#x27;correct way&#x27; is hard since CS is such a young &quot;engineering discipline&quot; compared to say how to build a bridge.<p>I can tell you this, the other coders I worked by far the best with are the coders that can communicate or that I feel &#x27;safe enough&#x2F;trust enough&#x27; to talk honestly and openly and separating yourself from your code (&quot;you-are-not-your-code&quot;) becomes automatic with these types of pro-communication programmers.<p>TL;DR: If you want to be an effective or standout coder: Focus HEAVILY on your communication skill.
xyzelementover 2 years ago
I need to write my own post on this but the gist:<p>1) In the long run, benefit accrues to value generation. The &quot;best developer&quot; turning out &quot;amazing code&quot; that misses the business goal is generating zero value. It&#x27;s a hard fact to swallow.<p>Ideally you are someone who can both engineer good code and be at least a part of the brain trust that &quot;aims&quot; that code at value (solving biz problems and generating money.)<p>That sounds obvious but most people don&#x27;t even think about that. My rule of thumb is that unless you are <i>actively</i> involved in that - ie acting as a product manager to some extent - you are likely under-delivering for yourself.<p>2) your biggest limitations are within yourself and you don&#x27;t acknowledge them. That&#x27;s the classic &quot;I identify as X and therefore don&#x27;t do Y&quot; mindset, where Y is the thing that would &quot;unlock&quot; your next level. Like if you are &quot;a C++ developer who isn&#x27;t interested in talking to customers&quot; then perversely, learning how to talk to customers (and not learning the next C++ standard) is the thing that will let you double your comp.<p>3) Your attitude determines your outcomes. People who assume all work situations are shit (assuming that bosses are always evil, coworkers are always stupid, etc) end up in precisely those situations. If you have a more positive expectation (eg want to give and receive loyalty, want the company to go above and beyond for you and to go above and beyond for the company) you can find those work relationships too. (Btw that applies outside work as well. If you believe all women are evil you end up an incel, etc)<p>4) Work is a team thing, and the people matter. How you are with people matters too. Whether people are looking forward to or dread meeting with you has a huge impact on your productivity and therefore your career. Also, there&#x27;s a Darwinian element you should recognize. If your team succeeds, your colleagues get bonuses and grow and that should matter to you, not just whether that happens to yourself.<p>5) You get paid for impact in the long run. This is related to point number 1. Sometimes your impact isn&#x27;t code but persuasion. I once convinced a company to shut down a line of business and focus on other things. The value of that is much greater than any code I wrote. To make such impact you need to (a) have original perspective&#x2F;insight and (b) convey it to people who don&#x27;t have that insight! If you are constantly frustrated because you are misunderstood, you need to make a conscious effort to learn how to persuade people in person and in writing. And to recognize that it&#x27;s a slow and difficult process that most people fear and therefore fail to go the distance.<p>6) The concept of work life balance is misleading and too simple a frame for good outcomes. The homeless guy under a bridge has a great work-life balance (0 work) but his life sucks. On the flip side, some successful people work tons of hours and have a great life - because they enjoy their work and they enjoy the financial benefits.
revskillover 2 years ago
Not quite. You really need to write things from scratch to reduce repitition. Things like custom DSL, code generation,... is not there for you in first place.<p>Domain understanding is just understanding, it&#x27;s not related to HOW you do it effectively.