Live data from Hacker News

Ask HN: How can I grow as an engineer without good seniors to learn from?

news.ycombinator.com

221–230 of 305 posts

Re: Ask HN: How can I grow as an engineer without good seniors to learn from?

#221
post #214

Couple of important lessons that will keep you in good stead for a long time: 1. Learn how to learn well, continuously, and sustainably. Tech changes rapidly. And you will want to hop from one domain to another, just for keeping things interesting and to move with markets. This is both a blessing and a curse. It is a blessing because you can start late and still be in the top percentile if you have the brains and wor…

Any recommendations on learning to "think clearly"? I feel like this is something I struggle quite a bit with and haven't found any good resources on improving it other than "sleep" and "exercise", which I'm not lacking in.

Unironically, that's what school is supposed to be for.

There's keeping the engine well maintained (the sleep and exercise part, for example) and there's driving the engine down new paths and honing you driving technique. You work on the latter by exposing yourself to novel and interesting arguments (interesting philosophy or argumentative non-fiction, for example) and then working through the argument again with counter-arguments in mind. I would not recommend pop-sci books for this, because their arguments and writing tends to be quite flabby.

I'd actually recommend something like RG Collingwood's "The Principles of Art" which is a relatively plain English example of well written philosophy:

https://archive.org/details/in.ernet.dli.2015.188470/page/n1...

You will disagree with him. The point is to understand how and why you disagree with him and to explain that clearly, not only to yourself but others as well. Thinking clearly is about responding and communicating clearly while displaying a sure and succinct understanding of the problem at hand.

You can apply that to everything you read or are confronted with, but the key thing to realize is that "thinking clearly" is something you practice. There is no one trick --- it's an approach.

Re: Ask HN: How can I grow as an engineer without good seniors to learn from?

#222
First off, don't get too distracted by what software engineers are talking about on the internet. Despite the enormous overlap in what kinds of technologies you use at work, the jobs are not the same, and the details of what constitutes a job well done are often not the same, either.

In particular: data engineers' main task is to produce clean data. Few people care about the cleanliness of the code used to produce it. They care about whether or not the data makes sense, whether or not it's accurate, how well it's documented, and whether or not others can understand the ETL pipelines' dependencies and assumptions so that people can predict how changes to business processes and IT systems will affect their business intelligence and data science efforts.

Cleanliness of code is, at best, a secondary concern. Especially if you're mostly working solo. The code for managing data pipelines is often relatively small and tightly scoped, to the point where even a messy ETL implementation can still be easier to understand than very clean application source code. Or at least, that's been my experience as someone who's worked as both a software engineer and a data engineer.

The biggest thing is, again, just to make sure the documentation is good. In one data engineering role I found a bunch of things in the data engineering pipeline that I was pretty sure were junk that we could get rid of to simplify the whole thing. Doing so would have reduced the code for the pipeline in question by ~25%, with comparable reductions in run time and server load. But I couldn't be sure because the original author left no documentation to indicate why those bits were there, so we ultimately decided to leave it there for the sake of safety. The original author was a software engineer, not a data engineer, so the code in question was incredibly clean and readable. I had no trouble figuring out how it was doing what it was doing. But what I really needed to know was what it was doing and why.

I'd also encourage caution about adopting fancy tech stack. It's amazing what you can accomplish with just a SQL database (or Parquet files) and some Python scripts. Data engineering is a space with a lot lot lot of vendors and open source projects selling solutions to problems you might not even have. And every additional solution you bring on is another piece of technology to understand, which can quickly get overwhelming if you're on a small team. Especially be careful about committing to the open source versions of technologies like Apache Spark. I can tell you from experience that, if you can't name the specific person who will personally be responsible for supporting and operating the technology, that person will be you, you will end up spending a lot of time doing it, and it will probably not be a use of time that the person who does your performance reviews will consider valuable. Especially if "I had to spend a bunch of time diagnosing Spark executor failures" becomes the reason why you couldn't get other things done.

Re: Ask HN: How can I grow as an engineer without good seniors to learn from?

#223
post #106

It sounds like you're just doing 'in house' stuff so you don't have to think about how well it will do in the market place. There are huge benefits to that. All you need to do is make sure you keep things as simple as possible, and above all else, make sure you have good ways to thoroughly test everything. Bugs in code are far more embarrassing when it damages the actual company you're working for. So you don't need…

If that's true then OP should go out of their way to compensate for it.

It's especially true in the unique case of developer tools. Developers should use their own tools (that they're selling) because there's no better way to "test" something than to actually use it daily!

Re: Ask HN: How can I grow as an engineer without good seniors to learn from?

#224
post #202

Earlier quoted context omitted.

"This positions OP for long-term success. I'm late in my career and can tell you that engineering skill only really matters in a few places and that what and who you know, as well as how you treat people/circumstances, is 99% of the job." Correct, if they're just looking to catapult themselves to the upper echelons of "leadership" and "executive" careers. But that has nothing to do with engineering which is what they…

"leadership" is arguably the most important engineering skill. Every engineering role I've ever had required leading people or organizations to make the correct technical choices.

You're conflating manipulating with engineering. Communicating with people can be part of a job but it isn't engineering.

  engineering
  noun

    the art or science of making practical application of the knowledge of pure sciences, as physics or chemistry, as in the construction of engines, bridges, buildings, mines, ships, and chemical plants.

 Digital Technology. the art or process of designing and programming computer systems:

  computer engineering;
  software engineering.
https://www.dictionary.com/browse/engineering

Re: Ask HN: How can I grow as an engineer without good seniors to learn from?

#225
You are in a great position to learn.

BTDT (Companies too cheap to hire experience, and I'm pretty smart). I am also a high school dropout with a GED, so...cheap.

In my case, I remained very humble, voraciously ate up all the literature I could, and got my company to send me to many seminars, conferences, and classes. I did a lot of traveling, and learned to be frugal (lots of cheap motels).

I made a lot of mistakes, too. My company was fairly tolerant of that, because ...cheap, and I also had a lot of successes.

"Good judgement comes from experience. Experience comes from bad judgment."

You have a marvelous opportunity, here. Stay humble, learn like crazy, and don't be afraid to make sure that your managers know where you're at.

Good luck!

Re: Ask HN: How can I grow as an engineer without good seniors to learn from?

#226
Read voraciously. A membership in IEEE and ACM journals will keep your stack full although it can be a pain sorting through all of the wheat. Keep track of books that interest you in subject areas that seem challenging and interesting: if you're interested in data that will definitely be in the realm of statistics, combinatorics, linear algebra.

Do exercises. Take 30-40 mins a day to do practice problems. Use a site like codewars, leetcode, even past advent of code challenges. Do the exercises in the text books you read.

Write. Write about what you learn. Use your writing to explain it to someone who is encountering the subject area for the first time. Doesn't matter what you write it on: a paper notebook is just as serviceable as a blog. The act of reinforcing what you discover by writing it down helps to reinforce it and challenges your knowledge by explaining it to someone else. Whatever you do make sure that the act of writing works for you: it must be seamless and flow easily.

Don't over-engineer the perfect writing system that use a ton of frameworks and require maintaining deployment scripts. You will avoid writing if it is hard to do. Writing itself is hard enough and that's what you need to focus on. If you want to go the blog route make sure it's no harder than opening up a text file and running a simple script when you're done.

Lastly, find a mentor. It can be someone outside of work -- and in your case sounds like it will have to be. Contribute to an open source project you use regularly. Go to meetups in your local area or online. Find someone you can talk shop with. And when the opportunity arises ask if they'd be interested in meeting up once in a while to review your work or talk about what you've discovered.

Re: Ask HN: How can I grow as an engineer without good seniors to learn from?

#227
The advantage of your position is that being a tech lead gives you a lot of ownership and responsibility, and that is one of the best ways to learn a lot in a short time.

The disadvantage is that it’s hard to grow beyond what you can visualize, so past a certain point you’ll likely be growing slower than you would working under someone with 10-20 more years of experience.

I would advise one of two paths: either stick around a year or two u til you can confidently own “tech lead” on your resume and move on, or commit to a longer stint and really reap the learning benefits of the technical leadership position.

So much for the unsolicited career advice :). To answer the direct question, a few things I found useful as a startup CTO:

- Follow the news for your tech stack. Stay up to date with the various technologies. Go to meetups. - Think about the long-term development of your system. Spend 1% of your time thinking about where you might be in a year or two, and do some experiments to explore those paths. Your codebase is the best place for you to experiment with new tools as it’s a real-world system with the warts that reality brings. You don’t have to merge these experiments! As CTO I had probably 20% of my PRs as RFC / experimental work. (I do not advise contributing to FOSS for learning in your scenario. Feel free to do so if you enjoy it though.) - keep an Architecture Decision Log. Review the big decisions you made in hindsight, and learn the lessons that you can only learn if you own a system for multiple years. Eg this DB choice seemed good and bought us a year of scale reprieve, but then required a 2 man-year rewrite down the road. Knowing the true value of “I” will make you much better at judging tradeoffs in ROI. - Beware burnout. If you are studying and leisure coding in your spare time you will eventually run the tank dry. It might take 5 years or it might take less. Just be mindful. - Don’t be terrified of burnout. The tech lead position is a unique opportunity to feel ownership of a system and have the autonomy to try things out. It’s a role where pushing harder can yield more leverage than a normal position. So putting in some extra hours can pay off in the long run for your career.

Re: Ask HN: How can I grow as an engineer without good seniors to learn from?

#228
I have found myself in a similar position between independence and isolation in my role, though it's not as high-profile.

I am interested in the other answers here and will add my two cents.

Recent hiring: KEEP IT STUPID-SIMPLE. Being new at the company, less experienced, and empowered, you will probably be tempted by lots of "solutions," whether they're products, frameworks, management buzzwords, etc. Most of them are not designed for a one-man-team. Make sure your solutions actually help YOU.

Non-technical boss: AGREE ON METRICS. Your boss/es will measure you eventually, whether either of you are aware of it or not. It may be better to discuss some metrics while you have a chance to do something about it. At the end of the day, it's almost always about money (and sometimes ego), especially with cantankerous O&G types. Just figure out how you can show you enable, save, or make money within the system.

Feedback and standards: YOUR BEST FEEDBACK AND STANDARDS WILL COME FROM YOU. You are in a position to act on your best judgement, and then own your mistakes. Yes, you can feel like a fish-out-of-water a lot of the time. I have tried to find a balance between pushing myself to learn personal skills on projects, innovating for the company, just getting things "done," and keeping myself sane. Your peers, "clients", and supervisors are probably not used to (or aware of) "best practices", which is a double-edged sword. They might expect you to deliver things you know could be better, but you also have a ton of power to build a solid environment for yourself. Think of progress like driving a big boat, not a racecar.

Re: Ask HN: How can I grow as an engineer without good seniors to learn from?

#229
I'm in a similar position right now.

I have a few years of experience under my belt, in a small team of ~10 devs. No one is a software engineer, and it's everyone else's first job essentially. There's no one senior from whom to learn, and I feel stagnant.

I improve by interacting with the open-source community. I have been getting more and more involved in several projects over the years, even making it as a maintainer for a few of them.

I recommend you look at smaller communities -- my favourite is Haskell -- as compared to very established ones like Python's. Smaller communities mean that you have more impact as a contributor, which requires you to keep pushing and learning new things. Smaller communities make it also easier to interact with senior people, for example on Reddit or a Discourse instance (e.g. https://discourse.haskell.org)

Re: Ask HN: How can I grow as an engineer without good seniors to learn from?

#230
I've been in similar positions throughout most of my career (early promotion above my current skill level with no mentor). If I look back, I think only my first internship ever did I have a good mentor to learn from. So I think I know how you feel.

There's lots of good advice in this thread, but I think the most important thing to keep in mind is to know that you will make mistakes and do stupid stuff. Always be evaluating yourself and use that to adjust how you do the next thing.

Anecdote: in my first real job after school, I was essentially give a one person R&D project that reported directly to the CTO to design a framework for "the future of our data analytics". I ended up designing this crazy over-engineered highly abstracted OO framework that was a nightmare to document and use. But since it was fast and met the requirements, the CTO pushed it through as the framework for the rest of the engineering team.

I spent the next couple of years justifying it and supporting it. Once I recognized that I made many dumb (well maybe not dumb, but novice) decisions. I used that as a learning experience for my next project.

I've had many of those kinds of learning experiences over the years, and as long as I keep self-examining and being self-critical, I learn from them and don't make the same mistake twice. Now 25-ish years later, I have a long list of internalized knowledge of what not to do.

I guess that's a long way of saying, don't be afraid to make mistakes, you will. Just pay attention to them and learn from them.

Post reply on HN