Live data from Hacker News

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

news.ycombinator.com

211–220 of 538 posts

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

#211

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. You can learn a lot quickly if you do cutting edge things with people who care about technology and not just cost.

Very true, but the company culture also needs to be right in order for this to really take hold. There's also the fact that the work and schedule will likely be more demanding. This can be a positive if you enjoy the work, but a big problem if you dislike unpredictable hours. When the company's primary revenue source is software, you will have to work extended hours at some point or another to solve critical business issues.

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

#212

Earlier quoted context omitted.

> Work somewhere where software is the main product and not just a cost center. This is THE big difference between S/W dev and IT. For 20 years I worked in the former, and for the past 10 in the latter. No question about it: IT is hell. Theirs is a never-ending mission to reduce the cost of moving data and being "compliant" with often-meaningless ever-excessive corporate standards (and forever meaningless MBA/CIO fad…

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…

If you want to train yourself in programming, algorithms and understanding of time complexity, I recommend giving codility.com a go. You are asked to implement solutions for various problems in a programming language of your choice. Basic literature is provided, for example problems which are elegantly solved with stacks come with a pdf about stacks, their implementation in Python and so on. If you go trough the lessons in the order, you will learn many useful programming techniques, and big O notation will no longer sound scary.

The website provides a decent in-browser editor, or you can write in your own and paste the solution. You get a few data points for expected output, can write up to 10 of your own primitive tests (although I tend to use asserts). Your solution is automatically evaluated afterwards, because it has a bunch of unit and performance tests written for it. When your program fails on small correctness tests, the website says what was the wrong output and what the correct output should be like. VERY nice.

The language used to describe problems is a bit obfuscated and maths-like, but I treat that as extra challenge. You certainly don't have to remember much from your university or high school to get started. It is important to understand and rephrase what they are asking of you.

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

#213
post #25

* Functional is generally better but don't be crazy about it. * Have tests but don't be crazy about it. * Keep your development process as streamlined as possible. * New languages generally aren't as hard as you might think and they might be the right tool. * The right tool for the right job can make a huge difference.

I would have upvoted you if it wasn't for your last sentence which is the most hyped in our industry. WRT this sometime ago I wrote this in a S.E. answer:

I'm a hater of the sentence "use the right tool for the job". Nowadays, any language can do pretty much anything you want to do with it (except if the language has recently been created and is still in the early stages, e.g.: Elm?).

So then IMO these days what you have to do to choose your programming language is not ask what you're going to do, but know what you want to avoid.

So I use this rule of thumb:

    Do I want to avoid paying licenses (or resorting to piracy if I'm in the early days of a startup and I don't want to spend money), then I choose a language and a set of tools which have open source implementations (compiler and class libraries) (i.e.: C++11 vs MS Managed C++)
    Do I want to avoid chasing memory leaks for the rest of my life? Yes, therefore I use a language which has garbage collection (i.e. Java vs C).
    Do I want to avoid painful evolution of my project, especially when it's getting larger (wrt easy refactoring and maintainability)? Then I use a statically typed language instead of a dynamically typed one (i.e. TypeScript vs JavaScript).
    Do I want to avoid recent headaches I've had with other software projects in which concurrency was very hard (read: race conditions), then I choose a functional language (to achieve immutability, avoid side-effects, etc.) (i.e: F# vs C#).
And it's not that I ran out of questions, there are many more...

But, did you guess it? The questions above are the most important ones you should ask yourself when choosing the next language to use/learn, in my opinion. And, did you guess it? This is why my current favorite programming language is F#: because you can avoid most of the pitfalls that you find in other programming languages in the industry, and you still can do pretty much anything with it.

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

#215
13 years.

0) Money. the big money is in projects that need help. E.g. CEO during your interview: "The last lead programmer flipped me off and our accounting system in small talk is broken." That's hard. But that is where money is.

2) errors happen. Do tdd - so you can go to that concert.

2) Be the go to guy. If someone needs something you better be able to help. Brushing someone off creates office enemies and will remove any hopes of promotion.

3) any idiot can write code. I can with one hand tell you the names of people that can take over a system with 500k of mangled code.

4) think win/win. If you are doing a project - work hard -win for the company, but also put it docker so you learn something too.

5) launch side projects. You should release something large every year.

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

#216
Be nice to the people that's taking their time to teach you. Don't take their time for granted.

Throughout my career, programming mentors have shaped me to be who I am. I've learned most of best practices through code reviews and from my mentors.

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

#217
Be skeptical of all the advice and best practices you read about online. It's mostly fads and fashion with a few useful gems that might not be so obvious. Implement what measurably works not what some blog or news link aggregator site thinks should work. Shoot for simple over complex.

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

#218
post #121

Earlier quoted context omitted.

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…

Maybe it's that half of my family are politicians/lawyers, many of them leaning towards high-performing psychopathy and observing their behavior since being a child, their attempts to control me, expressing frustration I figured out their game and deny them, and then observing the same at work with those "ambitious persons", thinking anyone that does work is an idiot and should be handled like a child in a kindergart…

The Socratic method, isn't it?

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

#219

Earlier quoted context omitted.

> Work somewhere where software is the main product and not just a cost center. This is THE big difference between S/W dev and IT. For 20 years I worked in the former, and for the past 10 in the latter. No question about it: IT is hell. Theirs is a never-ending mission to reduce the cost of moving data and being "compliant" with often-meaningless ever-excessive corporate standards (and forever meaningless MBA/CIO fad…

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…

quit your job and use the downtime to retool the way you think. you won't have much success otherwise.

no pain, no gain.

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

#220
post #56

There is no future in software development as a job. Move to a management position quickly, network, make friends with decision makers, don't spend too much time on crafting your skills, your reward for perfection will be more insane work and crazy interviews where one part not 100% done kicks you out. Work on your appearance, kiss up, lift, dress properly, use anti-aging cosmetics, make cool looking hairstyle, wear…

[deleted]
Post reply on HN