Q&A about software engineering

 Posted by on August 23, 2012  General  Add comments
Aug 232012
 

This morning I got an e-mail from a 10th grade student asking me some questions about software engineering for a school assignment. I found his questions to be well-posed and thoughtful, so I figured I’d post my responses as a blog post. I’ll be sending this post to Jordan, so if anyone has additional comments or advice for the kid, please feel free to leave some wisdom in the comments!

Hello. My name is Jordan *******, and I’m a sophomore at ******* High School in Indiana. While browsing around Google, I saw your resume for being a software engineer. This intrigued me because I love to mess around with computers, mostly on the software level. I’ve been programming websites in PHP/JavaScript/HTML for about a year now, and more recently (approximately 6 months ago) began writing a video game with some friends using C#, JavaScript, and even a little C++. It’s been an enjoyable project. The real reason I’m contacting you though is this term for school we were assigned to research a field of engineering. I happily chose to research software engineering, and am seeking information from professionals like yourself to enhance my report. Attached to this email is a Word document with several questions about software engineering that I was hoping you could answer. I would greatly appreciate if you could email me back within the next week, because your answers would not only help my report, but also be very interesting.

Q: Describe the duties and responsibilities of someone working in software engineering.

It really depends on your title — ultimately the job is about building great software for whomever is paying you. There are different roles however: you have developers and project managers / lead developers. I perform the duties of both. As a developer, I spend a lot of time simply writing code, fixing bugs, etc. As a project lead, I also have developers working under me and it is up to me to make sure they are on-task, not getting stuck, making sufficient progress, etc.

Q: What is your specialty in software engineering?

My specialty is PHP and back-end web development, however my day-to-day projects involve a wide range of languages and tools.

Q: What are some of the projects you’ve worked on?

Check out my Github account, most of my projects are open source! https://github.com/EvanDotPro

Also my day job is, at the time of writing this, building and managing http://www.southwestmedical.com/ and http://www.quickie-wheelchairs.com/.

Q: Do you have assignments that seem to drag on forever, or are they usually pretty quick?

Yep! it seems that most projects are never truly complete. For example, I’ve been working on SouthwestMedical.com since 2008 — we’re currently working on a new version of the site to add a ton of new features that we’ve wanted for a long time. There are some rare, quick projects, but I usually find myself involved in larger, more complicated projects.

Q: How much of your time is spent on the computer?

A LOT! At least 8 hours a day, usually much more. I try to stay involved in hobbies off of the computer as well — e.g., I fly remote control helicopters and airplanes.

Q: Does your job deal mainly with people, data or things?

As a project lead, I deal with my developers and boss on a daily basis. However most of my time is spent writing code and mentoring my developers.

Q: Are there any specific tools or equipment required for your job?

A computer, of course. Me and my team use Fedora Linux on our computers with Nginx, PHP-FPM, and MySQL. We use Vim for editing code, as it’s much more efficient than your typical IDE like Eclipse or Netbeans once you are proficient with it.

Q: What are the advantages of this occupation?

My job is my hobby — so it really never feels like work! That’s by far the best part. Also, flexible hours, relaxed working conditions, etc.

Q: What are the disadvantages?

There are some annoyances you can run into as a software engineer: requirements changing mid-project, unrealistic deadlines, being held to deadlines despite being assigned other distracting side-projects in the meantime. These are pretty common, and I’ve learned to just not let them bother me anymore. There may be some companies where this isn’t an issue, but I’ve experienced it everywhere I’ve worked. At two of my jobs in particular, there were sales teams that would deliberately sell features of software that me and my team haven’t even finished or started working on yet. Stuff like that can make the job somewhat stressful at times.

Q: How about advancement opportunities?

It really varies by employer — generally there’s always room to advance from a junior to a senior level software engineer, and if you like managing people, eventually project manager / lead developer. I run a business on the side, and the developer I have working for me started as a junior developer working for me while we were both still in high school — he’s now graduated from college and I recently made him my partner / co-owner of the company due to all of his hard work and loyalty over the years. How’s that for advancement opportunities?

Q: So do most people work for themselves, private industry, or the government?

It’s mixed. There are a lot of developers / software engineers that are also entrepreneurs. For example, in addition to my day job, I also run my own business, http://www.mediatechdesigns.com/ and http://www.smscloud.com/.

Q: Does where you live make a difference in your salary?

Absolutely! It’s pretty much proportionate to cost-of-living from what I’ve seen. Typically, you’ll get paid much more as an engineer in more expensive locations such as San Francisco (silicon valley) or New York.

Q: Is there overtime pay?

If you’re paid hourly, yes. If you’re on salary, unfortunately not. Some employers will give bonuses for completing projects, etc. It really depends on the employer though.

Q: How many hours do you work per week?

Minimum 40, with deadlines and also running my own company on the side, I’ve been known to work well over 80 hours in a week. It usually doesn’t bother me if I’m working on a fun project, though!

Q: What about vacations?

As a software engineer, you’ll definitely get vacation time from pretty much any employer (if not, find a better employer!). In the last couple of years I’ve traveled to Switzerland and gone sailing in the Virgin Islands with my girlfriend!

Q: Is there further education offered where you work?

Not formally, but I’m sure if I asked, I’d be accommodated. My employer has paid for me to travel to conferences in the past.

Q: Do you have to travel?

I don’t have to but I do choose to travel and speak at conferences. For example in October, I’m flying to Manchester, UK to give a live tutorial on the new Zend Framework 2 at the PHPNW conference.

Later in October, I’m also flying to Santa Clara, CA to give another tutorial and also give a talk about the new module manager I wrote for Zend Framework 2 at ZendCon.

Q: What are the retirement benefits?

Most employers offer a standard 401k package. Some start-ups offer very, very competitive benefits packages that would blow standard employers packages out of the water. Protip: If your employer offers 401k contribution matching, at least take advantage of however much they offer to match! It’s free money!

Q: In what kind of environment is the work done? Indoors? Outdoors?

Typically indoors, but on occasion, I’ve been known to go sit outside of Starbucks or go to the park with my laptop on a nice day and work there.

Working at Starbucks with Chloe

Q: Is it possible to work at home (like if you’re sick)?

Absolutely! Many software engineers work from home all of the time, even when they’re not sick! I only go into the office once per week for a meeting.

Q: Were there any tests or licenses you had to get before you became an engineer?

Nope — what’s key is having code available online to prove your abilities. Use websites like GitHub to showcase your projects and code, and show off your GitHub profile on your resume and during interviews. I do have two certifications, ZF ZCE and PHP 5.3 ZCE, but I don’t believe those to be nearly as beneficial to my career as my practical experience, open source contributions, and available work online.

Q: What is your most satisfying experience so far?

One of the more rewarding things I’ve done is building the replacement wheelchair parts system on SouthwestMedical.com.

Prior to me building this, it was incredibly difficult for those in wheelchairs to find a way to purchase the simple little parts on wheelchairs that might break: bearings, hinges, footrests, etc. They’d have to get a huge parts manual from the manufacturer, find the part number in the huge cryptic book, then call around local wheelchair repair shops trying to find one willing to sell them the part (many will only do it if the customer also pays to have the part installed, and some people don’t live anywhere near a wheelchair repair shop at all). We get e-mails all of the time complimenting us, saying how great the parts system is and how it’s helped them so much, etc. The best thing was, I wasn’t even asked to build this — I just identified the need and asked my employer if he’d let me try building something new to help solve the problem. It’s turned out to be the most successful part of our website, and parts sales now account for large portion of our online revenue!

Q: Is this what you thought you were going to do in high school?

Yep — I was already doing it!

Q: What degree did you get in college?

No degree — I strongly believe software engineers should prove their abilities with code, not just a piece of paper. In my experience, >90% of companies agree with this mentality. I’ve had job offers from companies like GoDaddy, Panasonic, PayPal, etc. My lack of a formal degree has never once been a hinderance. That said, I also don’t discourage anyone from getting a degree. It certainly doesn’t hurt, a degree should only serve as a supplement to practical experience, not as your sole qualification.

Q: How long have you work in your profession?

I’ve been programming since I was about 12, and I got my first job when I was 14. It was originally an internship but after the first week they put me on payroll because I was already teaching them stuff and substantially helping them with a large project.

Q: Do you have any advice for someone looking to go into software engineering?

Keep learning! Never, ever, ever stop learning. Always look for new, more efficient solutions to your problems. My rule of thumb is that every year you should be able to look back at your code from the previous year and it should look terrible. This is a very good sign that you’re learning and becoming a better software engineer. Also, find an open source project and contribute to it. Contributing to open source projects helps you on several levels: the peer review involved will help you become a better developer, and at the same time, your contributions will serve as a great addition to your resume and talking point during job interviews.

Q: That’s about it. Is there anything you want to add?

Keep learning new stuff and don’t let yourself get bored with it. Have fun, don’t be afraid to try new things and challenge yourself. Also remember that as long as your job is your hobby, you’ll never have to work a day in your life.

  11 Responses to “Q&A about software engineering”

  1. Q: Describe the duties and responsibilities of someone working in software engineering.

    To expound upon Evan’s answer, responsibilities can even vary based on the work environment. In a large company, you can expect to have people with a wide range of different skills on your team: systems analysts and administrators, project managers (who may themselves know very little about programming), junior and senior developers, quality assurance and control specialists, and others.

    The job of the developer in this case is to turn a specification created by an analyst into code. The junior developers will do a lot of the coding and will often take on simpler (though no less time-consuming) tasks, whereas the senior developers are typically responsible for program design, management, and coordination. Senior developers still do a fair amount of coding, especially when it comes to the more technically challenging aspects of a project, but much of their time is spent on what I’d call meta-programming tasks.

    Q: What are the advantages of this occupation?

    If you enjoy programming, thinking critically, and solving problems, you will never get bored.

    Additionally, software engineers enjoy a fair amount of job security. Technology is always going to keep moving forward, and so the demand for software developers will always be high. If you’re good at what you do, everyone will want you.

    Q: What are the disadvantages?

    Evan really hit it on the head here. Often when working with clients, you will find that your client doesn’t really understand the amount of work that goes into a software platform. Because of this, they will tend to undervalue your work. You will always have clients who want to dictate their own billing terms because something didn’t “seem” like it should take so long.

    Learn the value of your work early so that you don’t end up promising a client free updates to their website for life. After all, when you get a haircut, you’re not entitled to free updates when your hair grows out!

    Q: What degree did you get in college?

    That being said, a college degree can help to round your knowledge in ways that you are not likely to encounter on your own. A typical bachelor’s degree in computer science (or a related field) will give you knowledge of many different programming languages, a background in several programming paradigms, a better understanding of languages through the study of CPU architecture and language design, etc.

    There are many times that something I learned in college has helped me on a project. Depending on the type of programming you want to do, a degree (or many, many years of experience) may be necessary. If you want to do web development, a degree is not a necessity, though it can help you land that first job (if you don’t go down the freelance route). If you want to do video game programming or systems programming, you’re going to have a hard time finding that first job without a degree.

    Q: Is there overtime pay?

    If you are paid hourly, you are eligible for overtime. In a small company, you may be paid hourly, but it is not the most common case. In most cases, software developers are salaried and because of the nature of their duties, exempt from overtime under the Fair Labor Standards Act. However, many salaried employees receive an annual performance-based bonus (or perhaps smaller bonuses upon project completion as an incentive).

  2. Hello, I’m Jordan, the one who originally asked these questions. Might I just say, those responses were beyond anything I could have expected; they were exceptionally detailed and informative. I love to program, even though I’m working on many small software projects while balancing a full course load, extra-curricular activities, etc., and can sometimes become quite busy. My only worry, however, was that when writing software and programs transformed from being a hobby to being a career, coding might become less enjoyable. However, after reading what you, Mr. Coury, wrote, not only has that fear completely been extinguished, but my desire to become a software engineer has been reaffirmed. I know that it will be hard work, but the satisfaction you get when you finally get something to work is an amazing feeling, and worth even an 80-hour work week. I know I still have 3 years of high school left, but after reading your answers I feel very confident in the fact that software engineering is the career for me. Thank you for going above and beyond in these answering questions for me, a complete stranger, for no incentive other than to help out an eager, young programmer. One day I hope to repay you for your kindness, but for now, I will simply say “thank you” once more. Best of Luck in All Your Endeavors, Jordan

  3. In addition, Mr. Youngblood’s responses were stimulating and very much appreciated. Thanks for adding your thoughts and further motivating me.

  4. Not only am i proud about you being behind the ZF2 and also the honesty behind all the questions especially the one on the Certifications.

  5. Actually, it’s “for whomever.” You see, in that context, “whomever” is the indirect object of “building.” :)

  6. Hello. My name is Emily I’m a junior at a High School in IL. And well I had to interview someone who works in an engineering field that interests me the most. So I decided software engineer and I wanted to interview you but since most of the questions I was going to ask you are already answer. I wanted to ask you if I could please use this as a source to show to my teacher because I have being looking up people to interview but I can’t find anyone. Once again please and thank you.

    • Hi Emily,

      Absolutely — you can certainly use this post as a source for your assignment. If you have any further questions that aren’t answered above, feel free to ask.

  7. Which is more important the

    prouduct or the process?

  8. I am very impressed with the information presented here. I do believe that every developer/programmer should have side projects. It should not be about making them rich either! If you do something you love, it should not be a problem. Because the programmer is employed, there will be a need to hire a virtual assistant to assist with the administrative tasks of the side project. Some VAs are very knowledgeable in software and programming technology. One website that software developers can hire VAs is VAnow.net. It is one of best that I know has certified, skilled VAs.

  9. I’m 13 years old and I want to be a software developer or software engenieer I hve been looking for a way to start studying other than school and I hve made it to grade 10 so how can I begin

 Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre user="" computer="" color="" escaped="">