In general, read the NASA workmanship standards guides for wiring/crimps, and failure analysis documentation like tin-whiskers/shock/vibration/ignition.
When working in an industrial setting priorities need to shift away from cost optimized garbage people obsess over like chatGPT, and understand when you mess up people may get seriously injured or dead.
Understand shell-offshore standards compliance rules, and explosion rated equipment certification process. Also, integrate the safety procedures in place so when accidents do happen people know the steps to enter safe-mode, and who to phone etc.
There are a lot of unspoken rules, and corruption is commonplace in many places.
To be honest, understand most petroleum related work will be a knock off of Kongsberg and or Rockwell Automation products. There are also dangerous crazies insisting they know something by skimming stolen CVs etc.
Consider the clowns that accidentally cut someones arm off naively touching a hydraulic control-system under maintenance (true story.) Inherent safety is the #1 skill you need to work on, catch the worst case failure modes with sanity checks, and user interaction logging for accountability.
YMMV, and no I don't work for free... Have a great day, =3
I can't discuss client specific internals, but some equipment takes 3 days to bring up online.
People are fragile, maintenance/inspections need done, and team communication is more important than any lock with a post-it note. People mess up, and other people bear the consequences. The "figure it out as we go crowd" is not welcome... =3
I'm just learning about lockout systems from convos on the internet, but the idea is you have a device that locks the equipment in shutdown mode. Apparently fairly common in power generation. The hasp (the part the shackle goes into) has multiple holes, and everyone doing maintenance has their own lock, which they all put on while they're in the danger zone.
You're supposed to remove your lock when you finish up, but it sounds like sometimes angry phone calls have to be made.
Yours is an interesting situation. I would suggest the following:
1) Read code and spend an hour a week keeping up with developments in your immediate field. Understand the most used frameworks, learn how they work, what each one's pros and cons are, the lingo, the discussions.
2) Understand what your manager cares about and what he wants from you. Ask him what would be a success and what would be a failure.
3) Make sure you understand and implement best practices. Do you have a golden set? Tests? Monitoring - Do you know how much data runs through your pipeline, what your error rate is? What wakes you up when the pipeline fails in the middle of the night? Who needs to be notified, what are the downstream effects?
4) After you have a couple of projects under your belt - that may already be the case if you've been there for a while - consider hiring an experienced contractor for a week to review your code and architecture. You said you're responsible for hiring, I'm guessing you have a budget for subcontracting. Like with all contracts, make sure you have well-defined scope for what you're asking for.
Sorry to be cynical, but the you mentioned that you are very well paid, many times above your peers. But one does wonder how can there is a company who can afford to pay out so much to a junior, and yet completely unable to attract seniors with experience.
He says he is paid more than his peers (who are probably not in the tech field). It's entirely possible his 4x pay above his peers is still less than a senior or staff engineer's pay.
Coding is the easiest part of the job. The hardest part is creating resilient, useful, and beautiful software. I advise the following
- Learn the domain you are in deeply. Talk to the experts (not senior engineers, I'm talking about people doing the work) in your company about how the business and industry works.
- The interface is the product. Design beautiful interfaces that match people's mental models. A beautiful architecture needs to support these interfaces. If you have poor engineering, it will show through the product via the interface.
- All good engineers are good architects and product people. They understand the needs of their users. They understand their psychology.
- There might be software patterns for your industry, find them and learn them.
TLDR; The coding part is easy, don't seek the senior engineer to get ahead, look for the industry and business experts. Learn how to build products that are impactful for the people using your software and the business. That's how you become a great engineer.
Just to clear up some misunderstandings (caused by my own lack of information supply TBH):
- I'm hired full-time with benefits now after working freelance for 6 months
- I get paid 4.5x more than my peers in this company
- I got these many responsibilities after proving my competence and delivering on reliable solutions in my freelance tenure.
- Yep. Once again, I'm a little overpaid.
- Also, currently I am being treated quite well, and definitely not like a second class citizen, since the company is making a shift towards a tech-first and data driven approach and I'm at the centre of it.
You have definitely made a few great points here though. I'm out of my depth here when it comes to management, very high level design, etc - but given the scale of operations so far, I am quite sure I can deliver outcomes!
Also, thanks a ton on warnings about the nature of this industry, I'll definitely keep it in mind!
The Oil & Gas industry is not sexy and never will be, but it pays well above market and people with niche skills will do very well there (as you have no doubt now seen).
Technological progress in the space tends to move pretty slowly (especially on the Operational Technology side of the business) owing to many factors, but mainly risk avoidance. The flip-side of this is that once one company adopts a technology, the others tend to follow suite, so what you're doing may be very portable should the need arise.
Another benefit of O&G is that due the the specialised nature of a lot of the roles, you'll keep running into the same people at different organisations throughout your career, so keep your keep expanding your network along the way.
Don't let your perception of slow growth worry you too much - on the technology side, progression will come naturally as you take on new and more challenging projects. As a tech in a very different field, but a similarly isolated environment, I too have had these thoughts throughout my career, but remember there is a big wide world outside of silicon valley, and plenty of successful careers to be had.
It sounds like you have a boss you like who you could learn a lot from - this is huge. I'd focus on getting him to teach you to become a domain expert in the Oil & Gas space. This combined with your (relatively) niche technology skills will make you a unicorn in the future and combined with your network, pave the way should you want to become independent in years to come.
for sure: get a peer or subordinate that's somehow experienced. It's good for 2 points: to have someone to exchange knowledge and to have them as a backup, at least for support operation.
Then for your skill, understand that usually data is the most important thing in a system, especially for internal company. Learn about database design and normalization, as a data engineer I'm sure you know how critical it is. As for application level, ensure that ACID is achieved on critical-level operation, and learn maintainability.
Additionally backup / disaster recovery and/or replication also can be learned if you interested on devops route more. Having a backup (and can restore it) is a must, either you or hire someone else to do it, or hosting at a cloud.
I would definitely push for the company to hire a peer, a second-in-command; for you, that would be someone to verify and bounce your ideas off of, but to sell it to the company, you can sell it as risk mitigation, because right now this tech-first, data-driven direction your company is going into rests entirely on your shoulders, which is very risky; even if you can theoretically manage it on your own, accidents happen, burnout happens, etc. Nobody should be irreplaceable, and this isn't to shit on your achievements, but a higher level corporate thing.
That has the same energy as saying "don't say your house was expensive until you compared prices with bay area houses" - not everyone in the world can work for silicon valley companies even if they wanted to. They are a nice aspirational things up in the sky to sometimes think about, but realistically, 99% of programmers are never going to work there and should be comparing their pay against peers within their industry.
- I'm quite well paid here (4x more than my peers)
- I have been hired full-time, and get all the company benefits as well.
- The work life is great, and I don't work more than 8-9 hours a day.
- The manager/director is great and super supportive.
- I'm not being exploited by any means :)
Kindly upvote so the disclaimer stays on top of the post!