Software Engineering

magaman

Kingfisher
Orthodox Inquirer
Any software engineers here in RVF? I'm starting a 4-year program for software engineering soon, my employer has a program that pays 100% for education so I'm utilizing that to get a university education online. Does anyone have any tips for someone starting the program or just general experiences in the field? I may not stop at just a bachelor's degree either, I want to pursue a master's degree too, depending on my situation at that point but for that I'll have to pay for it myself or maybe get a scholarship/grants etc
 

Thomas More

Crow
Protestant
I am a programmer. When I was in school, it seemed like all the projects we did were relatively small, and we did everything on Unix/Linux.

However, in a work situation, you always end up working on very large projects, with 100s of code files. I never really had the chance to work on projects like this in school, and have always felt the curriculum should expose students to this.

Also most of my work has been on Windows computers, with the code done in Visual Studio. I never used this at all in my classes. I always edited on a simple text editor, and compiled from the command line. The debugging capabilities and the ability to search for function names in an Integrated Development Environment (IDE) are very powerful.

I will say that in time, I reached a situation where I was overly used to working in Windows and Visual Studio, and was not familiar with working in Linux. It's best to be able to do both. On Linux, you can work primarily with text editors and command line compile and debug tools, or you can use IDEs like Eclipse or QT Creator. These are a lot like Visual Studio, and I like to use them, but sometimes you will have projects where you have to operate in a command line work chain.

As part of this, I've found I had a lot to learn about using "make" to compile code in Linux. The makefile defines all the libraries that are included, and can be very complicated. This is all handled automatically in Visual Studio, so when I had to learn how to use "make", it was a pretty steep learning curve. I would be sure to know how to use make to compile big projects.

Closely related to this is the use of various libraries. In Linux, you constantly have to include different third party libraries. This is very handy because these libraries provide functionality you need. However, each has its own headaches in getting them to work with your code. You want to be familiar with how to deal with this.

I think if you make sure to learn these things, you will be able to be productive in a work situation.

Edit: I would also learn how to work with distributed systems that run on multiple computers. Whether this is an enterprise scale web based system with servers and databases and front end apps, or mobile device code, or electro mechanical control systems, it is very common now to have systems that consist of multiple separate compute nodes. Finally, I would learn to use scripting languages in addition to compiled code.
 
Last edited:

budoslavic

Eagle
Orthodox
Gold Member
(I'm a former software engineer back in the late 90's for two years who switched to web development when internet popularity grew.)

1. Learn C-sharp/C++ programming if you are interested in developing software. Java is another programming language to learn as a fallback.

2. Learn how to use Linux for commands, programming, etc.

Most companies spend a lot of money on Microsoft-based products: Windows operating systems, Azure, MS Office, MS Visual Studio, etc. A lot of companies are using Linux to set up their own servers.

You will want to be versatile and knowledgeable in both Linux & Windows.

3. My little brother works for an employer that builds software from scratch - i.e., C-sharp programming to build software without using MS Visual Studio; they built their own Linux system from scratch.

4. Learn how to be self-taught by learning new stuff because technology tends to be fast paced and dynamic.
 
Last edited:

josemiguel

Woodpecker
Orthodox
There are multiple ways you can go with the skills you learn, from full-stack to datawarehouse to Business intelligence. I've been doing the last two. I'm more of a stats guy who can engineer than an engineer that can stat.
 

planomustang

Sparrow
Agnostic
I am a retired SW Engineer. 30 years at it, mostly with Raytheon, but I spent 5 years in the telecom world, around 2000.

SW Engineering is more than coding. I was pretty much done writing code, after just 15 years. I became a lead SW engineer, which involves much more than writing code. Schedule/cost estimates, team management, risk management, etc. That may sound like I became a manager, but I really was practicing large scale SW Engineering. I still had to understand the latest tools and trends, being used by developers.

I could write a book on my experiences, which range from dev/deployment of production real-time control systems to R&D development of a scheduling algorithm, written in Haskell (got a patent for that).

PM me, if you want to talk.
 

cosine

Kingfisher
Good on you for making the leap. I think it's a mentally taxing field to learn, to enter, but then you have so much demand for your skills.

I entered Data Science instead, which would be the synthesis between programming and statistics. Before DS, I was working as a financial analyst, so it seemed like a more adjacent career switch. It wasn't hard to rebuild my resume highlighting the statistical skills and the data-gathering skills.

Currently the demand for Data Engineers (Software Engineers focused on data warehousing, data lakes, data ingestion, etc) seems insane, whereas the market has oversupplied the demand for entry level Data Scientists in particular.

Another sub-category is Machine Learning Engineers. They are effectively SWE's with a focus on deploying machine learning models; aka the people who actually deploy, automate and maintain the data science models. I think MLE's are in massive demand, but that seems like a very layered set of skills that take a while to develop.

I work remotely and can live in a small mountain town but have a salary higher than most other residents. It really affords a great life.
 

inthefade

Kingfisher
Orthodox Inquirer
I've been a software engineer for a very large software company for 9 years since I graduated.

Is this a computer science degree program or something different?
 

KiwiInBudapest

Robin
Protestant
Wished I went into SWE.

If I was in that industry I would take several remote jobs where I just outsourced all the programming my bosses gave me and give it to some dudes in Bangladesh who got to do all the work for 10% something of my salary and then I'd go chill out on the beach.
 

Cynllo

Ostrich
Orthodox Inquirer
I agree with Cosine, if you want to maximise earning potential, focus on databases. There are very few people who have much of an idea what they are doing with databases. Large companies have people who just write SQL queries and keep it all working very smooth. It's also difficult to get consultancy/brief input on the topic. Last year I spent around a week writing one SQL query, which probably could have been written and tweaked by an expert in a hour or so. I also don't think it's that difficult to learn. It's just that the documentation, expertise and skills are sparse. So you need to learn by working with someone else and trial and error.

Beyond that I think the best advice is to get yourself around people who know their stuff. Sponge off them. It would be better to start on a low salary with good programmers, as opposed on a higher one with dinosaurs. Learning may be a bit taxing on the brain and thinking it's too much. I overcame this by one day doing something far out of my noob's skill-set. I found out how to do everything I needed and after that I had my confidence.

Other threads (there are others):



 

Parmesan

Kingfisher
Other Christian
Employer paying 100% of your undergrad education for 4 years? This sounds too good to be true? Are you sure you understand what you are getting into, and not taking out student loans?

Why waste potentially 6+ years getting all these degrees and supporting leftist universities with professors that haven’t worked in the real world? Nobody cares about your degree unless it’s from an elite university. Depending how focused you are, you could teach yourself enough to enter the workforce in 1-2 years. Every employer is so different, spending any more time than you have to in academia or self study is going to be a crapshoot. Just get a job ASAP and get paid to learn and build your resume. I would do some reasearch and find the best combination of books and online courses that fit your style. Start off learning command line Linux, C programming, Python, JavaScript, and SQL. Seems like cloud services and containers are becoming a must have as well. Build projects to get a Github going and put on a resume. If you need structure, possibly look into a more rigorous bootcamp to get the foundation going.

With that said, I’m not sure I would recommend software to just anybody. It’s an increasingly saturated field and the bar to entry is always increasing. Several years ago you could get a job straight out of a 10 week bootcamp learning JavaScript, but that is not the case anymore. It’s not just about “learn to code,” it’s dozens of other skills and accrued knowledge, and you are competing with autists that eat, sleep, and breathe this stuff.

It is a comfortable career in that it gives you a lot of mobility, and with 3-5 years of experience, your leverage begins to shift in your favor in the job market (assuming you are working on a modern stack). The problem is, too many people act is if it is some backdoor to a 6 figure career in your pajamas. Some of the advice on here telling you which tech to get into is misguided in my opinion. Some of these things will be very frustrating and boring if you aren’t “into” them so to speak. For example, I would love working and problem solving in Python every day, but I’d have a massive headache working on a SQL database all day. Fine here and there, but sounds miserable day in and day out. It’s easy to say you could do it for the right amount of money, but unless you work for an incompetent company, you’ll eventually get exposed or out competed.
 

magaman

Kingfisher
Orthodox Inquirer
What city do you live in? Plan to live in? Programming languages used tend to be different depending on the market (Microsoft or Oracle)
I live in south Texas so the nearest big tech hub would be Austin. After that would be Dallas so I wouldn't have to move out of state to find a job unless I just really wanted to for whatever reason.
 

Sevomoz

Pigeon
Catholic
I'm a web developer. If you're new to developing I would drill the fundamentals with simple algorithms or code exercises. You should get a good handle on loops, functions, variables, arrays, objects and if JavaScript, array methods and object methods.

Some examples to start on are to reverse a string, convert temperatures from Fahrenheit to Celsius, fizzbuzz. That should get you started. I collected some 50 exercises and drilled them over and over. I still go back and revise them.
 

josemiguel

Woodpecker
Orthodox
Currently the demand for Data Engineers (Software Engineers focused on data warehousing, data lakes, data ingestion, etc) seems insane, whereas the market has oversupplied the demand for entry level Data Scientists in particular.
Can confirm. I was in BI development, saw all my peers move towards Data Science, so I did the opposite and pivoted to Datawarehouse. You don't want to go where everyone else is going, you want to go to what everyone else is going to depends on.

Likewise what is hot now will not be hot in a few years, so always skillup in something else and be ready to pivot. My career was QA Engineer to Backend Engineer to Data Engineer to BI Dev to Datawarehouse based on what was needed. I'll be doing BI and Data engineering for my company that I have equity in and hopefully move into management of Data & BI as we grow.
If I was in that industry I would take several remote jobs where I just outsourced all the programming my bosses gave me and give it to some dudes in Bangladesh who got to do all the work for 10% something of my salary and then I'd go chill out on the beach.
The Bangledeshis that can do the work will charge a whole lot more than you expect. No one will pay you full price for crappy unsupportable unreadable code with little documentation.
Large companies have people who just write SQL queries and keep it all working very smooth. It's also difficult to get consultancy/brief input on the topic
Very true, this is even true in the small firm I'm at as one of two SQL guys.
It would be better to start on a low salary with good programmers, as opposed on a higher one with dinosaurs
Did this and second it, my 33% paycut lead to a doubling in salary and a chunk of equity.
For example, I would love working and problem solving in Python every day, but I’d have a massive headache working on a SQL database all day.
Both of those I love, web development I despise.
I live in south Texas so the nearest big tech hub would be Austin.
Ping me when you're looking for work, the CTO is a cradle Orthodox. Orthodox teammates get vacation in accordance with the Orthodox calendar.
 

planomustang

Sparrow
Agnostic
I'm a web developer. If you're new to developing I would drill the fundamentals with simple algorithms or code exercises. You should get a good handle on loops, functions, variables, arrays, objects and if JavaScript, array methods and object methods.

Some examples to start on are to reverse a string, convert temperatures from Fahrenheit to Celsius, fizzbuzz. That should get you started. I collected some 50 exercises and drilled them over and over. I still go back and revise them.

I don't want to be condescending, because we need front-end/webpage developers, but the OP asked about SW Engineering. Your examples really don't apply to SWE. SWE is a bigger job than coding, whether it is front/back/full stack. See my post above.

I was very successful at SWE, but I had some advantages. BS in Comp. Science. MS in Mathematics. I taught Mathematics, at the college level, for four years. That MS was important. I could go into a business domain, which I knew nothing about, then figure it out well enough to design/develop the SW systems needed. That ranged from Digital Signal Processing (FFT), real time controls, Scheduling algorithms (NP Hard or NP-incomplete), to predicting potato harvests around Thanksgiving, Christmas, and the Super Bowl. That last one may sound strange, but Lay's Potato Chips uses Satellite imagery to predict potato harvests, just before those events.

If you want to be just a coder, that codes to the UseCase/Specs created by someone else, then just learn languages/stacks/devTools. Then have at it. Let someone else worry about Source Control, Testing, Product Releases, etc. Eventually, you will have to learn those last things, but you can do it on somebodies dime.

To be honest, I have a hard time recommending SW Dev or SW Eng to young people. I have seen too much, in thirty years, to believe those are paths to long-term job satisfaction or job security. COTS is crap, and integrating COTS is a nightmare. Have you ever had to manage the changing dependencies? How about managing the security risks.

But here is where I say, "Smart young men should avoid the SWE, at all costs!" The tech industry has been taken over by Diversity/Inclusion/Equity (I.e DIE)

For much of my career, I spent time as an interviewer of prospective engineers. I am pretty good at sorting the chafe from the wheat. In the last 10 years, at Raytheon, I watched HR being taken over by Black Women and Gays. I gave good interviews to even the most uninformed, just to see if I could teach them something.

My favorite tactic was to ask if you can have a memory leak, in a Java application. Many would just assume the GC would take care of that. Then I ask, when would GC fail? Most times, they had no answer. Then I point out something obvious. If A references B, and B references A, would GC collect those objects? Assuming nothing else reference A or B, then the answer no. I have done this test many times. If I see a light go on in their head, then they are teachable. So they are hireable. If the light stays off, send them away.

Back to avoiding DIE industries. At Raytheon, HR was taken over by black women and gay men. DIE was heavily enforced, but they did not have sway of a Male Like ME. My job was to get the best recruits and to protect my engineering teams from getting loser engineers. I pretty much succeeded. Firing a DIE hire was nearly impossible.

My best win was with a female graduate. She had a degree in CS, with a minor in Women's Studies. She failed the basic Java GC question, and I wrote her off. The black HR woman went berserk. SHE HAS A DEGREE IN WOMEN'S STUDIES! WE NEED HER! YOU HAVE TO RECOMMEND HER! I just laughed, and said this "She is an incompetent, and I am not going to poison an engineering team, with her presence. I won.

That was all nearly five years ago. Folks like me are leaving the industry, as fast as we can. Who knows what it is like, now?
 

Parmesan

Kingfisher
Other Christian
That was all nearly five years ago. Folks like me are leaving the industry, as fast as we can. Who knows what it is like, now?
That’s true in any field with any type of corporate HR though. I’d recommend any young man to learn entrepreneurial skills. Start a business. Own a productive asset, run it, lease it, etc. Pick up a skill and monetize it. Drop out of high school and figure this stuff out ASAP, don’t waste time.
 
Top