From an employer’s perspective, which would carry more weight for someone applying to your company? Why?
What type of company do you want to target post project/internship/college?
I'm not at liberty to discuss the details of the project(s) I have been offered to do at the internship, but what I can say is that I will pretty much work solo on it. They don't have any established software processes in place, so I will have free reign to choose the technology stack and build it from the ground up. I don't know if this is a good or bad thing.
For your other question about my future plans, please see my latest blog post at http://linwdav.blogspot.com/.
You could take that in one of two ways.
1) Either they're a small shop or a mid-sized but very outdated shop, seeking a hot-shot college graduate who's knowledgable of contemporary Best Practices. In these cases, it's likely they'll fast-track you to a leadership role (Lead Developer, eventually a Director if you put years into the company) if you do a great job at implementing a working software development process;
or 2) it's a sloppily run shop that will NEVER implement Best Practices over the long-term because there's too much Corporate Inertia -- too many old farts working the shop who are too stubborn to change their ways.
I'm a bit concerned for you, as the company isn't offering you any guidance, or exposing you to a Team Development situation. You'll be teaching them more than they'll be teaching you, it seems, so it looks like you're being groomed for a larger role (and fantastic opportunities) if the company is of the former classification.
If you think it's the latter classification, cut bait and RUN! It's only going to cause you grief, trust me. Not worth the effort of always butting heads, when there are other shops with better environments around.
@David. I understand you cannot reveal the details of the internship - the subject matter is what makes it interesting. If it interests you that is what matters. I do not need to know what it is.
I was more interested in your personal project. Is it something you could reasonably do over the summer while working an internship? Would you need other people or is it solo?
I concur with Lawerance, if #2, I would be leery. From your perspective, I would want to know how much support you would have or would you be on your own. Part of the internship trade is you get experience and mentoring while the employer gets reduced price labor. A solo project at a company without that may not give you what you seek.
Employers care about your subject matter expertise, but also equally important, HOW you did it. They are trying to make an educated guess on if you can do what they are asking in their company based on your history and interview.. (e.g. if you always worked alone, would you adapt well to a team-focused development environment). What we heard in the panel discussion was team skills and tool experience were hard to find on-island. Anything you can do to build that will give you an edge. You are doing the right things by asking this forum to help you with your decision.
Do both. In the latter case, pick something with an achievable scope. An alternative is to join an existing project you're interested in.
David Lin said:
They don't have any established software processes in place, so I will have free reign to choose the technology stack and build it from the ground up. I don't know if this is a good or bad thing.
Sounds to me like they are flying by the seat of their pants.. A red flag IMO. Process is the most important thing. Doing something is often fairly easy. How, why, and what to do - that's usually the challenge.
OK, Building on others comments and adding a twist.
Do Both. Try something different, then build a better mousetrap. (big long post coming up)
All of the merits of previous posters: Internships are valued as they show a potential employer that : you can follow the rules, directions, SOP's, and be part of a team environment. i know a number of people that it is impossible for them to function in an environment where they are told what to do. I have seen brilliant programmers get canned because they cause too many headaches for the management. Employers want to see that you are not going to be a headache and an internship with a positive recommendation after wards is a fairly hefty plus.
try something different :
I run a technology non profit org. We deal with the full range of IT “stuff” software development, hardware installations, networking, web based tools, Remote administration, automation, etc, etc, etc.. I can always use someone that is passionate about what they do. In fact i have been debating trying to get a programer on staff, in addition to myself. I have been designing software for 30 years and know 8 languages, and along with that some interesting tricks to get results “not the way it was intended.” We have a few new projects that i need a programmer on. we are a volunteer org at this point so i cant pay anything, but if the project works out well (which i am pretty sure it will) i know that we will need to hire a full time staff to manage the next level. Consider interning with us. Check out our projects page. (the new projects are not listed)
build a better mousetrap :
While "new technology" is nice, i don’t give it the same weight as others do. 30 years in the industry has brought me to that statement. Granted new technology can sometimes help to solve problems. But i am a firm believer that if more companies would require better quality development, and addressing customers needs, we would not need to keep reinventing the wheel every few months on how to say "Hello World !” Our world is so busy trying to invent and incorporate the latest and greatest, that we often never bother to fix the existing problems we have. “Sorry, we dropped product support as we are coming out with a new version” --- yea great.... the new version has the same bug and limitations the old one had, it just looks different that's all.
I know a number of industries that are more interested in rock stable environments that function flawlessly, than they are concerned about new technology. In fact the last industry i worked with was dead set against new changes to the system as it often breaks compatibility with other existing hardware, software, machines, transfer protocols, output, etc, etc, etc. when a single break might cost the company 20 Million dollars in legal fees or lost revenue. In those types of environments they want a better mousetrap, not a prettier mousetrap that still does not catch mice.
Whats old is new again.
1) “Cloud computing” the newest latest and greatest technology, is about 30 years old. Back in the day we used to use dumb terminals and dial in on a modem to a “time share” server someplace, with data speeds a whopping 75k a second. No one could afford a computer and therefore all of your documents, payroll, data, etc, were stored on a server someplace where you or your company had an account. “Cloud computing” is not new technology, its just more cost effective now to do it. Data is transmitted at Gigs instead of k, and you can access it through your cell phone as oppose to being anchored to a desk.
2) One of the programming languages i know, is 44 years old. It is now becoming one of the hottest “new” languages for the banking industry as well as others. 1) it is lighting fast and can process info faster than just about any other language. Remember, this was something designed on hardware that was SLOOOOOOOOWWW by our standards, and yet the language worked fast. If i remember correctly, it was 30 times faster than Cobol.. what happens you put it on some fast hardware ? It goes faster ! This LITTLE online stock trading company called “Ameritrade” dumped their “new” (utterly expensive massive) databases to switch over to this 44 year old technology because it is superior to address their needs... and they are not the only ones doing it, or making this type of move. This 44 year old technology had the characteristics of : Y2K compliant from inception, Distributed database over multiple servers, multi process, background jobs, fault tolerant replicated data, remote management, small footprint, independent processes that could run on separate servers and that could interact with each other. infinitely scalable database size limited only by the number of hard drives and servers you could manage to connect together. independent user accounts. Platform independent - it did not care what type of computer you ran it on, it worked regardless. Those are just to name a few of the features. Oh... and its open source. a rather big plus.