21.8.15

Salesforce - Hit the Ground Running


This summer I interned at Salesforce, where I worked as a fullstack developer, specifically on the service cloud. Here are my key takeaways:

1. Legacy code is a thing

  1. Good documentation is a blessing and tremendously helps speed up the process.
  2. If you got tools, use them. (Using an IDE? Take advantage of its features!)
  3. Find people, and talk!
Here's the catch: often code is orphaned and does not have an owner. It just happens - People leave the company, one file has multiple owners, a file has too general a purpose, etc. I'm glad I got to learn from doing and definitely, there's a difference between me before and me after the internship.

2. Browser compatibility is a thing
Usually, it's an old version of IE restricting what you can and cannot do. Got a fancy HTML5 feature you learned in class that you want to use? Think twice - can it be supported? Same goes for CSS and Javascript. Working at Salesforce provided a good challenge as I had to find ways to solve a complex issue with a solution that would work in all sorts of settings. You can't just ignore the 5 or so percent of users still on fossilized browsers because that translates to a whole lot of people!

3. Accessibility is a thing
Accessibility, along with browser compatibility, are topics tossed around in school but few classes actually teach. But it's something that exists, and something all developers and designers should keep in mind. How can code solve this problem? How can design solve this problem? How does one evaluate design? And actually, how can applications and future interfaces (whether on web, a touch device, or whatever the future holds) be built to be more accessible? Just like how some users use IE, some users have accessibility issues that we, as developers, can address.

4. Code debt is a thing
Unfortunately, the real world isn't like school where you can hack together a project, turn it in, and then turn over a new leaf and start anew. Everything I write must be understandable because it could be reused, reworked, or cleaned out in the future. One part of this is not having a huge magical do-everything method. Another is following existing naming convention. But also not using impressive but totally unreadable one-liners is also a thing. Leaving good comments and having simple, easy to follow code means someone in the future will be happy. I know the pain.

5. Agile development is an awesome thing!
Probably the most useful thing of it though is giving people ownership of what they're doing. Announcing it every day makes you commit to tasks. But it also lets others know what you've been toying with. I may be working with "this side" of the code mostly, but that doesn't mean I'm not interested in others! What I learn today can help greatly for future possible stories - and it helps foster a more collaborative team.

6. Specialized roles are a thing
School has trained me to take on an ace-of-all-spades sort of role just because projects are occasionally solo. This portfolio/blog is a testament to that - design, art, programming all mixed in. But often we work in teams, and members have roles. The focus then shifts to fostering good relationships with team members and communication  - but the benefits are great! For one, you're not lonely. But next, they often share a fresh point of view that helps make a better product and experience. Even I got wrapped up into "technical" stuff after working with code for so long - but a talk with the team writer helped me take a step back and look at what I created. A good team makes you think critically and not just churn out work. 

7. Taking care of yourself is a thing
Coming in with a good night's rest made a huge difference for productivity. Not having my shoulders hurt from sitting also helps. And eating well too! Sometimes you get sucked into work, but having a life outside of it actually impacts productivity! When I talk with coworkers, I don't always want to talk work because sometimes all we need is a bit of time to relax and loosen our brains a bit. I don't think all nighters, ramen dinners, and the stereotypical "college lifestyle" is something that should be sustained, especially once you're working.

I could go on, but then this immense text block would be truly terrifying. I had a great time at Salesforce because my team was very welcoming and friendly. But also because the Salesforce internship program is well run! There were challenges that I was able to overcome, and I think I've both grown as a developer and as a person as a result. I would highly recommend the company! Mahalo for making my summer awesome!

Tldr: Read the bolds and my team at Salesforce was awesome!