How do I become a hardcore/professional software engineer?

A place to discuss the implementation and style of computer programs.

Moderators: phlip, Moderators General, Prelates

jacques01
Posts: 42
Joined: Thu Oct 08, 2015 4:56 am UTC

How do I become a hardcore/professional software engineer?

Postby jacques01 » Tue Apr 12, 2016 9:53 pm UTC

A large part of what I do for a living is program and write code. These include command line scripts for researchers/developers, web services, APIs, frontends / web apps, developing algorithms, etc.

A co-worker of mine noted to me today that while I'm smart, I'm not a true software engineer. He said this because he was perplexed by my knowledge/understanding when discussing software development. This is true--I'm more of a research programmer if anything. Of course from other co-workers who aren't really software engineers, they think of me as a software engineer.

How do I "become" a "professional" / "hardcore" software developer/engineer both in the eyes of my engineering peers and also in general?

BedderDanu
Posts: 39
Joined: Tue Jan 14, 2014 6:18 am UTC

Re: How do I become a hardcore/professional software engineer?

Postby BedderDanu » Tue Apr 12, 2016 10:50 pm UTC

While I'm not one myself, I've often heard that as a rule of thumb, the difference is working on a piece of software too complicated to understand by any one person.

Writing a script, or even a small program, entirely yourself and being able to look at any one part and go "I know exactly how everything works" means that a lot of the principles in play for software engineering simply don't apply at the same strength. A lot of things about standards and naming conventions to project planning and code reviews exist to help multiple people work on overlapping parts of a giant monstrosity that no one fully understands. It's those tools and those ideas that create the engineer, not the pieces of code itself.

Again, speaking as a non-expert, the answer would be to work on a piece of software with a team of people in some capacity. A hobby project making your own videogame, some contribution to open source software, or something where you need to develop the team-working skills.

User avatar
You, sir, name?
Posts: 6971
Joined: Sun Apr 22, 2007 10:07 am UTC
Location: Chako Paul City
Contact:

Re: How do I become a hardcore/professional software engineer?

Postby You, sir, name? » Wed Apr 13, 2016 12:07 pm UTC

This comes with experience. I think the far easiest way is to get a job somewhere they do dedicated software development and just soak it in. I don't think it's something you can read about. Maybe work on open source if quitting your job isn't on the table.

Before I started working professionally with code, I had done it mostly alone on a hobby basis for a good 10 years of my life. I was very experienced writing and debugging code, yet whenever I tried to build something larger than say 10,000 lines of code, it would eventually collapse under its own weight as I simply didn't understand how to build big applications.

Then I got a job in a software development firm and was exposed to practical software development in a code base that is tens of millions of lines big. Now, if I set out to write something big, it no longer falls apart. My code is much more structured and my solutions scale much better (with lines of code).
I edit my posts a lot and sometimes the words wrong order words appear in sentences get messed up.

User avatar
3fj
Posts: 1715
Joined: Wed Jun 11, 2008 1:13 pm UTC
Location: Land of Whisky and Bagpipes (LOWAB)
Contact:

Re: How do I become a hardcore/professional software engineer?

Postby 3fj » Thu Apr 14, 2016 2:05 pm UTC

It boils down to lots of things, and while I think YSN is right in that the fastest way to learn coding standards and software principles is to poke and prod at somewhere with a large codebase, I'd argue it's not impossible to learn the basics.

What I suspect your friend was talking about when they labelled you as not a "true" software engineer, they were probably remarking at one of the following things newer folk tend not to be so good at:

  • Data Structures and their appropriate usage - There's more than likely a "<language> Data Structures and Algorithms", pick a favourite language and have a read.
  • Data patterns, particularly MVC - The Gang of Four is the bible here, but it's dusty as hell. For starters, have a look at the Model-View-Controller pattern, as it's the generally agreed upon gold-standard of code separation.
  • SOLID design principles - These are usually illustrated with simple example programs, a little bit harder to evaluate in practice if you don't have experience.
  • Unnecessarily tightly coupled code - Look into what "Inversion of Control" is, why it's necessary and the tools that help you achieve this.
  • Being as you're talking about APIs and web apps, knowing a bit about RESTful web service design might be good too.

By no means exhaustive.
You could try asking the co-worker if they have advice for you in general. If they don't, they're just being an elitist asshole.

We all start at a junior level not knowing these things, and it literally comes from a year or two of being dropped in situations where someone says "We use <X> because it solves <Y> problem", you nod along and then run off to quietly google both Y and X. Advancement comes from a willingness to learn and the people around you pointing in the right direction.
Everything's dead until it's alive. Man will exist, and then he will die. Just take the ride!

User avatar
roflwaffle
Posts: 350
Joined: Wed Jul 01, 2009 6:25 am UTC

Re: How do I become a hardcore/professional software engineer?

Postby roflwaffle » Fri Apr 22, 2016 8:14 pm UTC

It's a subjective label, like most, but at work it seems to be associated with a "full-stack" engineer who can work "OK" at scale. Having said that, what's "full-stack" and "OK" is mostly related to the work environment. Someone who is full-stack at the g00gz may not have the interpersonal KSAs to do well in a smaller company working through vague business needs that are always changing, and someone from that smaller company may not have the technical KSAs to do well at the g00gz.

IMO, I'd say that well-rounded full stack is someone enough experience in design patterns, data structures, data quality, analytics, project management, and interpersonal communications to build a suitable product at scale. Deficits in any of those will likely lead to problems with the project later. With that said, I haven't met anyone who is well rounded in all of those areas (then again I've only worked in IT for about 5 years at small'ish organizations), so it's more of an ideal than an expectation.

User avatar
thoughtfully
Posts: 2243
Joined: Thu Nov 01, 2007 12:25 am UTC
Location: Minneapolis, MN
Contact:

Re: How do I become a hardcore/professional software engineer?

Postby thoughtfully » Mon May 02, 2016 3:20 pm UTC

This is a useful guide to becoming a programmer, but it sounds like you may have some of that covered.
http://www.catb.org/esr/faqs/hacker-howto.html

I am also something of a "research programmer". I don't get involved in the research or academics of what I'm coding, but I do most of my coding for these folk. What separates this sort of work from "software engineering" is mostly process, I believe. Yes, you should learn those techniques mentioned, but if you are a conscientious coder, you have probably exposed yourself already to many of them. The "engineering" aspects that might have eluded you are things like version control, test driven design, and working in teams. I still haven't fully grokked branching and merging, but it isn't hard to get used to regular commits and changelogs.

The whole idea of engineering, in any field, is largely a problem of getting processes right. Let me make a distinction: "Little-E" engineering is simply building stuff, which includes software. "Big-E" engineering is about creating a reliable, easy to use deliverable that has low, or at least predictable, maintenance costs. This generally involves lots of testing and documentation.

Software Engineering in this sense takes more time and resources. Whether these are warranted in any particular case is something you will have to sort out with your employer.
Image
Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.
-- Antoine de Saint-Exupery

AffinityDesigner
Posts: 10
Joined: Thu Apr 28, 2016 3:40 pm UTC

Re: How do I become a hardcore/professional software engineer?

Postby AffinityDesigner » Tue May 10, 2016 3:21 pm UTC

Why does it matter what other people think and the "titles" that they give? If you are enjoying what you do and are good at it and keep learning along the way, then why does it matter what people call you? I would say an actual degree in software engineering would be the case, but I have friends who did a degree in software engineering and are now doing work that isn't completely related. So does that mean they aren't software engineers? It's all relative.

At the end of the day, do what works for you and do it well, what other people say is irrelevant. If people use design templates instead of coding and developing a website from scratch, does that mean they can't do web design or aren't a "web designer"? If not, why and why does it matter? At the end of the day they still have a great website working exactly the way that they want it to and usually really quickly. And what's wrong with that?

So if you create software that works well and does exactly what you need it to do, why does it matter whether you are a "software engineer" or not?

Titles, details.....all is a matter of perception.


Return to “Coding”

Who is online

Users browsing this forum: No registered users and 8 guests