r/developersIndia • • Sep 24 '23

Career Lets start an interesting careers thread

Computer science and programming is a massive field. But all I see in this sub are web devs and wannabe web devs. Is it not concerning that 18-year-olds are asking whether they should focus on react or springboot? If your focus is that narrow from the beginning, you will never see the big picture!

So lets break that! I want to create a thread of all the unconventional programming jobs, the ones not talked about ever in the sub. I want to create a thread where professionals from different fields pitch their interesting careers. There are a vast amount of lucrative careers that no one even hears about! The focus here is to give them a platform, so that others are aware that these fields exist. Lets break the cycle of depressive posts from freshers who have already given up, and give people something to look forward to.

To hold the discussion, here are some rules:

Rule 1: Discuss the unpopular jobs! I have nothing against any group of people, but for this thread alone, lets not discuss the jobs people already talk about on a daily basis. Lets ban the following topics- Front / back-end/ fullstack web development, AI / ML / Data analysis. You are free to ask questions in the replies, but lets keep the platform mainly focused on the unconventional stuff.

Rule 2: Keep It Simple, Stupid. Describe what you do and why it is interesting but keep the discussion simple. A large number of participants in the sub are students, so try to not discuss domain-specific knowledge as much as possible. An 18 year old who sat for JEE and have some vague idea of comp sci should be able to understand it.

Rule 3: NO CTC, NO LPA. Enough with the salary slips! In my experience, it does not matter what you do, if you are good enough to be in the top few percentile in the field, money will follow. Since we are discussing careers, salary discussions are unavoidable. So if you want to hint towards your package, you can only use one of the three categories: POOR, GOOD, EXCELLENT. Everyone has a different understanding of these terms, and its completely fine! Please refrain from giving ANY exact figures. This is a career thread, not a salary thread.

Rule 4: Highlight the following: Why is it interesting? What do you do / how does your day look like? Your favorite language / skill / tool / editor etc which is relevant to your job. Remember, a large number of the viewers are students, so try to highlight anything exciting without discussing salaries. The objective is to inform the next generation of engineers of the opportunities they can aim for!

​

To start off, lets talk about me!

I am an independent security researcher. I basically get paid to hack stuff and then write a report on how i did it, and ways to mitigate it. While I do have degrees, everything related to this was completely self taught from completely free resources. I operate under a pseudonym. No one knows my name, or my face, where I am from, or which tier 1/2/3/4/50 college I am from. I take up contracts when I like, and am aiming for a permanent work-from-home life. The pay is excellent, as long as you are in the top 10%. Otherwise, it isn't worth it.

While it sounds nice, there are plenty of challenges. You need excellent coding skills. To break software, you need to understand it better than the developer who wrote it! Other than that, you have to be constantly up to date with every recent hack and attack vector which was made public. Your skills can get outdated very quickly if you arent updated on a monthly basis. However the primary skill you need is the hacking mentality. I never found a book to learn it from. I picked it up by participating in CTF (capture the flag) competitions, and reading numerous security incident reports. The field is competitive and cut-throat. Either you are making bank, or you are looking for other careers.

I use a variety of languages. Python, JS, Rust, Solidity. My favourite tools are fuzzing tools. Fuzzing is basically spraying a piece of code with random inputs until it breaks! It is an incredibly rewarding and exciting field you can look into.

The most exciting moment in my career was when I saved 500k USD worth of vulnerable funds.

​

What are your careers? What do you like about it, why is it unconventional, and why is it exciting? Drop a reply!

666 Upvotes

340 comments sorted by

1

u/AutoModerator Sep 24 '23
Moderator Announcement Read More »

227

u/WateredFire Sep 24 '23

People who write instructions for the processors.

64

u/wot_dat_96 Sep 24 '23 edited Sep 24 '23

There are lotsof different levels to this, if anyone is interested. I listed them from high level to low level.

  1. Driver programmers: These programmers basically write the software which tells the OS how to communicate and use a hardware. These drivers are mostly written in C, but Rust is gaining traction recently.

  2. Kernel programmers: The kernel is basically the brains of your OS. This tells the computer how to manage and handle any interfaced hardware, including RAM, SSDs, usbs etc. Similar to the one above, languages are mostly C / C++, Rust.

  3. Firmware programmer: These programmers write code WITHIN the hardware and define how they behave. Example, the code which handles a camera taking a frame and sending it to the computer via USB after transforming it to USB compatible formats. Languages can be C, Rust or verilog

  4. At the lowest level you have the people who program the CPU. These are done in assembly or other very low level languages. They basically design the instruction set of the processors

They are all different roles. The higher levels are occupied by comp sci grads, while the lower levels are electronics grads generally.

22

u/Healthy-Educator-267 Sep 25 '23

I disagree with the notion that CPU design is electronics grads. That was true maybe when people were actually making their own chips but now there’s a layer of abstraction added by software like Quartus and the VHDL language that allows you to design that architecture without actually having to learn the electromechanics of chip making yourself. Every introductory computer organization class teaches this.

4

u/wot_dat_96 Sep 25 '23

You are right! But in ny experience, most fpga programmers i know started off as ece grads. While both streams can do both jobs, in my experience low level design has more ece grads than comp sci grads. I even have a non core friend working in verilog compilers, so its not like you need to be from either stream to actually do the job!

7

u/Scientific_Artist444 Sep 25 '23 edited Sep 25 '23

Yeah, you could write a VHDL/Verilog program and burn it into an FPGA., for example.

You don't need the physical description of logic gates using CMOS transistors, but you need a functional understanding of them.

3

u/MugiwaranoAK Sep 25 '23

Hi, can you suggest some resources where one can learn this? I'm fairly new and all I know is to build simple crud apps using react+node so I would really appreciate it if you can suggest some beginner friendly resources so I can learn from scratch.

3

u/wot_dat_96 Sep 25 '23 edited Sep 25 '23

Maybe ask someone better versed in these like people commenting above/below

27

u/Scientific_Artist444 Sep 24 '23

Firmware developers do, though I am not one

12

u/Lynx2161 Sep 24 '23

It is a very challenging role as you can brick hardware with a few errors

7

u/no_communicationn Sep 24 '23

What exactly is this domain called?

8

u/Scientific_Artist444 Sep 25 '23 edited Sep 25 '23

Embedded Systems/Computer Organization/Processor Design are some terms to search for.

Two types:

  1. Microprocessor/processor

  2. Microcontroller

The first one is used in general purpose computers. It started as microprocessor, but today we just call it processor. The second one is basically computer embedded into other devices. Most consumer electronics have microcontrollers. They are specific to the application, unlike general purpose processors.

Edit:

Forgot to add, SoC or System on Chip is a single IC containing multiple electronic systems. Mostly used in smartphones. This is the newest type of processor chip.

5

u/TanKraft Sep 25 '23

I think it's safe to say that PLDs are also part of this. Making them work is different from your conventional microcontroller but they are still used to build reconfigurable digital circuits and have wide variety of applications when it comes to controlling your systems.

I will also add that different domains adopted different technologies based on the requirements. For e.g. Model based development is still used widely in the automotive industry to build and control embedded systems. Here you need to learn tools like Matlab and simulink to simulate these models.

1

u/Scientific_Artist444 Sep 25 '23

Yes, CPLD's

PLD's can help with less complex circuits.

1

u/Interesting-Guava500 Sep 24 '23

What tech stack is used?

8

u/Scientific_Artist444 Sep 25 '23

No software stack, only processor architecture.

Low level programming requires the programmer to know the architecture of the device being programmed.

→ More replies (2)

4

u/unbrokenwreck Sep 25 '23

Average webdev

84

u/ImmortalTimeTraveler Sep 24 '23

I pretend to be a programmer.

But I work in Chip Design.

We code the Chip using RTL.

40

u/wot_dat_96 Sep 24 '23 edited Sep 24 '23

thats pretty cool! I feel domestic production of computer hardware is a very important field in which India is lagging behind very much. Even though a large number of engineers in intel / amd doing VLSI are of indian origin!

13

u/ImmortalTimeTraveler Sep 24 '23

It's the business strategy.

US will not allow other countries to have IP knowledge now, after seeing China steal their IP's balantly.

We don't get that good work here in India.

3

u/rsag19 Sep 24 '23

Hi. Can i dm you ?

1

u/ImmortalTimeTraveler Sep 24 '23

Sure,

If you don't mind, I can answer here on the thread any questions which will not dox me.

3

u/rsag19 Sep 25 '23

I also have interest in device driver and emulator side . Is it possible for me to get into this field knowing only C no other programming language. I don't have engg degree, can I still pursue it also I have not experience background in this field. So I am not sure

1

u/Street-Ad8272 Sep 25 '23

So you are a CS graduate or Electronics?? I learnt verilog in 3-4th sem. And after that I can't say I am a fan of RTL. But is the pay good and is it less populated than other fields in programming??

2

u/ImmortalTimeTraveler Sep 25 '23 edited Sep 26 '23

I am an Electronics graduate.

We did learn VHDL in college but the company training in Verilog was better and different. The approach I would say was to make us better designers and not get marks in exams.

RTL is too primitive for my taste too, but the problem solving part is what excites me. Language is just a tool at the end of the day.

I graduated around 5 Years back from a state level college and am making around redacted. If you shop around you can push it to redacted.

It's less crowded, more easy to get move companies if you have referrals.

Moreover there are very few RTL roles worth doing in India. Most are integration work, you get blocks from US of A and stitch them together.

1

u/someMLDude Sep 25 '23

That's impressive. We had verilog programming during my 3rd BTech, and we had to burn Verilog code into FPGA. It gave me trauma for the rest of the year

1

u/ImmortalTimeTraveler Sep 25 '23

We had VHDL and I hated how stupid the language was.

But with a good mentor, I realized how it plays into hardware and am not much inconvenienced by verilog.

1

u/Hexo_Micron Sep 25 '23

Arvind bhaiya ?

1

u/ImmortalTimeTraveler Sep 25 '23

You will never know.

1

u/Impossible_Shame_887 Sep 25 '23

Hello. Please check your DM. Thanks!

1

u/alphaBEE_1 Sep 24 '23

So technically you're a good actor 👀

8

u/ImmortalTimeTraveler Sep 24 '23

Yeah, it's fun to pretend to be a developer on this and programming humor and re purpose jokes for our office groups 😎

2

u/alphaBEE_1 Sep 24 '23

Not a dev yet but I too pretend to find humour in it👀.

0

u/lets_start_up Sep 24 '23

How do u become a chip designer ?

10

u/ImmortalTimeTraveler Sep 24 '23

Got hired by a service company and they trained us to become one.

We were trained on Processor Architecture, Digital Design Fundamentals, Verilog and a bunch of programming languages.

7

u/wot_dat_96 Sep 24 '23

A friend of mine writes the verilog compiler haha

2

u/lets_start_up Sep 25 '23

Cool, seems exciting.

0

u/[deleted] Jul 30 '25

63

u/[deleted] Sep 24 '23

I get to work on Git, the version control tool most developers use. I had contributed to the project during university via Google summer of code. But worked as a backend developer for 5 years after. Recently got an opportunity to work on it again full time. I still do some backend development 50% of the time, since we maintain a micro-service on top of Git in Go. But it has been super fun. Especially as my mentor back when I did GSoC is on my team now.

23

u/wot_dat_96 Sep 24 '23 edited Sep 24 '23

thats really cool! does linus still head the development for git? Heard he had to go anger management training after replying to aggressively too the contributors haha

14

u/[deleted] Sep 24 '23

No, it is headed by Junio since 2005 :D I have heard Linus jumps in once in a while, I haven't seen it though anytime recent.

14

u/DhrumilDave135 Sep 24 '23

I have this damn question in my mind. I can't even spend enough time on personal projects even after having a 2-day weekend, and only make shitty code. Then how come you all coding beasts take out time from your schedule, and do all this wizardry on open source projects. I understand that developers around the world can unite for great results, but doesn't that also mean a lot of chaos, so how do you solve problems amongst thousands of pros.

7

u/wot_dat_96 Sep 25 '23

Heres a hint! Go to the issues tab and search for the labels "help wanted" or "good first issue". I mean on github.

2

u/DhrumilDave135 Sep 25 '23

Yes I do check the different tabs on GitHub, I am just so amazed by the community making it this way far, I see lots of debate on subreddits and comment sections on other social media platforms about differing coding practices, but when it comes to people who actually work they cooperate well and create wonders.

4

u/wot_dat_96 Sep 25 '23

Yes that is true. But a lot of open source projects also have dedicated full time employees, so there is method to the chaos!

2

u/[deleted] Sep 25 '23

Well right now it's part of my job. So no personal time spent!

Regarding the chaos, while there is some chaos, with time, you form a community and you mostly know what to expect. One off contributions are there but not as common.

1

u/Unlikelyissue3873 Sep 27 '23

Planning for GSoC this year, in python domain.

1

u/[deleted] Sep 27 '23

Good luck 🤞

54

u/Unlikelyissue3873 Sep 24 '23

great initiative!

waiting for some badass careers like clash of clan developer or a person who work for 50 year old banking system written COBOL(this two sounds stupid but that is all it came into my mind).

what is mean by thread here? is it same like twitter one? I am reddit newbie.

23

u/wot_dat_96 Sep 24 '23

I used to work extensively with fortran on high performance computing systems. Its older than COBOL

5

u/CraigNatic Sep 25 '23

how old are you if you don't mind me asking ? You seem to have wizard level knowledge and wisdom.

7

u/wot_dat_96 Sep 25 '23

Late twenties. I worked in various different fields from the very first year of uni. You get the opportunity to work on a lot of different things in iits and i took advantage of that. While i do understand those kind of facilities arent available everywhere, engineers everywhere should atleast be aware of opportunities like this no matter their backgrounds, which was the point if this thread!

9

u/wellfuckit2 Sep 24 '23

Not clash of clan but built a similar Indian context game. Posting my comment in a while :)

1

u/Unlikelyissue3873 Sep 27 '23

hey buddy, what are you building?

I guess it is Razi

36

u/Life_Vast801 Sep 24 '23

Hey OP, I am final year undergrad and I am aiming for more or less the exact same job you have. Mind if I dm?

32

u/wot_dat_96 Sep 24 '23

Sure! To start off I already replied to a different post here.

there are different fields of security.

Hardware security: This is IMO the most difficult to get into. You will need knowledge of embedded electronics and instruments to measure / flush out data from chips. Very lucrative, but very challenging.

Web2 security: You can attend courses on cybersecurity. You can also study independently! Need knowledge of JS, Python and lots of frameworks used in stacks and their associated languages. Check out tryhackme or hackthebox. They have study material as well as playgrounds to check stuff out by yourself!

Web3 security: This field is quite new compared to the two others. Tech stack includes all the previous ones + solidity and frameworks for web3 projects. Check out CTFs like ethernauts!

I would always advice digging in and trying out some stuff before deciding if it is something you want to pursue. In the long term, you can only do the things which interests you.

1

u/[deleted] Sep 25 '23

Do you work at a company or as a freelancer?

1

u/wot_dat_96 Sep 25 '23

Contract basis with security organizations as well as freelancing

28

u/tech_HACKS Sep 24 '23

Embedded software dev with c and cpp All the iot works on it. Tho im just a freshman in this field. Looking for guidance from experienced ones from this field.

8

u/wot_dat_96 Sep 24 '23

Thats really cool! I worked for a while in robotics and that involved embedded systems. I never hear of these profiles in subs like these, but i have friends in these important roles! If you can maybe describe a bit more about what you do, I think there are plenty people here who would find that very interesting!

4

u/tech_HACKS Sep 24 '23

Im still in training phase so cant say much as of now

13

u/koch_potato Sep 24 '23

Hello fellow embedded developer!! I've primarily worked with EVs and automobiles in general. I would love to see some more embedded engineers here.

5

u/RIP_ON_patgiri Sep 25 '23

After browsing few subreddits, I found that people do not like Autosar. Do you also not like Autosar ? If so, why ?

→ More replies (2)

1

u/grand-illutionist Sep 25 '23

Hey, i am still a cllg undergrad, and i have very basic experience with iot. I made a card reader which was connected to a node server. I have always been amazed by EVs, and i also had a project in mind in this field. But what i lack is knowledge on how to do it. Could you share some resources on embedded software in EVs?

→ More replies (1)

18

u/SpartanOsirix Sep 24 '23

I build modern open source Compilers for Python and Fortran (yes, that old language) with an LLVM backend. Since we are compiled ahead of time, our python compiler is exponentially faster than the python you're used to. I believe we are a competitor to Mojo.

There are a lot of challenges, in both design and implementation, but it is very exciting work, and we have new things to work on everyday. We are a very small team scattered around the world. Nevertheless, its not the usual frontend/backend work and we also recently made the front page of Hackernews!

9

u/wot_dat_96 Sep 24 '23

LLVM engineers are always cool!

oh btw i used fortran for ~6 years. Still widely used today in HPC systems

1

u/ronniebasak Sep 25 '23

How do you deterministically compile python with 100% compile? What tradeoffs do you have to make because there is a lot of information that the compiler doesn't have at compile time. Also, is it gc? Asking for a project.

1

u/Unlikelyissue3873 Sep 27 '23

compilers people are so cool!!!

they write what we gonna use to write our apps.

17

u/wellfuckit2 Sep 24 '23 edited Sep 24 '23

I worked as a senior game dev for a year and a half. .

I was and am a generalist software developer in the enterprise/consumer web space. After a few years, wanted to explore what else I can do.

I was a developer with track record of working with diverse tech stack and picking up programming languages quickly whenever needed.

Reached out to a gaming studio. They gave me a few algoDS and system design questions in interviews and were mostly concerned because I would be working with C++ on their custom gaming engine. Not very different from unreal. I showed enthusiasm and asked them to take a chance with me telling them that I have learnt languages and tech stacks quickly and delivered in the past.

I joined one of their game teams(Mass multi player game like boom beach or clash of clans) it was a popular brand. I will not name it as it will doxx me. It was a small team.

My task for the first week was, play the game, get familiar with the existing defensive buildings and then implement a new defensive building.

-------Oversimplified Details of the task, skip if you don't program yet.------

So I got to work, I'd never worked on a large C++ code base. Never worked in the compilation environment. Got the code running on my machine and tried to figure out how the current code is organised. It was pretty neat. Everybody is taught OOPs, this is where I saw it's implementation the way it is talked in text books and classes.

So there is a base class for buildings that has health and position and size and sprite. Then there is a child class of defensive building, which has extra attributes if range and projectile type and attack preference and attack points.

My building would be the first implementation of a projectile type attack. Let's say an archery tower. So had to add the projectile and range fields and their related logic.

So make a class for my building. Create a new projectile class. Projectile along with other things will have a current position, and speed. speed is relative to framerate.

Now think of framerate. At 30 fps, your screen gets refreshed 30 times every second. This gaming engine, like other gaming engines would have sort of a refresh function for each class I talked about above. This function will be called at the FPS rate, so about 30 times in a second.

The logic of hitpoint and position would change in this logic at every run. E.g. project starts at 0th frame, every time refresh is called we would use the speed and the current position and a formula for projectile to calculate the new position and update it. That's how all moving units worked.

------ end of task details----

As I got the hang of it, my day would involve a lot of the below task types :

  • Writing code for the game logic, how a unit will move, what will it attack, etc. At first level it will just be a green block or any random graphic I would have on my local machine as placeholder

  • Writing code to implement graphics/sound provided by the art and the sound team. Working with the art and sound team to tell them what is possible engineering wise if something they shared doesnt fit in the game the way they envision it to be.

  • Writing code for the the user interface. The non game parts of the game, HUD, login, notifications, account management ( who has how many coins, showing their history of activity, managing their in game friends). Also writing the server logic for these and how the game will communicate with the server. Communication was a combination of HTTP and UDP.

  • Writing a lot of automated tests. Given how many units their are and how many different ways they can move or attack, and how fast we were making changes, their has to be robust way to know that the changes we made has not broken some thing else that was working earlier. Not possible to play the entire sequence ourselves all the time. So lots and lots of unit tests and integration tests.

  • Reviewing junior developer's code. Just like any other software engineering ensuring that we write code good enough to be extensible for future changes and readable and consistent throughout the codebase.

  • Planning out tasks for the team. (Sprint planning)

  • Working with the testing team, to see which bugs need to be prioritised first. Sometimes sit with them during their testing sessions or play the entire sequence ourselves to find things we might have missed. When you are working on a feature or a unit, you only play that unit over and over again. With that narrow focus you sometimes miss some changes in the big picture.

Stress and why I left the gaming industry:

Work was intense. During the release of the game or release of a new event in the game(The dates of these were fixed. E.g. if we wanted more users for a new feature, have to release on a Friday because more players play on a weekend or holiday) we would work through the night. Sometimes for multiple nights in a row. Eventually the game team was shut down and we were being asked to move to new games. And I thought it was the right time to decide if I want to stick around.

And I was working with the stalwarts of the industry. Some well known names. So it didn't feel like it was the team that was the problem. From stories I would hear from these people, It felt like it was almost the entire industry working like this. Although the learning was immense and It was a lot of fun, at this point I'd been working late nights and long hours for about 5 years now, I was burnt out and couldn't do it anymore.

Money was okay. Comparable to the bests in the industry. But I could also see a low ceiling for people who were senior to me, so didn't feel like it could be a long term career.

7

u/wot_dat_96 Sep 24 '23

I was a developer with track record of working with diverse tech stack and picking up programming languages quickly whenever needed.

That IMO is the best tool anyone can have in their skillset.

I remember when I dealt with my first adult sized codebase. Blew me out of the water after only dealing with programming assignments max 5 files large.

5

u/wellfuckit2 Sep 24 '23

Generalising even further. The best tool to have is to look at a codebase and figure out what is happening. Irrespective of the language and size. Learn to read code. Good, bad, commented, uncommented, learn how to quickly figure out what is happening. You won't always get clean good code to work on.

It is very easy to write a new piece of code. Making changes to an existing complex setup is tough. And as and when you grow senior, you will find very less instances of starting a project on a fresh slate. You will always have the burden of tech debts or legacy code as base to start from.

"Oh we know this is not the best way to do this, but someone 10 years ago wrote it, they left, it got complicated, but it works. So we don't rewrite it"

Or "This was written 10 years ago when these new patterns didn't exist. Now a lot of other pieces depend on it, so we don't change it"

→ More replies (1)

35

u/Impressive_Muffin_80 Sep 24 '23

I mean game development field/Industry has yet to explode in India like the US or European countries. I would like to pursue game development though I don't know if this field falls under computer science and engineering courses in colleges.

19

u/wot_dat_96 Sep 24 '23

Yes a lot of game dev does come under software dev. Unity / unreal etc game engine development involves a ton of programming, and even using those engines require tons o programming knowledge. There are also other non-technical roles like designing / script writing etc.

You don't need any specific courses to get in these fields. Just learn comp sci / programming. There are plenty of resources for free in udemy, coursera, youtube etc. At the end of the day, its how much you can get out of these resources. Remember, game developers arent trained in universities, they are trained in comp sci and decide to pursue game dev on their own.

1

u/Few-Trifle9160 Sep 25 '23

I'd like to know more on non technical roles..

0

u/[deleted] Sep 24 '23

2

u/DhrumilDave135 Sep 24 '23

"Never be married to your ideas" T_T me looking at my old code which was refactored multiple times but has a poor design. It's been a break for 2 years from that project but I wanna continue it as it's like my childhood dream, only one best friend I know appreciated it so much, but I became lazy about it soon. One question, should I start fresh with the same idea on a different language or platform (I don't use any GUI based game engines, only code) or try adding features until the game becomes playable?

1

u/Kimnggg Sep 25 '23

Can you throw some insights on compensation and opportunities vs the efforts, esp in India? Not the exact objective number. But just subjective opinion.

Recently saw a post in one of the subreddits (not this, either ExperiencedDevs or CScareerquestions) about Game Dev. The general opinion was it has long working hours with relatively lesser pay.

12

u/codetillsleep Sep 24 '23

I write file system drivers for open sourced operating system like FreeBSD. Since I am still a student I do systems programming mostly for fun.

8

u/wot_dat_96 Sep 25 '23 edited Sep 25 '23

Thats insane! College students contributing to such low level stuff?? Insane! Provable contributions like these count a lot more than personal projects in your resumes. Just be sure to write about it well and dont expect most recruiters to understand low level technical stuff. You will have a massive advantage when applying for companies like siemens, GE etc who work on hardware and low level software stuff.

Also go for gsoc if you can!

2

u/codetillsleep Sep 25 '23

I did worked on GSoC two years back with HaikuOS. The goal of the project was to port XFS file system driver from linux kernel to HaikuOS kernel.

After that I explored many more projects like webpositive (native web browser), ARM port, etc…

It would be really awesome if I could get a job revolving around systems engineering :)

5

u/Otherwise_Secret7343 Sep 25 '23

Any advice how can I start on the same, have wanted to do this for a long time but never figured out from where to start.

1

u/codetillsleep Sep 25 '23

I would say first choose an idea you want to work on, systems programming is really vast domain and its very easy to get lost.

Every kernel has different development tools, some supports builds natively (compiling kernel within kernel) while some also support cross compiling (building kernel on lets say macOS or linux), read about docs and setup your work environment. My first contributions were fixing issues that occurred while compiling kernel on MacOS.

When I started working in file system drivers I read a lot about its theory first like what it is, concepts like Inodes, journaling etc… After that I began exploring linux kernel source code as inspiration.

It might be possible that there are no resources at all, like when I was trying to understand how to port a programming language like Golang to their unsupported kernel there are no resources, all I had is to ask official Go developers on how to do that and look how they support language on linux kernel (particularly what syscalls they use). Its more that 4 months and I still haven’t made any progress on this project so you definitely need a lots of patience as well.

Of course very good knowledge of C/C++ is pre-requisite.

Do let me know if anyone has more questions.

→ More replies (3)

1

u/Sinakers Jan 19 '24

Hi, I'm a 1st year engineering student. I am really interested in systems programming, but I simply don't know where to start. I am currently learning C (it is a part of my first year course) and I know its importance as the language in which the Linux kernel is written. I sometimes look at source code of the kernel, though I can neither make head nor tail of it. At this point, should I just master C before venturing out into systems programming, or can I learn both side by side?

1

u/kedarkhand Jan 28 '24

Could you suggest some resources how I could get into it?

9

u/Lord_Poseidon26 Sep 24 '23

Want to work as a Developer relations/ advocate. Maybe as a consultant or on payroll . The amkunt of ignorance in corporate about development is huge. wanna clarify that

10

u/wot_dat_96 Sep 24 '23

Devrel requires visibility. You need to grow your social media accounts. Twitter works quite well for the tech fields. Linkedin is a bit of a meme

1

u/metastimulus Sep 25 '23 edited Sep 25 '23

you should start creating demonstrable experience, like writing samples on Quora/LinkedIn/Substack/wherever. Choose a niche and write at least 10 articles on it.

Edit: this may be a good place to start, a "howto manual" for explaining complex topics for people who are unaware of just how much complexity exists :

https://www.reddit.com/r/ExperiencedDevs/comments/16r4k1b/how_do_you_go_about_conveying_the_complexity_of/

8

u/Scales_of_Injustice Sep 25 '23

My dream job was to be a Quant Developer, or at least a Quant Researcher.

A Quant dev is a programmer who develop mathematical algorithms for trading, and codes to implement trading strategies. Usually employed by investment banks and portfolio managers. I don't know the possible CTC in India, but it's a very high paying field, albeit dependant on commissions/results (think salesmen).

I came very close to getting hired for such a role, but didn't get it in the end. Will try again after 3 years developing NPU drivers.

4

u/wot_dat_96 Sep 25 '23

I have a lot of ex classmates working as quants. Unfortunately most quant firms look for iit grads. Its the same deal overseas as well, where large hedge funds look mostly for ivy league grads. All my quant friends talk about how their interns are also only from iits/bits. I dont really know about quants from other colleges, but maybe someone else can give their input if they see this thread!

1

u/metastimulus Sep 25 '23

Are there international quant positions that hire Indians remotely?

Can you give an outline of tools or skills that are necessary for succeeding as a quant?

2

u/metastimulus Sep 25 '23

here's what i got from an LLM:

Here are some tips on how to get started as a quant researcher:

Education

- Pursue an advanced degree in a quantitative field like Mathematics, Statistics, Computer Science, Physics or Financial Engineering. A PhD is often preferred.

- Take courses in machine learning, data mining, econometrics, time series analysis, etc. These are important skills.

- If you don't have a quantitative background, consider a specialized Master's program in financial engineering or computational finance.

Knowledge

- Develop a solid understanding of financial markets, instruments, pricing models, statistics, data analysis and programming.

- Read academic papers, books and publications related to quantitative finance to stay up-to-date on research advances.

- Learn a programming language like R, Python, C++ or MatLab. This is key for implementing models.

Experience

- Do internships at banks, hedge funds or fintech firms to get experience in the industry.

- Work as a research assistant on quantitative projects during your studies.

- Complete a post-doc position at a quantitative asset management firm or university research lab.

- Consider taking on a junior quant role first to learn the ropes before moving into a research role.

Networking

- Connect with professionals in the industry by attending conferences and events.

- Get involved with groups like the International Association of Quantitative Finance (IAQF).

- Connect with quant researchers at firms you're interested in to learn about their work.

By focusing on these areas, you can gain the necessary skills and experience to break into a career in quantitative research. It takes dedication but can be very rewarding.

6

u/anu2097 Sep 24 '23

I do wanna talk about such stuff. When I got laid off, I tried my hands with some unconventional problems for me such as in Computer Vision.

Like Face detection in videos. Open source models exist in photos. They are pretty fast too. In videos its a challenging problem.

I would love to collaborate with folks on this.

5

u/wot_dat_96 Sep 24 '23

you probably already checked out the openCV library. You can look for roles in robotics! Lots of companies are venturing into mapping with drones. It involves SLAM (simultaneous localization and mapping) + computer vision to stitch together images and make 3D maps. Sprinkle in some linear algebra and filtering algorithms and you will be a beast in this field!

1

u/anu2097 Sep 24 '23

I'm starting out with something simple. Like identifying people in videos using realtime Face recognition and identification. Since for that I can get my hands on huge data easily.

I need to get in touch with these companies some how. Alone I can only work some small POCs.

→ More replies (1)

6

u/kawaiibeans101 Sep 24 '23

I am the most basic software developer , don't exactly have a focus as such but I feel the work I get to do is interesting.

Currently working with an analytics company and our biggest job is to figure out eCommerce website platforms ( like Shopify etc ) and provide tracking of data.

This basically helps shop owners understand their ad performances and how be more optimised. There's already tools like Facebook pixels and Google tag manager that do the same , but they can't get 100% of the data. What our work is to get that 100%!

My day to day mostly looks like figuring out anamolies and cases where we might be missing data and generally increasing the quality! You can say it's web development but maybe 1% of my job is writing APIs!

Before this I worked with a company which was building a figma to react/webflow AI code converter tool! There I worked on figuring out how to convert some figma designs metadata into actual editable working code ( both in figma and in webflow ).

My favourite language would be rust but I'm slowly going over to go! Fun fact: we had a python api that was intiially generating the react code , and it was hella slow ( 1.5 mins ) and we had rewritten the same into rust and that was around 900% performance increase ( gone down to ~8 seconds ) .

Again the title and domain you can say is just Software Development , but I feel the projects make it exciting as the possibilities are endless!

4

u/wot_dat_96 Sep 24 '23

Thats really cool! may I know your reason for preferring GO over Rust? Is it more performant or is it only for quality of life / ease of programming reasons?

4

u/kawaiibeans101 Sep 24 '23

Honestly , go simply because it makes a lot of the things a lot simple which might be a lot harder in rust.

I feel, which took me a while to come to terms with it , is that with go you have to jump less hoops to get to where you are with rust. But then again I feel rust makes it really hard to code things which you do not understand. It's a given that whatever you do has to be very explicit and unless you understand the things you are doing it'll be hard to get a working piece of software out of it.

Funny enough , go has it's own quirks , which we ended up learning after a little mishap. One of them is go is too simple, ie it's easier to make a mistake that you don't understand.

I'd love to dive down. We had a service in go whose only work was to recieve some data , get some iplocstion data from an external api , batch that data and put them back into a sqs. So as usual we had a few goroutines and channels consuming off of goroutines to make that work. It worked fine and logic was sound , no issues, until we scaled to ~100+ requests/second.

Issue was , in processing stage somehow some parts of the data was getting messed . Say , if input had a string abcd , and another input had a string efgh . Sometimes these two would get intermixed and one would have efcd, and another was cdgh . Weird right? Scary too.

We did stress testing , changing the behaviour and logging to try to make sense of it. Until finally we realised that hey , this is a big memory bug , how can it just change in flight? Something like this would be very hard with rust simply because of the ownership model. But for go it was hard to spot and even harder to figure out.

After a solid week of debugging by engineers of 1 yoe to 10 yoe , we came to the conclusion we have to rewrite it and just remove the batching logic ( channels and async stuff interfering ).

Funny enough I was messing around with the service as it was my project and we used fiber , and it's promise of zero allocations always irked me . It almost felt like somehow someone else owns the memory and is messing with it . So after diving down I found out that for performance, gofiber sets all the request bodies as mutable implicitly ( which isn't super advertised ) . And once we flicked that switch and made all incoming request bodies to be immutable , the issue vanished . That day I respected rust a lot because of its paradigm of being very explicit.

This isn't exactly a golang bug but I feel but is something that's easy to commit given the implicit nature of it. You don't care much about the resources you work with when you use golang , it's powerful but it's truly a double edged sword.

→ More replies (2)

5

u/[deleted] Sep 25 '23

I just started my career as a firmware developer. It's fun. I wish to get into embedded security in the near future. I did an internship with a secure device company in my fourth year, where I learnt stuff like fault injection techniques and side channel analysis on these small devices. It really opened a different perspective on things to keep in mind, while writing code. Since OP is a security researcher, I would like your opinion on this field as a career. I was thinking of getting a higher degree in hardware security, but do you think just hardware security is pretty limited in scope? Apart from that I love tinkering with microcontrollers, FPGAs and whatnot. I'm loving the make in India scene in the country. While the jobs are not as lucrative as the CS counterparts as a fresher, I really believe there will be some really cool stuff coming out of India in the next few years, especially in deep tech

3

u/wot_dat_96 Sep 25 '23

I dont think its limited in scope! The thing is, in web 2/3 security, most hackers are in security organizations. But in hardware security, most hackers are employed by the hardware manufacturing companies themselves. So you will most likely always have to be employed by a hardware company.

But there are plenty hardware companies that have deep pockets to invest into security. At some point or the other you will probably have to move to the us. I know of a hardware hacker in intel doing really cool stuff and they sent him from the indian office to the us because he was so good there was no one left who could supervise him anymore xd

153

u/harshcasper Sep 24 '23 edited Sep 25 '23

Hi — I work at a company that builds AWS emulators for local development & testing. Imagine running various cloud services on your laptops without having to create an account on AWS, sharing your credit card details, and leaving a few AWS resources (like EC2 instances or EKS clusters) running that automatically bills you a crazy amount of money.

With our AWS emulators, students can learn more about cloud by running these services locally, while professionals can improve their development & testing experience, since they don't have to wait for staging deployments for minutes (and even hours!) and can experience everything happening on their local machine end-to-end.

How the engineers work here is pretty unconventional — Though there are frontend, backend engineers, most of our team works on building emulators and making them performant enough for our purpose. To accomplish this, we implement multiple hacks and methodologies that are pretty state-of-art, and adds a new dimension to the cloud developer experience. Its also like re-inventing AWS for the ground up, with the entire focus on building the best local developer experience for end users.

The package is excellent, and how I got the job was pretty unconventional as well — I was looking out for jobs on Saturday, and discovered the project through GitHub. I decided to send an email to them, and after 3-4 days, the CTO replied to me. I was called in for an interview with the CTO and the Tech Lead, and I got the verbal offer the next day. Since I was still in college and had an upcoming internship at HackerRank, I took up part-time contract role before switching to full-time after my graduation.

The job is pretty exciting — We usually find ourselves in the AWS docs rabbit hole where we have to figure out internals of AWS services and how to replicate the same workflow inside a container lifecycle. This led us to construct interesting pieces — To emulate EC2, we built out a Docker backend that spins up Docker containers which acts as EC2 instances (allowing you full SSH capabilities). As a fun side project, we re-wrote the entire DynamoDB engine in Rust.

I also led the integration of secret scanning in our project. Imagine someone leaking their emulator API keys in a public repository. It would take just a few seconds on our side to send those customers an email informing that their API key was leaked accidentally and it has been rotated. It adds to the customer delight pretty often. I do public speaking & advocacy and more recently would be going to DockerCon next week (live in Los Angeles) to speak about a Docker extension we built (with over 10K+ installs).

→ More replies (16)

141

u/Traditional_Beast Sep 24 '23

Finally a good post on this sub, I almost forgot it was this sub and not the international one, good one OP

20

u/monkey-d-blackbeard Sep 24 '23

Yep. I am in a conventional web dev job and was thinking this sub is nothing except discussing LPAs. Good job OP.

85

u/asherman19 Sep 24 '23

Not me but my friend's brother is cyber forensic analyst at Kerala Police cyberdome.when a cyberattck happens they dive into the digital aftermath and uncovering how the breach happened, who's behind it, and how to prevent future attacks. he says that its like solving a high-stakes digital mystery and their work can make a huge difference in protecting our online privacy.

18

u/sharkpeid Sep 25 '23

Bro anyway to share what was his path example apart from basic cybersecurity certifications

→ More replies (4)

33

u/[deleted] Sep 24 '23

Handsdown, one of the most informative threads in this sub

19

u/Saurabh09bot Sep 24 '23

Ok so my first job was AR/VR Software Tester and Simulation Developer for a AR/VR Simulation Company.

VR Testing: I used the Oculus Headset to existing and new features of the software along with the new simulations.

Simulation Developer: After a few months I mastered the companies BLOCK CODE platform which they developed to create these simulation, It was relatively easy to use if you can apply a little logic. ( no coding )

Verdict: It was really a fun cool, remote job with foreign clients expose and I really used to like it.

If you would like to find similar jobs, here are some keywords to start searching.

  • ar/vr content developer

  • ar/vr content creator

  • simulation tester

  • simulation creator

  • application engineer

→ More replies (3)

20

u/Arkoprabho Sep 24 '23

Im in DevOps and platform engineering. Fancy words for basically building and automating the cloud resources. We build the backbone of our apps and services. Cloud costs?? Who cares?! The business will offset it

→ More replies (4)

26

u/TheMelon0905 Sep 24 '23 edited Sep 24 '23

I'm a protocol developer working for a telecommunications company building the 5G RAN protocol stack.

It's not an especially mentally challenging task coding wise, like I have to solve problems on leetcode/hackerrank on weekends to stay in touch with DSA in case any opportunity comes by, but it has given me the opportunity to gain a deep insight into distributed systems, low level networking concepts and system design, along with more than what you would call a working proficiency in Linux.

Package is good, with decent hybrid model that's pretty much opt in except for the days we do chaos testing and release days. Good benefits too.

There are a lot of moving things in the field though, so if you're testing a particular scenario and it fails you could be looking at having to investigate a potential setup issue (like your interfaces not being linked correctly), an issue with the code (you'll have to look at the logs for that), an issue with some modules which are essentially black boxes (built by different in house teams so we can't touch their code, we can only raise an issue if we see one that is persisting). So the debugging is what is rewarding.

Also, for any network to be considered 5G, it has to follow the specs released by 3gpp. These specifications contain details about theoretical maximum speed, actual maximum speed, user density, environmental impact, and so on. So we build control and data paths that adhere to those specs and add extensibility wherever any particular client might need it. So it's a research oriented job as well.

My typical day involves around 10-15% meeting time, 20% coding, 40% debugging and the rest goes into research and mentoring new joinees/interns.

Plus it's pretty cool that what I'm developing will be used by hundreds of millions of users, but I guess that's with any scaled technology.

→ More replies (17)