[HN Gopher] Veteran engineers (10 yrs exp+) advice needed
___________________________________________________________________
Veteran engineers (10 yrs exp+) advice needed
In hindsight what were the best career moves you made that really
leveled you up as an engineer (i.e made you a much better
engineer).
Author : strikelaserclaw
Score : 18 points
Date : 2021-10-13 19:23 UTC (3 hours ago)
| hkarthik wrote:
| If you've primarily worked on B2B/enterprise software where the
| company makes a lot of money with a smaller user base, try
| working in consumer software where the company makes a lot less
| money across a lot more users.
|
| If you've primarily worked on consumer software, do a stint
| working on B2B software.
|
| The way you work as an engineer changes a lot among these two
| customer types, and there are valuable lessons you can learn and
| apply from working on each one. The systems design and scaling
| challenges can also be quite different.
|
| Your versatility as an engineer who can recognize a wider variety
| of problems and define different solutions also improves.
|
| There a lot of B2B-like problems lurking inside of big consumer
| tech companies. And a lot of things that can go faster and
| provide massive technical improvements if you deploy B2C thinking
| and tech inside a B2B company.
| dougbarrett wrote:
| I've been in my current role for nearly 9 years, working in the
| field for 12+. I'd say that the one piece of advice is to not get
| stuck to a certain stack if you have the authority to make those
| decisions.
|
| You're definitely going to make the wrong decisions about the
| stack you choose, or the way you design elements of your code,
| but that is how you learn.
|
| Good problems to have, like scaling to thousands of concurrent
| requests, have been the greatest opportunities to learn. You may
| not get the answers right away, but they will come.
|
| Before I get comfortable with learning any new language, look
| into the best practices for caching, or how easily that is
| handled. Your ability to know how and when to cache whether it's
| in memory if the language you use supports that, or through
| memcached/redis is going to make it less likely that you're going
| to need to do a complete rewrite in the future.
|
| I first started programming 20+ years ago before I was 10 years
| old, with Visual Basic and the demo. Eventually moving to access,
| and PHP in the early 2000's in my later years in high school.
| Today, some of the larger apps I've written have been written in
| Go. Lately in the last few weeks, I've really come to love
| Ruby/Ruby on Rails, and for apps that I don't need to scale, that
| is going to be my go-to language for my own projects and client
| projects.
|
| Would I suggest we rewrite everything or utilize Rails in my day
| job? Not a chance, because 1) my productivity is not worth it and
| 2) it's not the right tool for the job. Maybe if we had to write
| some back office software I'd recommend it, or I'd use Sinatra
| for a basic API/demo.
| strikelaserclaw wrote:
| i see people around me jumping ship every two years for various
| reasons, but you've been with a company for almost 10 years, do
| you think that steadiness has helped you become a better
| engineer or has detracted from helping you gain experiences?
| dougbarrett wrote:
| I think my position is unique to others. A year after I
| started, my wife and I had our first child, so ensuring we
| had a stable and steady stream of income was my priority
| above all else.
|
| Along with that, the company I work for has been good to me
| through the years. I've enjoyed working with my co-workers
| and the projects I work on. While I may be able to make more
| working for another company, I do think that the atmosphere
| and ethos of a company bring a certain amount of value that I
| would be trading off. I may be wrong, but I have no reason to
| think otherwise at this point.
|
| I've always been self-taught, and always tried to be working
| on something on the side, so I believe that has allowed me to
| keep up with changes and try new things to scratch my itch of
| not being complacent.
|
| When I first started working at my full-time job, I was the
| only developer working on my project and was entrusted with
| choosing the stack I felt could get the job done. It felt
| very early start-up in that sense. Shortly after that, I
| began working on another product that I'm still working on
| today, and wrote the main components in Go and some back
| office parts in PHP. To help support me being the sole dev,
| we had a few other devs come in and rewrite the majority of
| the components in Java because back in 2013, Go wasn't as
| widely used as it was today.
|
| I'm thankful that for the most part I've always been able to
| choose the tech or libraries I want to work with, within
| reason. I try not to push it too much, for example we use
| MySQL and Redis primarily for data storage and transient
| storage, but part of our app does use Mongo and that was a
| direct result of me trying to hop on the bandwagon early on
| that I now do regret because Mongo provides us no benefit
| over MySQL.
|
| If I do want to use some obscure tech to test out, then I'll
| use it for my own projects. If I feel comfortable enough then
| I'll use that for my client projects as well. Only if it's
| something I've battle tested will I see if I can use it in my
| primary job.
|
| For the first time in 5+ years I am not developing a client
| side-project in PHP or Go, I'll be using Ruby on Rails,
| because I'm at the point that the stability of the toolset
| and my productivity outweigh any performance gains that may
| be had with Go, and these projects are primarily back office
| that won't be doing a ton of data crunching or have more than
| a dozen users using it at a single point in time.
| exelib wrote:
| Two things:
|
| 1. Observe a great developer. How he/she think? How he/she
| approaches the problems? I was lucky and met Winsley back in
| 2008. Despite I was working only ~1 year for the company, this
| changed my whole life.
|
| 2. Do everything and try hard to do it great.
| jdjdidkkeksksk wrote:
| For me, leaving the States.
|
| There is an impenetrable glass ceiling in the states based on
| where you come from, where you went to school, if you can pass
| made up tests, and if you're an extrovert.
|
| For example, I've always wanted to work in R&D, but it's
| impossible in the states. If you don't have a masters degree from
| a good school, you can't even get an interview. And (from my
| experience) you can't get a masters degree from a good school
| unless you're already rich.
|
| For reasons I won't bother going into, I've been denied getting
| into any Uni that would allow me to even get a degree that pass
| any kind of HR filter. Let alone have the personality to pass any
| needlessly high pressure white board interview.
|
| Almost none of these things have mattered since I left, and I've
| had way more opportunities. Additionally, people in tech, in
| general, are far less shitty.
|
| I was close to committing suicide in the states, and my life now
| is amazing (and has been for years).
|
| Depending on the issues you're facing, your personality, and if
| you live in the states now, I would highly recommend leaving and
| trying your hand elsewhere on the globe. Especially if you grew
| up poor.
|
| (To preempt the "oh you didn't try hard enough, it's easy I just
| did xyz" - good on ya!)
| solarkraft wrote:
| Where did you go?
| damagednoob wrote:
| (I'm a dev with 16 years experience)
|
| I joined a startup (20+ employees) and it was a great way to grow
| my career. In 4 years I went from Senior (in a team) to Lead (for
| a team) to Technical Lead (shaping technical decisions for all
| dev teams). Wore a bunch of different hats and got experience in
| many different areas.
|
| Working-from-home was a really good fit for me. I can get hot-
| headed (not proud of it) and being away from colleagues and
| communicating in an asynchronous way gives me enough time and
| distance to cooldown and (most of the time) put forward the best
| version of my argument that I can.
|
| Started contracting around the same time as wfh and in a weird
| kind of way, it also provided some distance. You just think
| differently about your relationship with any company. It can be
| scary at first because you know you're first on the chopping
| block when downsizing needs to happen but the upside is that
| you'll probably earn enough to set some aside as contingency.
|
| Some people will say not to switch stacks but I've done it a few
| times (C# -> Ruby -> Node.js -> Python/Go) and I don't think it's
| hurt my career. My recent switch to Python/Go has really just
| been me getting bored at work with Node.js and wanting a change.
| Another side of it is that if you want longevity as a developer,
| you'll need to be able change stacks a few times in your career
| to remain employable.
| aljgz wrote:
| 20+ Years of dev, some of these I did right, some I wish I did ;)
|
| 1-Learn one language/stack inside out. That knowledge translates
| very well o other stacks: They need to solve the same problems,
| they just have different approaches/solutions.
|
| 2-Don't be a fanboy of one stack: Work with others, if you are a
| backend developer, do some frontend, if you work with strongly
| typed languages, try python for some time, if you have always
| used GC languages, try rust, etc. Different languages/stacks
| teach you different ways to come up with solutions.
|
| 3-This one is suggested by the others, but it cannot be
| overemphasized: Learn SQL, and learn it well. Postgres (with all
| its gotchas) is an incredible work of engineering, learn that and
| you can easily switch to others when needed.
|
| 4-Take care of your body. Find the exercise that works well for
| you. I hate gym, but love tennis.
|
| 5-Take care of your mind. Avoid people and workplaces that waste
| your mental energy. The world is packed with awesome people and
| companies to discover.
|
| 6-Be reasonably kind to people. They tend to re-appear later in
| your life and play roles you would not imagine now. But be kind
| and forget (as in fire and forget): don't expect people to return
| your kindness, this expectation leads to disappointment. Also,
| don't make your plans based on that.
|
| 7-Push your limits. This is not overworking. Learning for 1
| hour/day for years can make a huge difference. But also be ready
| to finish a book on a weekend and come back next week with some
| firm understanding of a concept/technique/tool... if that's
| needed.
| RandyRanderson wrote:
| These are all gleaned from mistakes I've made or seen made in my
| career:
|
| . Don't do a good job; only seek to make sure ppl (managers and
| co-workers) are happy with the job you do.
|
| . Do what's best for you (not necessarily the organization). Aka
| Resume Oriented Architecture. Aka ROA for the best ROI.
|
| . View being employed as a business. Would you ever start a
| business to sell to one client? Always be looking for the next
| client.
|
| . Never document anything. Sadly, the more obscure
| language/tech/code/artefact you emit, the harder it is to get rid
| of you. I inherited a whole team that had all the
| router/switch/etc passwords in their heads "for security
| reasons". They could not be fired, even for coming in at 10.30am
| and leaving at 3.30pm, constantly missing meetings, etc.
|
| . Hire someone to replace you once you've built an inscrutable
| system. You can't get promoted if you still do everything and you
| can't do nothing (manage) if there are things to do.
|
| . Save and invest often. If you do, by the time someone competent
| is in a position to see how bad a job you did and bring the
| hammer down on you, you'll have enough to take up woodworking and
| occasionally chuckle to yourself thinking about how anyone would
| ever right the trail of destruction you've left.
|
| . Never tell anyone these things. ;>
|
| /sarcasm
| ironmagma wrote:
| I made it more than halfway down thinking you were serious.
| Sadly there are people who think these things.
| astuyvenberg wrote:
| Recognizing that employment is a marketplace, and thus the value
| I can provide might be worth 5x (or more) to Company A vs Company
| B (even if it's a similar title or role).
| tmaly wrote:
| I have been at my current company for 16 years.
|
| Developing great people skills and helping people when you can
| has been a great level up.
| giantg2 wrote:
| None. My choices where all terrible and held me back. Stuff like
| naively believing the company promises, working with obscure
| tech, switching stacks multiple times, stuck with the same
| company, etc.
|
| I guess I'm a good example of what _not_ to do.
| strikelaserclaw wrote:
| did u stay with a company for long periods of time (4+ years)
| or did u frequently move from company to company ( switch every
| 1-2 years)
| giantg2 wrote:
| All 10 years at one company
| strikelaserclaw wrote:
| do u regret not gaining experiences at other companies?
| giantg2 wrote:
| Not specifically. I regret not job hopping to increase
| money.
| jmrm wrote:
| Bad experience are even more valuable than good ones. I think
| that because you probably can tell what and why happened, and
| what you could and couldn't to prevent that situation.
| giantg2 wrote:
| It's only helpful if it's actionable. I don't have anything
| actionable.
| knightofmars wrote:
| You are a mercenary. * Loyalty does not exist
| (company, coworkers, etc) * You dictate pay for the work
| you do (or leave the job) * You dictate your own hours
| (overtime is your own choice not company's) * Strive to
| always provide maximum value (efficiency not time spent) *
| Focus on keeping a core set of skills sharp * Quit if
| conditions are untenable
|
| When a person does the above, they start focusing on how to
| provide value instead of "doing a job". A person can be a
| phenomenal engineer and yet have a poor career because they never
| figured out how to be a valuable engineer.
| gregjor wrote:
| I have called myself "programmer" for 40+ years, never
| "engineer." I worked as an employee in cubicle farms for over 20
| years, then freelanced full-time for about 15 years as I aged out
| of the cool startup/FAANG scene.
|
| Since you asked about career moves, the best things I did:
|
| - Learned relational databases and SQL in depth. Many
| applications (and almost all business applications) are built
| around databases. Databases tend to have more business value and
| longer lifespans than application code.
|
| - Learned Unix/Linux and the command line tools. I can get a lot
| done with simple stable tools that come out of the box when other
| "engineers" are writing piles of code to get the same job done.
|
| - Get along with other people, learn from them, listen and pay
| attention. I always want to learn how the business works and what
| people who aren't programmers do. That pays off in the form of
| contacts in various industries and positions who may give me work
| later. Connections count for a lot, more than languages and tools
| (now called "stacks") in my experience.
|
| - Domain expertise. Rather than think of myself as a "C
| programmer" or "PHP programmer" I present myself as someone who
| can understand business requirements and add value. Knowing how
| logistics or retail or finance works has more long-term career
| value than mastering a programming language.
| fdgsdfogijq wrote:
| All that matters career wise is whether you can leetcode. If you
| can, great! Go get a 450k offer. If you cant, get into management
| ASAP or move out of your developer role, because your pay is
| capped and theres no where to go.
| vkbii wrote:
| The people around me made the biggest difference. Its not hard to
| find ways to work with great people. Everyone needs help in some
| form or the other, in this complex ever changing world we live
| in, and if you are paying attention to what other needs, you can
| be of use to anyone. And once interesting, driven people find you
| useful, doors keep opening.
| mooreds wrote:
| * working in a consulting shop (for breadth of experience)
| * working in a big company (exposure to scale I can't get any
| other way, though I didn't stick around long enough, tbh) *
| working with a product for years and years. makes you think about
| ways to help future you in a way that consulting won't. *
| blogging about problems I found interesting. to write a
| description of a problem is to begin to truly understand it.
| * speaking. doesn't have to be at a bigname conf, even at a
| meetup will force you to learn. * founding a startup. not
| for everyone, but super helpful to me in having user empathy,
| thinking about business process as well as code, GSD *
| doing a stint as a technical trainer. really improved my grasp of
| the technology.
| chipuni wrote:
| The single best thing I ever did to level up my knowledge:
|
| I left a (huge) company that I had been working with for seven
| years, to work for a tiny company. It taught me just how little I
| really knew.
|
| If you want to level up as an engineer, once your current company
| runs out of things for you to learn, change companies to the
| exact opposite. Shift from a large company to a startup. Shift
| from education-based to finance-based. Shift everything that you
| can, so that you get completely different problems.
| IndexCardBox wrote:
| I've been working in the industry for 15+ years (including
| internship). I've job hopped every few years (currently working
| for a FAANG company), but I know devs with similar experience who
| have had the same job the whole time. Both can be very
| successful.
|
| I think the biggest differentiator between a good engineer and
| bad engineer is ownership. Care about your work (not to the point
| where you have no work/life balance) and be passionate about your
| craft. That's what separates a good engineer from a bad engineer.
|
| As for your career, remember this is your livelihood. If a
| company is falling apart, go look elsewhere. If a company isn't
| giving you a raise you deserve, talk to your manager.
___________________________________________________________________
(page generated 2021-10-13 23:02 UTC)