Live data from Hacker News

Ask HN: For those programming 10+ years, what do you wish you knew 4 years in?

news.ycombinator.com

361–370 of 538 posts

Re: Ask HN: For those programming 10+ years, what do you wish you knew 4 years in?

#361

Work somewhere where software is the main product and not just a cost center. You can learn a lot quickly if you do cutting edge things with people who care about technology and not just cost. Solve real world​ problems. Doing elegant things is very difficult because the real world is much more convoluted than theory. Do a few things in depth. Don't jump at the latest thing every few months.

I agree with all of this and I think there is a third category of job where is software is neither the main business, nor IT.

Once you have developed the necessary software skills in a "software house", in my experience, the best thing to so is to get stuck into a particular domain, where the company needs software developed (not IT), but is not the main business. These jobs and contracts attract the best $, but also in my experience, highest job satisfaction - you are not just a cog - well, less so, IMO.

Re: Ask HN: For those programming 10+ years, what do you wish you knew 4 years in?

#362
post #185

Work somewhere where software is the main product and not just a cost center. You can learn a lot quickly if you do cutting edge things with people who care about technology and not just cost. Solve real world​ problems. Doing elegant things is very difficult because the real world is much more convoluted than theory. Do a few things in depth. Don't jump at the latest thing every few months.

> Work somewhere where software is the main product and not just a cost center. I've done both and I can't say one is better than the other. I've worked on software products where marketing couldn't figure out how to sell it and kept changing the core functionality. Or where the CEO kept shoving his ludicrous ideas onto development. I've worked on rewarding IT projects where I worked very closely with the users and w…

Interesting! I switch very early in my career to working for product companies because I saw no other way to have a rewarding career as developer. So far it's worked out pretty well for me.

However, recently I read Developer Hegemony[0], which seems to describe a path for IT developers to also have rewarding careers.

My current thinking is that the Agile philosophy definitely contributes both to successful projects and to satisfying careers for IT developers (Agile came primarily from that world of software development) but only when developers and users are equal partners. That generally only happens when the developers are independent consultants who can speak the language of business.

[0]https://leanpub.com/developerhegemony

Re: Ask HN: For those programming 10+ years, what do you wish you knew 4 years in?

#363
post #79

Earlier quoted context omitted.

I wish... I worked for many companies everyone wanted to get in, and am still approached by big 4 ones G/FB/AP/AM (no MS as I rejected their offer already). What I observed is that consistently the ones that move to the top are the ones that master the practice of appearance, backstabbing, instigating fear of "missing the train" in superiors, throwing peers under the bus when fitting, betraying trust, sensing and ada…

I have noticed there is a stark contrast between those who are aware of the political environment and those who aren't. You seem to be hyper aware and 'plugged in' to hear these stories. Most developers just write code and post memes on the team slack/hipchat channel, completely oblivious to things going on around them. You should blog about some of this, changing names and obfuscating to "protect the innocent" so to…

Exactly. I've also been burned out from an highly political environment, seeing how people raise to the top by basically following advice of the kind given in '48 laws of power'.

But in a way it's been eye-opening, seeing this darwinian play go on, it confirms a lot of my theoretical understanding of evolutionary psychology, I find it quite fascinating. Not only that, but just observing it shows you how to improve in this area.

But from what I've observed, most people are completely unaware of this side of things. A certain personality seems to be affected by this "issue", and that personality seems to correlate quite highly with caring deeply about their work, pursuing excellence in their field and so on. But alas, no-one has written more clearly on the topic/ psychology of corporate politics than Michal O. Church, I do recommend reading his essays for those affected by the issue (even though he has acquired a bad reputation around these places, probably because this is a sensitive issue).

Re: Ask HN: For those programming 10+ years, what do you wish you knew 4 years in?

#364
post #311

Earlier quoted context omitted.

Having regrettably started from the IT side, it's seemingly impossible to make the jump to a software company proper. Nothing I do day-to-day is flexing any mental muscles an interviewer would find sexy. We're like a permanent underclass of undesirables. Without spending time outside work to focus on sharpening basic undergraduate CS knowledge, I know I'm getting objectively rusty at the types of problems I actually…

I sympathize. Early in my career I landed a job in a small software company. My skills improved greatly. Then I made the mistake of taking an IT job. That IT job rolled into another and another. While I stay near the technical top in my IT departments, I find it tough interviewing for software company jobs. The concerns of a software engineer in a software company are just so different from an IT developer’s. I inter…

Find a place that will quiz you on real-world work instead of CS textbooks. There are a lot of them.

Companies who base their interviews on CS curricula generally just end up only hiring people who've graduated recently enough to remember it (i.e., their staff ends up being junior because they're selecting for something that's, ironically, an anti-indicator of experience more often than not).

Re: Ask HN: For those programming 10+ years, what do you wish you knew 4 years in?

#366
Few things come to mind

1. To not worry about my code being judged too much. Everyone's code can be improved. The real art is to know the balance between good enough, and not contributing obvious technical debt.

2. Not being afraid to break things. (unit testing helps lower that fear, so is documentation, single responsibility principle, open closed principle etc)

3. Assume you will probably never have time to rewrite it.

4. Assume you will probably never have time to do a major refactoring on it either.

5. Boy scouts rule. Due to the above, just gradually make the code a little better everytime you touch it. You see something bad in the neighboring method? cleanup, even if you didn't write it, and make sure the unit test covers that (shows how unit tests are important. It's not just to test your code, it's to allow people to feel comfortable changing your code when you are not there)

6. Unit test (almost) everything on one hand, but feel ok to skip testing a function that does something so trivial that the test itself is just repeating the same logic. Also consider mutation testing over code coverage as a metric.

7. The obligatory - check your own code first before blaming others, Google everything, if something looks WTF, then you are either looking at the wrong server, have cache issues, wrong git branch etc... (9/10 of the times)

8. Use other people's code, avoid NIH syndrome, use open source (with the right attribution) and don't be afraid to try and contributing back to the community. Best code is code you never had to write.

Re: Ask HN: For those programming 10+ years, what do you wish you knew 4 years in?

#367
1) Wherever you work, find at least one good mentor who is better at coding than you, and who can hopefully teach you a little about soft skills too: negotiating, company politics, making presentations, and so on.

2) Most companies have zero loyalty to you. They will fire you and thousands of others the minute they are in trouble, and without hesitation. If you're loyal to a company it's a one-sided relationship. Take care of yourself, the company will be fine without you.

3) Age discrimination exists, and it is VERY harsh. And your brain will eventually slow down while technology ruthlessly and quickly marches on. You might find it tough to keep up due to either or both of those factors. Save up early. Be able to retire by 45. Keep working if you still love it.

EDIT 4) Get EVERYTHING in writing. Happened in a conversation? Follow up with a simple email "Just so there are no misunderstandings, I wanted to confirm that..."

Re: Ask HN: For those programming 10+ years, what do you wish you knew 4 years in?

#368

Earlier quoted context omitted.

Other than time spent programming on platform X, I'm at a loss as to what values I'd bring. Would I hire myself, based on my job history? Probably not. I'm hardly going to impress anyone with such an attitude! Any suggestions on alternate roles to look for? I'd worry that just because it's a software organization, it doesn't mean I wouldn't be filling their own version of cog in a cost-center.

I guess this varies by location, but on average there are so many more openings than there are developers that it shouldn't be at all impossible to find a company willing to take a chance on you, especially if you are willing to either work very hard or take a slightly under market value paycheck (for the very first job). So time spent using X is great, but just saying "I can learn" and giving an example of how you'r…

Yeah, pay grade is really where it gets sticky. If you have basic skills you can find an entry level gig easily... as long as you're willing to take a market-level salary for that role. A lot of people who've spent years building a career in a dead-end sector will have salaries substantially higher than that, and that makes it difficult to jump.

These people should focus on improving their credit, cutting expenses, and building up savings so that they can take the salary hit that will get their careers on a better track for the ~20 years until they're eligible for retirement.

Alternatively, these people can go in through a social backdoor. Befriend a powerful person at a company you'd like to work at and demonstrate why he needs you. If he has authority to set salaries, he will likely do everything possible to accommodate your higher-than-market salary, even if he can't get you 100% of the way there.

But beware: overpaying an employee is the best way for a company to trap him/her. Do everything possible to not become dependent on a rate you can't easily command somewhere else.

Re: Ask HN: For those programming 10+ years, what do you wish you knew 4 years in?

#369

Earlier quoted context omitted.

> The boundary between a beginner and a coding rockstar really isn't very great I respectfully disagree. My experience says the difference between a beginner and a really good, experience coder, is HUGE, and not only on fields like "machine learning" but in everyday commercial systems. Unless, of course, your platform is something like Java where everybody is crippled to an extreme degree. That is, if you get 400 peo…

I think an important piece of advice to take from this (and something that I learned early on) is to favor tools that reward mastery. In this respect Java isn't actually that bad, even if there are better options available. What's worse is the culture of many organizations that happen to use Java.

Misapplied Java design patters are the root of all AbstractWordFactoryFactory("evil").

Re: Ask HN: For those programming 10+ years, what do you wish you knew 4 years in?

#370
Most important: don't try and be clever when solving a problem. Simple & readable code is typically better than clever-tricks or one-line unreadable-solutions.

Almost-as-important: stay curious.

Apart from that:

- experiment, make mistakes, screw-up, accidentally do rm -rf / etc etc. Just make sure you learn from them :-)

- look at how other people have solved similar problems, perhaps what your colleagues have done at your job rather than just random github stuff so that it has more context. See if they did anything that you didn't think of (... or not!)

- learn the basics of key data structures and how/why they work (graphs, trees, hashmaps etc). Learn why they are cool, what the benefits are and where they could be useful, but remember the most important point and try not to be too clever and force them in where a loop would do!

- try to keep your interests/skills/knowledge fairly broad. I've interviewed people who seemed really good, but turned out to really only know about one specific narrow field (e.g. they knew everything about ReactJS/Angular/VueJS (for example), but did not know even the basics of how HTTP works or how to do a SQL join) so I've had to reject them. As well as programming, learn a "enough to be dangerous" in unix CLI, networks, databases, web stuff, basic OS stuff, storage etc.

- similar to above, try and learn another programming language after you are competent in one. The learning experience and different perspective will make you a better programmer in both languages.

- finally in a slightly more negative vein, the company you work for might be nice and might be friendly, but the company will have zero loyalty to you if it comes to layoffs/re-orgs etc. Don't stick around at a company longer than you know you should just because you feel like you "owe it" to them.

Have fun and good luck!

Post reply on HN