Computer programming thread

This is the polite off topic forum. If you’re looking to talk smack and spew nonsense, keep moving along.

Moderators: mgil, chromoly

Post Reply
User avatar
hsilman
✓ Registered User
Posts: 2842
Joined: Fri Sep 15, 2017 8:31 am
Age: 39

Re: Computer programming thread

#681

Post by hsilman » Thu May 19, 2022 6:46 am

JimRiley wrote: Wed May 18, 2022 11:00 pm Congratulations on the job, @hsilman! I hope it works out awesomely for you.

Just a general comment on internships. Especially for entry-level positions, when it comes down to engineering managers deciding who to interview, internships can make the difference between your resume landing in the big pile or the little pile.
Thanks, me too! It's tough to leave my current job. I've been working at this nonprofit for almost 9 years, and really enjoy what I'm doing now. But I can't turn down the opportunity to advance financially and work remotely so we can move our family in the future.

And I'm 100% with you on the internships. Such a different experience for my peers who were able to do that! I was just trying to encourage @Anaphase that none of it is NECESSARY to land a good job. But I wish I could have done one, I'm sure the first 6+ months of work is going to be very intimidating/humbling since I have zero professional experience.

User avatar
mgil
Shitpostmaster General
Posts: 8483
Joined: Wed Sep 13, 2017 5:46 pm
Location: FlabLab©®
Age: 49

Re: Computer programming thread

#682

Post by mgil » Thu May 19, 2022 6:57 pm

Huge congratulations @hsilman!

JimRiley
Registered User
Posts: 1282
Joined: Sat Sep 23, 2017 11:51 am
Location: <x(t), y(t), z(t), t>
Age: 69

Re: Computer programming thread

#683

Post by JimRiley » Fri May 20, 2022 1:30 pm

hsilman wrote: Thu May 19, 2022 6:46 am I've been working at this nonprofit for almost 9 years, and really enjoy what I'm doing now.
By coincidence, I also spent a number of years working for organizations that were nonprofits, though they weren't meant to be!

FredM
Registered User
Posts: 728
Joined: Wed Jul 18, 2018 9:17 am
Age: 36

Re: Computer programming thread

#684

Post by FredM » Fri May 20, 2022 6:25 pm

Anaphase wrote: Wed Mar 16, 2022 3:18 pm Mathematics is absolutely kicking my ass. Do you even stand a chance at being anything than a low skilled code monkey (at best) if you aren't a "math" person? I've invested so much time into this degree it feels like I have nothing left lol
I was really effing good at math. I was done with Calc 3 before college. In my senior year of HS I took Senior (college) level Quantum Mechanics with the Math Olympiad champion, the Math Counts champion, and a girl that was smarter than both of them but didn't compete. I got an A-.

The only reason it helped me be a better programmer was because I was motivated to learn math to the point I studied over the summer to skip courses. The studying over the summer thing (teaching yourself something) is essential to being a successful dev.

I've been a principal engineer, VP of Engineering, and currently Enterprise Architect. I've also been kicked out of an interview for not swriting a binary search implementation on the spot fast enough. I've also been asked calculus questions in interviews which I answered then walked out in disgust.

Math is slightly more useful than algorithms in real software development. Which is to say -- it's basically useless. I wouldn't sweat it. I've met as many great devs that studied something completely non-technical (music, business, history) as devs from STEM fields. And honestly, only 3 great devs that actually studied CS lol. I got a job offer from a startup last year for almost $200k where the other people in my role were all from the same bootcamp and a couple of them didn't even have college degrees. The smartest dev I've ever met was a former college math professor who is still struggling to make half that (he doesn't really care about money and refuses to learn anything outside PHP, but still).

FredM
Registered User
Posts: 728
Joined: Wed Jul 18, 2018 9:17 am
Age: 36

Re: Computer programming thread

#685

Post by FredM » Fri May 20, 2022 6:37 pm

RedFinn wrote: Sun Mar 20, 2022 10:03 am Well, I guess it depends on what you mean by tutorials. I watch YouTube videos about how to use this tool or that tool, like a Django or PostgreSQL. I am doing a lot of research before writing any code because one of my biggest concerns is selecting the wrong tools for the job and having to start over.

The main thing I don't want to do is work on some project that seems completely orthogonal to the things I'm actually interested in. I understand the notion of beginning with simpler things - it's not necessarily wrong. But if I have a large amount of motivation to work on X, then ignoring that in order to work on Y is at least a little bit questionable.
I smell an engineer. This is entirely the wrong way to approach software.

Pick something. Literally almost anything (not Flutter). Build it. As quickly as possible. It will be ugly. It will probably suck. But it will take you about the same time as you've spent doing research and provide you with approximately infinitely more value.

Python + Postgres is probably "the best" choice, especially as an engineer.

If you're a pure math guy, Elixir and Postgres might be more enjoyable and intuitive to you.

If you want to force yourself to learn core software concepts because you're trying to turn this into a career, I'd consider Xamarin/C#.

I've done a lot in all of those (and so many others) and I've never found a problem that I couldn't solve because I chose the wrong tech stack. That isn't really a thing. Although I did get so frustrated with Java in my first CS job that I rewrote my entire inherited 100k lines of code project in ~1k lines of Perl and refused to ever write Java again (although I did have to write some for an Android app once -- and I once again entertained thoughts of quitting this profession).

dw
Registered User
Posts: 1503
Joined: Wed Jun 17, 2020 1:35 pm

Re: Computer programming thread

#686

Post by dw » Fri May 20, 2022 8:27 pm

JimRiley wrote: Fri May 20, 2022 1:30 pm
hsilman wrote: Thu May 19, 2022 6:46 am I've been working at this nonprofit for almost 9 years, and really enjoy what I'm doing now.
By coincidence, I also spent a number of years working for organizations that were nonprofits, though they weren't meant to be!
This could make for some good resume fodder:

"I have worked to ensure the nonprofitable status of several companies."

User avatar
EggMcMuffin
Registered User
Posts: 574
Joined: Mon Apr 20, 2020 9:32 pm
Age: 28

Re: Computer programming thread

#687

Post by EggMcMuffin » Sat May 21, 2022 9:03 pm

FredM wrote: Fri May 20, 2022 6:25 pm
Anaphase wrote: Wed Mar 16, 2022 3:18 pm Mathematics is absolutely kicking my ass. Do you even stand a chance at being anything than a low skilled code monkey (at best) if you aren't a "math" person? I've invested so much time into this degree it feels like I have nothing left lol
I was really effing good at math. I was done with Calc 3 before college. In my senior year of HS I took Senior (college) level Quantum Mechanics with the Math Olympiad champion, the Math Counts champion, and a girl that was smarter than both of them but didn't compete. I got an A-.

The only reason it helped me be a better programmer was because I was motivated to learn math to the point I studied over the summer to skip courses. The studying over the summer thing (teaching yourself something) is essential to being a successful dev.

I've been a principal engineer, VP of Engineering, and currently Enterprise Architect. I've also been kicked out of an interview for not swriting a binary search implementation on the spot fast enough. I've also been asked calculus questions in interviews which I answered then walked out in disgust.

Math is slightly more useful than algorithms in real software development. Which is to say -- it's basically useless. I wouldn't sweat it. I've met as many great devs that studied something completely non-technical (music, business, history) as devs from STEM fields. And honestly, only 3 great devs that actually studied CS lol. I got a job offer from a startup last year for almost $200k where the other people in my role were all from the same bootcamp and a couple of them didn't even have college degrees. The smartest dev I've ever met was a former college math professor who is still struggling to make half that (he doesn't really care about money and refuses to learn anything outside PHP, but still).

What are exactly the realities of software dev anyway? I live in the Bay Area so pretty much everyone that isn't a service sector serf like me is in tech, but the people that I have met who were engineers are one point are always pretty vague about what the job is like.

JimRiley
Registered User
Posts: 1282
Joined: Sat Sep 23, 2017 11:51 am
Location: <x(t), y(t), z(t), t>
Age: 69

Re: Computer programming thread

#688

Post by JimRiley » Sat May 21, 2022 11:34 pm

Anaphase wrote: Sat May 21, 2022 9:03 pm What are exactly the realities of software dev anyway? I live in the Bay Area so pretty much everyone that isn't a service sector serf like me is in tech, but the people that I have met who were engineers are one point are always pretty vague about what the job is like.
My impressions are below - excessively long, but to paraphrase Twain, I didn't have time to make it short. Also, it's all based on my experience from 1979 to 2003, but I would bet a whole lot of it still applies.

As an entry-level developer, you may or may not be writing brand-new code. If you are, that'll probably occupy most of your time, and most of your interactions will be with other software engineers. If you aren't writing brand-new code, you'll probably be adding features and fixing bugs in code that others have already written. Bug fixing (aka maintenance) really runs the gamut in difficulty, but it seems like almost every software project has at least one crazily convoluted module, written by some departed person, that everyone dreads digging into, and naturally "let's assign it to the new person" is a popular choice. Anyway, when you're fixing bugs you typically need to interface with non-developers, particularly the test group (there'd better be one!) and tech support.

In any event, you'll spend time on some things that you may not have encountered in coursework; for example, source control, which is the process for ensuring that changes are made in an orderly manner and that the current build, the latest known good build, every previously released build, etc. can always be recreated. Source control may or may not take up a lot of your time, but the processes have to be followed to the letter in order to avoid embarrassing miscues like clobbering someone else's source code changes.

Depending on the size and structure of the organization, you may have more than one boss. A classic arrangement is that you officially report to the manager of a functional group (like, say, applications programming), but at any given time you take your day-to-day direction from the project leader for whatever app or system you're working on. If those people are good at their jobs they'll try to avoid giving you conflicting assignments, but shit happens, and it's really important to speak up - preferably in a tactful and objective way - when it does.

Most likely, no one will be terribly concerned about what time you show up and what time you leave, unless there's some critical meeting. (Hopefully you won't be working for some maniac who'll call a 1 a.m. all-hands!) You may not even be expected to show up in person most days. What will matter, a lot, is your productivity - especially whether you get things done on time - and the quality of what you produce. Speaking of quality, if you're working in a "mature" organization, there may be code reviews; otherwise your work will probably be judged after the fact by how many bugs it has and, eventually, how easy it is for others to understand and modify.

You'll probably be asked to estimate how long your tasks will take, and there's an art to that. If your first reaction is "5 minutes", because you can see in your mind's eye exactly what code you'll need to write, and you know you can type it in 5 minutes, remember you have to also allow time to check out the source file(s) from the source control system, make your edits (including comments!), get it to compile, do a build, test it, debug it (you'll almost always have to fix or rethink something), check your changes back into the source control system (and resolve any conflicts that may have arisen if another developer is working on the same code), and possibly write up test cases for the software testing group. So you can't let bravado enter into your time estimates. On the other hand, there will usually be pressure to release software by some predetermined date, so it's rarely possible to make your life cushy by being generous with your time estimates.

Speaking of which, unless you have the incredibly good fortune of working in an environment with no deadlines, it will almost inevitably arise that you provide a thoughtful and well-reasoned estimate that a task will take, say, two weeks, and then your boss (or one of your bosses) comes back and says "we need it in one week". The best response, provided you understand the task really well and strongly believe in your original estimate, is to explain what compromises will have to be made in order to complete the task in the shorter time frame: perhaps one or more features can be left out, perhaps a simpler algorithm that sacrifices some performance can be used, perhaps you can work extra hours... Whoa, what? Yes, if you're a salaried employee, which is likely, you may be expected to just suck it up and put in the time. If you're lucky, compensatory time off ("comp time") may be available, but make sure you know the rules in that case. Of course, beating time estimates can have benefits down the road, such as being seen as a good team player, a highly productive developer, etc., which can translate to bigger raises and faster advancement. If the project is critically important, it may even help boost the success of the company and be one of those rising tides that float all boats. And some people feel amply rewarded simply by being part of a team that gives it everything they've got to build something totally cool.

Oh, and you'll receive more and more email as time goes by, and will have to defend against its tendency to soak up more and more of your time. You'll need to keep your messages short and pithy, the sad reality being that even in a professional setting most people simply won't read more than one paragraph lorem ipsum dolor lorem ipsum dolor lorem ipsum dolor lorem ipsum dolor

FredM
Registered User
Posts: 728
Joined: Wed Jul 18, 2018 9:17 am
Age: 36

Re: Computer programming thread

#689

Post by FredM » Sun May 22, 2022 7:24 pm

Anaphase wrote: Sat May 21, 2022 9:03 pm
What are exactly the realities of software dev anyway? I live in the Bay Area so pretty much everyone that isn't a service sector serf like me is in tech, but the people that I have met who were engineers are one point are always pretty vague about what the job is like.
@JimRiley 's post is pretty accurate except the last sentence which I read first because 90% of emails can be understood from the first and last sentence.

But I'll summarize.

You'll spend a lot of time on google and stackoverflow. The memes about this are fairly accurate. The reason is because the field and libraries in most languages change so frequently that you're far better off googling how to do something than trying to read the source code documentation or reinvent the functionality -- because as Jim mentioned you have a deadline and your product owner and their bosses don't give a flying f how you solved the problem they just want it solved yesterday. Which isn't to say you can just do whatever. Because ain't nobody gonna approve your technical debt sprint so you better do a pretty decent job the first time so when you add features or fix bugs in your original code you don't get fired for taking 2x as long for a smaller feature than the first one.

Software dev is very similar to computer science in that the best devs can decompose complex problems into small, easy to solve ones. The difference is, unless you work at Nvidia, you're not going to be decomposing complex mathematical equations into easy to understand (but still pretty complex) algorithms. Your job will be to decompose a fairly complex problem into small enough chunks that you can google the answer. The problem is complex because the business is complex.

As you get more and more senior, as Jim touched on, you'll need new skills for getting accurate requirements out of business users who will lie to you about their domain and understanding of it. You'll need to learn how to talk to all the parties with skin in the game, and somehow design a system that (mostly) satisfies all of their competing concerns -- which will also change before you even deploy to dev. So you'll need to learn how to design and write code that is easy to change but still reliable. Eventually you'll get far enough along where your job is measuring (estimating) how much change each group of users will likely require and how frequent it will be, and designing and coding your software with the proper isolation and trade offs to match those estimates -- but still easy enough to redesign and change when your'e estimates are inevitably wrong.

Hopefully you'll spend a lot of time writing unit tests that verify the accuracy of your software. But you probably won't be. Despite what they told you in the interview.

User avatar
Skander
Registered User
Posts: 1419
Joined: Sun Mar 04, 2018 4:02 pm

Re: Computer programming thread

#690

Post by Skander » Sun May 22, 2022 7:35 pm

Anaphase wrote: Sat May 21, 2022 9:03 pm
What are exactly the realities of software dev anyway? I live in the Bay Area so pretty much everyone that isn't a service sector serf like me is in tech, but the people that I have met who were engineers are one point are always pretty vague about what the job is like.
The answers so far here have been good, but you should consider networking with real people, especially in your area who have jobs you're interested in and do informational interviews (basically what you just did here). You'll learn more about different kinds of jobs and find what interests you most. It also has the added value of building your network, and may get you a referral, which can get you past the earliest phase of the HR weedout funnel. That can benefit the people you're talking to also if you get hired, since they might get a referral bonus. At my current company these go from $5-10k- the latter if it's a senior software developer position.

The secret to informational interviews is that most people are happy to talk about themselves at length. If you don't have any personal links, like friends who graduated before you, etc, ask a professor or similar for a referral. Attend alumni events, etc.

A useful piece of advice I've also heard several times is to try to get another name out of each interview. "Who else could I talk to?"

JonA
Registered User
Posts: 2138
Joined: Fri Sep 29, 2017 7:00 am
Age: 48

Re: Computer programming thread

#691

Post by JonA » Tue May 24, 2022 4:16 pm

The only thing I'd add to the "what's it like as a developer" is that programming is very much a trade skill that is used in pretty much every industry. It can be very different depending on what you are building, who you are building it for, where you are building it, why you are building it and how you are building it.

If you are developing embedded firmware for a car, you will have a very different experience than someone who is building automation/integration software for a health care conglomerate. You'll have different tools, different skill sets, different release cycles, different team structures, the whole gamut.

You might even see all of that in the same company. I spent a number of years writing software for an IoT company. There were something like 150 engineers on staff and every team had hugely different experiences working there. There were people writing Android apps, IOS apps, firmware for hubs, firmware for IoT devices, TV firmware, people writing services for AWS that made it all work together, people that wrote software for devops (managing deployment and release cycles, performance monitoring, tracing, etc), people writing automated test suites, people writing software to analyze tracking data and data flows. People writing software that _used_ the platform to integrate with 3rd party apps and devices.

About the only thing the teams had in common was that everybody knocked off at beer-thirty and played Super Smash Bros on the big screen in the dev area and complained about the lack of new local craft brewed IPAs.

User avatar
hsilman
✓ Registered User
Posts: 2842
Joined: Fri Sep 15, 2017 8:31 am
Age: 39

Re: Computer programming thread

#692

Post by hsilman » Tue Jun 07, 2022 3:54 pm

Just finished my second day as a full time dev.

Image

JimRiley
Registered User
Posts: 1282
Joined: Sat Sep 23, 2017 11:51 am
Location: <x(t), y(t), z(t), t>
Age: 69

Re: Computer programming thread

#693

Post by JimRiley » Wed Jun 08, 2022 7:22 pm

hsilman wrote: Tue Jun 07, 2022 3:54 pm Just finished my second day as a full time dev.

Image
Answer emails...

User avatar
EggMcMuffin
Registered User
Posts: 574
Joined: Mon Apr 20, 2020 9:32 pm
Age: 28

Re: Computer programming thread

#694

Post by EggMcMuffin » Mon Jun 20, 2022 3:03 pm

Found out about this webdev thing that is free and is basically a curriculum for becoming a full stack web developer. Need to start on it, I'm sick of not having real income.

Feeling discouraged all the time though. I'm getting old.

Post Reply