java.lang.OutOfMemoryError: GC overhead limit exceeded

Interview with Scott Pio on Programming

13. March 2009 03:30 by Scott in   //  Tags: , , , , , ,   //   Comments (20)

I was interviewed a while back for a paper about software engineers from Stephen.  He gave me several questions and I tried to answer them to the best of by abilities at that time.

1. What do you enjoy about your job?

My job is a little different than most Programming jobs, because I do it for the government.  I work on a special specific project that contribute to national security and even international security.  The fact that as a government contractor you have to take a large amount of security measures to make sure your software doesn’t break in front of the customer during mission capable times is something to be stressed over.  Most software these days can have several hundreds of “known” bugs, but when your a government contractor, you need to make sure your software is vetted with no “known” bugs or problems.  Testing in this environment can be large while writing the actual software it self can be small.  The problem has to be thought through before one line of code is written.  There is a famous quote that goes “80% mental, 20% execution” and programming is no different.  You don’t want to have to rewrite your code so a lot of mental thought has to go into it.

On a side note, my almost favorite thing to do is experiment.  Most programmers are required to push out a certain amount of code a week.  I don’t have any restrictions and have the ability to experiment a lot.

2. What characteristics make a great programmer?

Characteristics and values are two different and two of the same thing.  A man named Ben Rady said it best in terms of values:

Programmers value:

  • Working software
  • Clean Code
  • Rich Communication – I think he meant here that you must be able to tak back and forth with another programmer.
  • Flexibility over efficiency
  • Sustainable Pace – Don’t over pace your self
  • Simplicity – Code needs to be as simple and as fast as possible.

I take those values to heart.  As a programmer you must have those in order to work in the field.  You don’t have to be ethical, but you need to start with those values.


Photo by Joi

As for characteristics:

I would base it off a list generated by Steve Riley, (he made the list and I will explain it a bit more.) 

  1. Be a great problem solver – If you think about it, software is solving most problems today in the world.  In either making life just plain easier or just solving a paper process.  Someone has thought about all these problems when they first started and most software made today just makes those problems just easier and faster.  This is a number one for me.  You must be good problem solver.
  2. Being Lazy and driven at the same time – When you are lazy, you want the fastest and easiest possible solutions.  When you are driven, you will get the job done no matter what.  If you combine the two, a programmer who is lazy and driven will both find the fastest and easiest possible solution and make sure he gets it done.
  3. Ability to understand other peoples code – A simple fact is, as a programmer you will be going over other peoples code in either examples you find or old code that has done the project your now upgrading.  To give you the best example of this.  Microsoft Excel 2003 and 2007 have completely different code bases.  The code is completely different.  The programmers need to read the old Excel code and generate their new code.  A simple but not very well known fact is that Microsoft programmers took Excels old code, Commented it OUT entirely and rewrote the code.  The commented out code is STILL in the 2007 source code because they always want to see how the programmers in the past did it.
  4. Have a passion for programming – Its going to be your life long job, I would hope you have a passion for it.
  5. Love learning for the sake of learning – If you don’t learn, you will NOT succeed in the programming world today.  Code, Frameworks and new languages come out every two years or so.  The programming art is still very young.  The community is still very young and in its infancy.  Its still growing up.  You have to realize this and keep up with the community.  It is a requirement.  You have to enjoy to keep learning.
  6. Being good at math – Now I don’t know the stats of how many programmers actually deal with real math, but I think its probably dwindling a bit.  A professor out of MIT said “A good Programmer has been programming for 2 years.  A Great programmer has been programming for 6 years OR has been programming for two years and has taken some algorithm classes.”  That quote explains it all.  Its about how high you want to go on the totem poll.
  7. Having good communication skills – You have to clearly express your thoughts to other people.  They don’t have to be socially inept, just make sure they can give a little straight talk.
  8. Extreme Optimism – It goes right along with problem solving.  You have to believe you can do it or you will never be able to get it done.  There are big problems at my company that I experience on a daily basis.  You have to make sure you believe you can get it done.

3.    In detail, what do you do in a typical day?

I can’t truly explain in detail, but for the few few minutes of my day, I look over any email that has been sent.  My email is somewhat the first notification if my software has failed.  So I see if any problems happened over night. I then catch up on any reading that is needed.  I don’t surf the internet, but I must spend a few hours a day researching and learning.  Due to programming being my full time job, I do require that I catch up on the recent news and try to learn something each day.  I don’t pick up a book, but I actually read a bunch of articles and code demos online till about 11am.  I have subscribed to about 50 or so blogs that I go through each day.  I can justify it by not having to pick up a programming book each day at work.  Instead I get the free stuff out on the internet. I would suggest every programmer do the same thing.  Its another reason why the IT book market is crashing terribly.  Everything is being learned now these days from demos and tutorials online.  There is no need for a book really these days.  At about 11 am after getting into work by 8am, I start to get into the mode of programming. I work on code for the rest of the day.  I think Microsoft expects their programmers to write about 200 lines of code a day.  I think I touch this and sometimes surpass it.  I code in ASP.NET and C#.  So does Microsoft.  These days, It is a known fact that Microsoft uses 98% C# and no C++ anymore.  C++ is starting to mellow out.  I go home at 6pm each day after a full days work and taking a few 5-10 minute breaks in between. I then start programming on my startup projects at home.

4.    Where does one look for programming careers?

Just throw your resume up on Career Builder and job listing sites.  If you have at least a years experience, its not hard to get a job these days. Even though the economy sucks, Technical recruiters are still seeing a double digit growth in recruiting for IT related jobs.  By the time recruiters salvage through career builder, you could probably get a few calls a month for programmers in your area.  Its still very easy to find a job as a programmer.  Look for job boards.  Most big bloggers these days have job boards.  They are a great place to start.  I must say, that if you can code and are in college or highschool still, don’t think about getting a job.  Think about creating a startup business.  Create a website and make a bit of money off of it.  Venture capitalists are looking to seed money into startups more than ever these days because of the economy.

5.    If you could go back in time to your first day on the job, what advice would you give yourself?

Don’t fret, everything will happen in time. You will learn all you need to learn and you got the job.  Now all you have to do is keep it.

6.    What are some downsides to being a programmer?

I get bored super easy at work.  There is no challenge for me.  Its all meaningless.  Its almost like getting to do busy work assigned by your teacher.  They just give It to you for you to stay busy.  Programming can be like that sometimes…

7.    What is the best thing about being a programmer and why?

This is an easy one.  If you have a big imagination, its super easy to create anything you want a computer to do.  Its one of the most gratifying things in this world.  It’s the same reason why bridge builders love to build bridges or why architects love to design.  When they see there work done and in use, its absolutely a thrill.  The programmer though has the ability to make software faster and cheap.  Bridges still need many people and could cost millions.  Software doesn’t need many.  Its very easy for a programmer to get started and have an application working and in use two months down the road.  It’s a thrill to build something and see it working.

8.    Tell me something about your self?

I got expelled out of high school for hacking.  I was the first in my high school to be caught for hacking.  It was a first for them.  When I went back the next year, I was not allowed to touch a computer at all, unless supervised.  I was surprised I got my security clearance with that on my record.  I was still underage, but at the age I got hired and the investigator to go back ten years, they could have seen that on my record.

9.    How did you acquire your job?

You know, this is an interesting topic.  My college had plenty of those college board jobs.  The job boards you get straight out of college.  Well I had a bit of technical knowledge already after working a bit in a good environment at my work study position on campus.  I went to career builder and for the next 5 weeks every weekend, I would apply for up to 75 jobs each week. After that, I got a few calls and then I nailed one.  As good as that.  The pay was low, but all I wanted was the experience to start off with and now I get calls from Microsoft that I turn down just because I don’t want to move.

By the way, for your paper, My name is Scott Pio, my domain is www.spoiledtechie.com and www.scottpio.com.  If you need more bio about me, go to spoiledtechie.com and click on the about tab.

Scott Pio


If you liked this post, please be sure to subscribe to my RSS Feed.

My Bill of Rights as a Programmer

2. April 2008 02:53 by Scott in   //  Tags: , ,   //   Comments (14)

I have seen many lists of requirements programmers wish to obtain before they start the job.  I am no different for my company.  I have my own requirements before I start a new job and I wish to create a dynamic list of my rights as a programmer.

  1. Every Programmer shall have a quiet working environment.
    • This is essential in order to think.  If the employer cannot provide a quiet working environment, see Bill of Rights #2.
  2. Every Programmer shall have the right to listen to music.
    • The essential need for a quiet working environment or to be able just throw on music to down out the background noise is essential.  We as programmers work on brain power so therefore we as programmers need to concentrate.
  3. Every Programmer shall have a fast PC.
    • Developers are required to run a lot of software that requires tons of memory and speed to get the job done faster.  The Fast PC only ensures that the programmer is able to research on the Internet while developing code and upgrading the database all at the same time while keeping up on the essential work email.
  4. Every Programmer has their choice of both Keyboard and Mouse.
    • The mouse and keyboard will only allow them to develop faster and become skilled at both shortcut keys and mouse techniques.
  5. Every Programmer shall have a fast Internet connection.
    • This is the mother of them all.  The ability to research faster is required for faster development.
  6. Every Programmer shall have two or more monitors.
    • The research done on having two monitors (here, here, here and here) far outweighs the time spent on only having one.  So even before I get offered a job, one of my first questions is will I have at least two monitors?
  7. Every Programmer shall have a high back comfortable chair.
    • This is another question I ask before going any farther with interviewing.  It not only makes the developer happier, but it helps with poster and is good for the body.
  8. Every programmer shall have access to the right tools.
    • Would you rather develop in FoxPro or Visual Studio?  Would you rather develop on Dreamweaver that Visual Studio for .net Development?  Would you rather use SQL management 2000 or use SQL Management 2005?  IT is a requirement that the company be up to date on software development.
  9. Every programmer shall have the right to have admin access on the PC.
    • There is no need for a programmer to be in restrictions of IT experience because most programmers have more experience with PC's than most IT folks.
  10. Every programmer shall be allowed to attend a developers conference once a year.
    • If companies are willing to pay 60k-100k a year for programmers, they can fork over the other 2k needed for the conference.

All things listed here are the basic needs of a programmer.  They are the movers and shakers that make companies faster with both commerce and day to day operations.  Companies are expected to follow most of the these requirements.  If you are not getting the rights you deserve, ask for more or find another place to work.

kick it on DotNetKicks.com

If you liked this post, please be sure to subscribe to my RSS Feed.