Old guys! What's your advice to younger developers?
24 24 Jul 2015 23:46 by u/roznak
And with old guys I mean old enough to count their experience in decades instead of years.
24 24 Jul 2015 23:46 by u/roznak
And with old guys I mean old enough to count their experience in decades instead of years.
28 comments
17 u/NeomerArcana 25 Jul 2015 00:45
I'm not that old, only a decade and a half of experience, but some things I've been explicitly told:
For what it's worth, these are mine:
10 u/mracidglee 25 Jul 2015 01:04
These aren't part of a overarching philosophy, but they come easily to mind:
Learn vi or Emacs. Actually, learn a little vi no matter what, because it's the only decent editor you're guaranteed to have on non-Windows machines.
Ask dumb questions.
If you're stuck working on stuff you're not crazy about, spend a few evenings working on something cool that is useful to the company. Most shops will give you a shot at building it out.
Get good at estimating, communicating, and sourcing IP and tools.
Work at a startup (or start one!) before having kids or developing other attachments makes your risk tolerance too high. Paul Graham is right about the experience multiplier you get at a startup.
HR is not your friend.
Profile your code. So much learnings.
6 u/roznak [OP] 25 Jul 2015 01:11
Spot on!
0 u/YourDickGotTheHIV 25 Jul 2015 16:16
Can you source the Paul Graham thing, I've been wondering about working for a startup.
0 u/mracidglee 25 Jul 2015 17:33
http://paulgraham.com/notnot.html
Almost all the other essays at his site are worthwhile if you are considering a startup.
3 u/tehpatriarchy 25 Jul 2015 02:20
Save money and learn to invest - which is harder than it looks - because sooner than you think you will be an old guy with out of date skills.
1 u/404_SLEEP_NOT_FOUND 25 Jul 2015 06:10
I think this is really good advice. It's hard to say for sure if software development money will be as good as it is now. Mark Zuckerberg is trying to get legislation passed to make onshoring easier. And I'm afraid TPP may be aiming in that same direction, perhaps with his help. This may be why tech companies like Google, who are notoriously bad for trying to fix SE wages, are silent about TPP.
Just good all around advice. Invest now, while you can. Don't buy a big house with the expectation that the mortage will be paid off, as six figure salaries for software developers may not be the norm in 10 years.
2 u/roznak [OP] 25 Jul 2015 00:37
A question to the older guys: When you get older, does your passion for developing decreases?
2 u/kronal 25 Jul 2015 02:26
No so old but I have some baggage.
Aside from what other people already said, if some technology feels magical, don't run from it, and don't just try to wing in superstitious ways (it works if I do this but I have no clue why). With enough dedication, and curiosity most likely you could start understanding it and that would probably make you a better professional.
If you want to keep growing in the field you have to keep learning new things, even technologies that are not directly related to what you do, many many times those new ideas can be useful in other things.
There is no problem in being a specialist in something, but learning improves the way you think, widens your toolset. As a side note it's a matter of just looking into history to realize that many "discoveries" are just rehashed ideas, just applied to different things.
1 u/roznak [OP] 25 Jul 2015 00:55
A question to the older guys: What is your thought about the "Garbage in, is Garbage out"?
3 u/bobsaguet 25 Jul 2015 01:35
Garbage in, garbage out.
1 u/whisky_cat 25 Jul 2015 02:40
I feel like I just read the best recursive joke on Voat.
1 u/bobsaguet 25 Jul 2015 01:36
RTFM
No, seriously. READ IT! Don't feed yourselves exclusively on example snippets.
1 u/Kromulent 25 Jul 2015 02:30
When I was young I used to solve problems by writing code. When I got older I preferred to solve problems by not writing code. Reuse is your friend. Fully understand the libraries available to you and make the most of them. Understand the real costs of new code - the debugging, the documentation, the maintenance, the potential surprises. Use the tools you already have.
Write code that protects itself. In the C language there is an assert() function that lets you sanity-check things as you go along, and other languages have a similar feature. These checks get compiled out when you hand a flag to the compiler, so they won't cause a performance hit. I used to put millions of them in all my internal interfaces (these are the places you'll catch most of your bugs). Sanity-check the arguments, the pointers, the counters, the terminators on your strings, the link lists. Often you'll make a dumb mistake over in one corner of the code, and then trip an assert somewhere else the first time you try to run it, and the debugger shows you the whole story. It saves a lot of time and grief.
If you are not using an syntax-sensitive editor, you are either already very good at what you do, or foolishly handicapping yourself. Be honest about this.
If you are not using version-control software to keep track of your changes and your build configurations, spank yourself and go to bed without supper. You're very, very bad.
Write code so humans can read it. Optimize only the stuff you have to, which mostly means your architecture and your design. Few modules really need to be optimized, and when they do, you'll know.
Don't get stuck maintaining code in a dying language. Change jobs if you have to, do what it takes to to keep your skills fresh. Nothing is sadder than a middle-aged guy with out-of-date skills looking for his next job.
Now and again, look around the office and ask yourself who you most want to be like in five years. If you can answer that question, do the work to become that guy. If you can't, start looking for your next gig.
1 u/roznak [OP] 25 Jul 2015 02:35
I got trapped in that one. Delphi. Incredibly hard to get back on track on the language I originally preferred. When I joined that company, they had a Choice C# or Delphi (Because of the .NET potential). They stupidly decided fro Delphi because that is where they original code was written in.
I do get regular Delphi offers but I will only do it if it is a one way transition from Delphi to C#.
0 u/roznak [OP] 25 Jul 2015 00:39
A question to the older guys: Is there a natural selection that weeds out bad developers as you get older?
3 u/mracidglee 25 Jul 2015 01:06
Some of them will go to sales or marketing, or become recruiters. Then when they talk with their customers, they'll tell them, "Yeah, I was once an engineer, just like you! Then laughs self-deprecatingly I went over to the dark side."
0 u/404_SLEEP_NOT_FOUND 25 Jul 2015 06:16
Only 15 years here... but I feel I can answer this one. Version control history. That has always been the deciding factor. I'm not talking about being hyper critical over code quality. I'm talking about people who just sort of change things and cross their fingers that they hope its fixed. Not because they were lazy, but because they truly just don't understand how/why to debug code. Running code locally/stubbing/remote-debuggers are just too advanced for them. It becomes obvious, what people were (or were not) thinking when you see what code that they checked in. This is why people say code needs to be written in an interview.
0 u/effusive_ermine 25 Jul 2015 04:15
And me? I've never worked on a project of note. Despite programming since 1983, learning a dozen languages, and going back to school in the 2000s, I never got a programming job or found success. Mostly because I didn't know then the things I just told you above.
Good luck and thanks for reading my rant.
0 u/Morbo 25 Jul 2015 07:31
Don't be proud of how clever you are in your code. Clever code is often the most fragile code and a nightmare for others to maintain. Learn to manipulate the feature, bug or requirement so you can code it simply rather than making some clever abomination that saved a few lines of code. Also learn the fundamentals of software architecture so you can reduce or eliminate dependencies on frameworks to make things happen. Always analyze and think before you code.